user版本下,我们没有权限对/proc/kmsg进行操作,只有对拥有root权限或者system组的才能对其进行操作。

这时我们只要写个简单的脚本,让其拥有root权限就行了。


例:

1、在LINUX/android/device/qcom/common/rootdir/etc新建一个目录

$mkdir x.sh


x.sh脚本内容如下:


#!/bin/bash

cat/proc/kmsg >> /storage/sdcard0/xxxxx_kernel.txt &

logcat -v time >> /storage/sdcard0/xxxxx_logcat.txt


2、然后在上层目录的Android.mk中添加x.sh的编译选项。

$vim ../Android.mk

在最底行添加下面语句:

include$(CLEAR_VARS)


LOCAL_MODULE := x.sh


LOCAL_MODULE_TAGS := optional eng


LOCAL_MODULE_CLASS:= ETC


LOCAL_SRC_FILES := etc/x.sh


LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)


include$(BUILD_PREBUILT)



3、然后在LINUX/android/device/qcom/common/common.mk添加下面一句话

INIT+= x.sh


4、最后在init进程起来时运行这个脚本,在LINUX/android/system/core/rootdir/init.rc的底行添加下面语句:

service xxx /system/bin/sh /x.sh


class core


user root


group systemroot


大功告成啦,自己制作rom烧进机子就可以抓出kernellog了!!log/storage/sdcard0/目录下,用adbpull就可以弄出来了。

*************

这是把脚本添加成service进行执行的,所以脚本必须是死循环,如果脚本关闭,service也随着关闭,后台运行的程序也关闭了.

*************


Logo

更多推荐