往往需要在android啟動過程中去對系統做一些設定,如修改某些資料夾的屬主和檔案的許可權,可在init.rc中增加service執行shell指令碼,從而可在shell指令碼中完成大部分操作。
1、在system/bin/下建立乙個shell指令碼malloc.sh,以修改mtd許可權為例,內容如下:
#!/system/bin/sh
chmod 666 -r /dev/mtd/*
2、在init..board.rc中最後面增加執行上述指令碼的service
service malloc /system/bin/malloc.sh
class main
disabled
oneshot
on property:sys.boot_completed=1
start malloc
android啟動指令碼init.rc簡介
在 android中使用啟動指令碼init.rc,可以在系統的初始化過程中進行一些簡單的初始化操作。這個指令碼被直接安裝到目標系統的根檔案系統中,被 init可執行程式解析。 init.rc是在init啟動後被執行的啟動指令碼,其語法主要包含了以下內容:
commands:命令
actions: 動作
triggers:觸發條件
services:服務
options:選項
propertise:屬性
(1) commands是一些基本的操作,例如:
mkdir /sdcard 0000 system system
mkdir /system
mkdir /data 0771 system system
mkdir /cache 0770 system cache
mkdir /config 0500 root root
mkdir /sqlite_stmt_journals 01777 root root
mount tmpfs tmpfs /sqlite_stmt_journals size=4m
這些命令在init可執行程式中被解析,然後呼叫相關的函式來實現。
(2) actions(動作)表示一系列的命令,通常在triggers(觸發條件)中呼叫,動作和觸發條件的形式為:
on < trigger>
< command>
< command>
< command>
動作的使用示例如下:
on init
export path /sbin:/system/sbin:/system/bin:/system/xbin
mkdir /system
init表示乙個觸發條件,這個觸發事件發生後,進行設定環境變數和建立目錄的操作稱為乙個「動作」
(3) services(服務)通常表示啟動乙個可執行程式,options(選項)是服務的附加內容,用於配合服務使用。
service vold /system/bin/vold
socket vold stream 0660 root mount
service bootsound /system/bin/play***
user media
group audio
oneshot
vold和bootsound分別是兩個服務的名稱,/system/bin/vold和/system /bin/play***分別是他們所對應的可執行程式。
socket、user、group、oneshot就是配合服務使用的選項。其中oneshot選項表示該服務只啟動一次,而如果沒有oneshot選項,
這個可執行程式會一直存在–如果可執行程式被殺死,則會重新啟動。
(4) properties(屬性)是系統中使用的一些值,可以進行設定和讀取。
on property:ro.kernel.qemu=1
start adbd
setprop 用於設定屬性,on property可以用於判斷屬性,這裡的屬性在整個android系統執行中都是一致的。
init指令碼的關鍵字可以參考init程序的system/core/init/keyword.h檔案。
init.rc的使用方法,可以參考說明檔案system/core/init/readme.txt。
如果想要修改啟動過程只需要修改init.c(system/core/init)或者init.rc(/system/core/rootdir/)裡的內容即可。
CentOS 開機自啟動指令碼
開機時執行自己的指令碼.1.編寫自己的服務指令碼 進入系統服務指令碼目錄 cd etc rc.d init.d vi test 內容如下 bin bash chkconfig 57 75 description test service start stop see how we were call...
CentOS 開機自啟動指令碼
開機時執行自己的指令碼.1.編寫自己的服務指令碼 進入系統服務指令碼目錄 cd etc rc.d init.d vi test 內容如下 bin bash chkconfig 57 75 description test service start stop see how we were call...
CentOS 開機自啟動指令碼
開機時執行自己的指令碼.1.編寫自己的服務指令碼 進入系統服務指令碼目錄 cd etc rc.d init.d vi test 內容如下 bin bash chkconfig 57 75 description test service start stop see how we were call...