User版本下如何抓取kernel的log

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也隨着關閉,後臺運行的程序也關閉了.

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


發佈了11 篇原創文章 · 獲贊 6 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章