在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燒進機子就可以抓出kernel的log了!!log在/storage/sdcard0/目錄下,用adbpull就可以弄出來了。
*************
這是把腳本添加成service進行執行的,所以腳本必須是死循環,如果腳本關閉,service也隨着關閉,後臺運行的程序也關閉了.
*************