android 開機自動啓動某個linux應用或腳本

修改android init.rc文件後,需要將修改後的文件上傳到手機,但是發下如下問題

D:\test>adb push init.rc /
failed to copy 'init.rc' to '//init.rc': Read-only file system


解決辦法如下

D:\test>adb root
adbd is already running as root


D:\test>adb remount
remount succeeded


D:\test>adb shell
root@msm8974:/ # mount -o remount rw /
mount -o remount rw /
root@msm8974:/ # ^C
D:\test>adb push init.rc /
1507 KB/s (20059 bytes in 0.012s)


上傳成功,不過不要高興得太早,系統重新啓動後,發現init.rc有恢復成原來的,修改沒有生效,原因在於(下面的內容摘自論壇http://bbs.csdn.net/topics/390474471?page=1)

init.rc 是 rootfs 中的文件,Android 將 rootfs(initramfs) link 到 linux kernel image 中,生成正常啓動的boot.img, recovery 模式的 recovery.img.
Android 每次 reboot 的時候 bootloader 都要將 boot.img 加載到ram 中,其中一部分是真正的 linux kernel image (zImage), 另外一部分就是 initramfs (包含 init, init.rc, etc).
之後,Linux kernel 初始化的時候會把 initramfs 以 rootfs 類型 mount 到 / .


爲了android 在啓動後linux內核自動啓動某個應用或者腳本,可以修改下面的文件

device/qcom/msm8974/init.target.rc, 然後重新編譯android系統, 下載boot.img

例如要在android啓動後自動運行 powerOnOff linux程序,可以在init.target.rc添加如下代碼

service powerOnOff /system/bin/powerOnOff
    class main
    group root
    user root


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章