init.rc分析


1,init.rc是一個可配置的初始化文件,通常定制廠商可以配置額外的初始化配置,init.%PRODUCT%.rc

2,init.rc是在$GINGERBREAD/system/core/init/init.c中讀取的,它基於“行”,包含一些用空格隔開的關鍵字(它屬於特殊字符)

3,如果關鍵字中有空格,處理方法類似於C語言,使用/表示轉義,使用“”防止關鍵字被斷開,另外注意/在末尾表示換行

4,#開頭的表示注釋

5,init.rc包含4種狀態類別:Actions/Commands/Services/Options

6,當聲明一個service或者action的時候,它將隱式聲明一個section,它之后跟隨的command或者option都將屬於這個section

7,action和service不能重名,否則忽略為error

8,actions就是在某種條件下觸發一系列的命令,通常有一個trigger,形式如:  

on <trigger>

      <command>

      <command>

9,service結構如下:

service <name> <pathname> [ <argument> ]*

   <option>

   <option>

10,option是service的修飾詞,主要包括:

     critical  

   表示如果服務在4分鍾內存在多於4次,則系統重啟到recovery mode

     disabled  

   表示服務不會自動啟動,需要手動調用名字啟動

     setEnv <name> <value>  

   設置啟動環境變量

     socket <name> <type> <permission> [<user> [<group>]] 

   開啟一個unix域的socket,名字為/dev/socket/<name> , <type>只能是dgram或者stream,<user>和<group>默認為0

     user <username> 

   表示將用戶切換為<username>,用戶名已經定義好了,只能是system/root

     group <groupname> 

   表示將組切換為<groupname>

     oneshot 

   表示這個service只啟動一次

     class <name> 

   指定一個要啟動的類,這個類中如果有多個service,將會被同時啟動。默認的class將會是“default”

     onrestart 

在重啟時執行一條命令

11,trigger主要包括:

     boot 

   當/init.conf加載完畢時

     <name>=<value> 

   當<name>被設置為<value>時

     device-added-<path> 

   設備<path>被添加時

     device-removed-<path> 

   設備<path>被移除時

     service-exited-<name> 

   服務<name>退出時

12,命令主要包括:

     exec <path> [ <argument> ]*

   執行一個<path>指定的程序

    export <name> <value>

   設置一個全局變量

 

     ifup <interface>

   使網絡接口<interface>連接

 

     import <filename>

   引入其他的配置文件

 

     hostname <name>

   設置主機名

 

     chdir <directory>

   切換工作目錄

 

     chmod <octal-mode> <path>

   設置訪問權限

 

     chown <owner> <group> <path>

   設置用戶和組

 

     chroot <directory>

  設置根目錄

 

     class_start <serviceclass>

   啟動類中的service

 

     class_stop <serviceclass>

   停止類中的service

 

     domainname <name>

   設置域名

 

     insmod <path>

   安裝模塊

 

     mkdir <path> [mode] [owner] [group]

   創建一個目錄,並可以指定權限,用戶和組

 

     mount <type> <device> <dir> [ <mountoption> ]*

   加載指定設備到目錄下

   <mountoption> 包括"ro", "rw", "remount", "noatime"

 

     setprop <name> <value>

   設置系統屬性

 

     setrlimit <resource> <cur> <max>

   設置資源訪問權限

 

     start <service>

   開啟服務

 

     stop <service>

   停止服務

 

     symlink <target> <path>

   創建一個動態鏈接

 

     sysclktz <mins_west_of_gmt>

   設置系統時鍾

 

     trigger <event>

   觸發事件

 

     write <path> <string> [ <string> ]*

   向<path>路徑的文件寫入多個<string>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM