標籤:
在Android中使用啟動指令碼init.rc,可以在系統的初始化中進行簡單的操作。
init.rc啟動指令碼路徑:system/core/rootdir/init.rc
內容:
- Commands:命令
- Actions:動作
- Triggers:觸發條件
- Services:服務
- Options:選項
- Properties:屬性
Commands是一些基本操作。如:
mkdir /system
mkdir /data 0771 system system
mkdir /persist 0771 system system
devwait /dev/block/mmcblk0p12
mount ext3 /dev/block/mmcblk0p
Action表示一系列命令,通常在Triggers中調用,如:
on init //表示一個觸發條件
sysclktz 0
loglevel 3
# setup the global environment
export PATH /sbin:/system/sbin:/system/bin:/system/xbin
export LD_LIBRARY_PATH /system/lib
export ANDROID_BOOTLOGO 1
Services通常表示啟動一個可執行程式,Options是服務的附加內容,用於配合服務使用。
service vold /system/bin/vold //vold是服務名稱,/system/bin/vold是所對應的可執行程式。
socket vold stream 0660 root mount //socket是配合服務使用的選項
ioprio be 2
service netd /system/bin/netd
socket netd stream 0660 root system
配合服務使用的選項有socket,user,group,oneshot。
oneshot表示該服務只啟動一次,而如果沒有oneshot選項,這個可執行程式將一直存在——如果可執行程式被殺死,則會重新啟動。
Properties是系統中使用的一些值,可以進行設定和讀寫。
setprop ro.HIDDEN_APP_MEM 5120 //setprop用於設定屬性
setprop ro.CONTENT_PROVIDER_MEM 5632
setprop ro.EMPTY_APP_MEM 6144
...
on property:ro.kernel.qemu=1 //on property用於判斷屬性
start adbd
這裡的屬性在整個android系統運行中都是一致的。
init指令碼的關鍵字可以參考init進程中的system/core/init/keyword.h檔案。如:
KEYWORD(chroot, COMMAND, 1, do_chroot) //chroot是命令,do_chroot()是調用的函數,這個函數在init進程中的system/core/init/builtins.c檔案中定義。
init.rc使用方法,見說明檔案system/core/init/readme.txt
Android啟動指令碼init.rc(2)