日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android的启动脚本–init.rc

發(fā)布時間:2025/5/22 Android 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android的启动脚本–init.rc 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在 Android中使用啟動腳本init.rc可以在系統(tǒng)的初始化過程中進行一些簡單的初始化操作。這個腳本被直接安裝到目標(biāo)系統(tǒng)的根文件系統(tǒng)中,被 init可執(zhí)行程序解析。 init.rc是在init啟動后被執(zhí)行的啟動腳本。

我們可以通過修改init.rc腳本來修改啟動過程。但是,一般情況下,我們不直接修改init.rc,而是在文件init.%PRODUCT%.rc文件中添加或修改我們需要的額外的初始化配置。因為init.c中的main函數(shù)在解析完init.rc以后會繼續(xù)解析init.%PRODUCT%.rc文件。要特別強調(diào)的是,init.rc文件和init.%PRODUCT%.rc文件都是用Android Init Language語言來編寫的。

Android Init Language由四種類別的語句組成:Actions、Commands、Services、Options。

–Actions–
Actions是一系列命令的命名。Actions擁有一個觸發(fā)器(trigger)用來決定action何時執(zhí)行。當(dāng)一個action在符合觸發(fā)條件被執(zhí)行時,如果它還沒被加入到待執(zhí)行隊列中的話,則加入到隊列最后。
隊列中的action依次執(zhí)行,action中的命令也依次執(zhí)行。Init在執(zhí)行命令的中間處理其它活動(設(shè)備創(chuàng)建/銷毀,property設(shè)置,進程重啟)。
Actions表現(xiàn)形式為:
on <trigger>
<command>
<command>
<command>

–Services–
Services是由init啟動,在它們退出時重啟(可選)。Service表現(xiàn)形式為:
service <name> <pathname> [ <argument> ]*
<option>
<option>

–Options–
Options是Services的修飾,它們影響init何時、如何運行service。

critical
這是一個設(shè)備關(guān)鍵服務(wù)(device-critical service) 。如果它在4分鐘內(nèi)退出超過4次,設(shè)備將重啟并進入恢復(fù)模式。

disabled
這個服務(wù)的級別將不會自動啟動,它必須被依照服務(wù)名指定啟動才可以啟動。

setenv <name> <value>
設(shè)置已啟動的進程的環(huán)境變量<name>的值<value>。

socket <name> <type> <perm> [ <user> [ <group> ] ]
創(chuàng)建一個名為/dev/socket/<name>的unix domin socket,并傳送它的fd到已啟動的進程。<type>必須為”dgram”或”stream”。用戶和組默認(rèn)為0。

user <username>
在執(zhí)行服務(wù)前改變用戶名。當(dāng)前默認(rèn)為root。如果你的進程需要linux能力,你不能使用這個命令。你必須在還是root時請求能力,并下降到你需要的uid。

group <groupname> [ <groupname> ]*
在執(zhí)行服務(wù)前改變組。在第一個組后的組將設(shè)為進程附加組(通過setgroups())。當(dāng)前默認(rèn)為root。

oneshot
在服務(wù)退出后不重啟。

class <name>
為service指定一個類別名。同樣類名的所有的服務(wù)可以一起啟動或停止。如果沒有指定類別的服務(wù)默認(rèn)為”default”類。

onrestart
當(dāng)服務(wù)重啟時執(zhí)行一個命令。

–Triggers–
Triggers(觸發(fā)器)是一個字符串,可以用來匹配某種類型的事件并執(zhí)行一個action。

boot
這是當(dāng)init開始后執(zhí)行的第一個觸發(fā)器(當(dāng)/init.conf被加載)。

<name>=<value>
當(dāng)property <name>被設(shè)為指定的值<value>時觸發(fā)。

device-added-<path>
device-removed-<path>
當(dāng)設(shè)備節(jié)點被添加或移除時觸發(fā)。

service-exited-<name>
當(dāng)指定的服務(wù)存在時觸發(fā)。

–Commands–
exec <path> [ <argument> ]*
Fork并執(zhí)行一個程序(<path>)。這將被block直到程序執(zhí)行完畢。最好避免執(zhí)行例如內(nèi)建命令以外的程序,它可能會導(dǎo)致init被阻塞不動。

export <name> <value>
設(shè)定全局環(huán)境變量<name>的值<value>,當(dāng)這個命令執(zhí)行后所有的進程都可以取得。

ifup <interface>
使網(wǎng)絡(luò)接口<interface>聯(lián)機。

import <filename>
解析一個init配置文件,擴展當(dāng)前配置文件。

hostname <name>
設(shè)置主機名。

chmod <octal-mode> <path>
改變文件訪問權(quán)限。

chown <owner> <group> <path>
改變文件所屬和組。

class_start <serviceclass>
當(dāng)指定類別的服務(wù)沒有運行,啟動該類別所有的服務(wù)。

class_stop <serviceclass>
當(dāng)指定類別的服務(wù)正在運行,停止該類別所有的服務(wù)。

domainname <name>
設(shè)置域名。

insmod <path>
加載該路徑<path>的模塊。

mkdir <path> [mode] [owner] [group]
在<path>創(chuàng)建一個目錄,可選選項:mod、owner、group。如果沒有指定,目錄以755權(quán)限,owner為root,group為root創(chuàng)建。

mount <type> <device> <dir> [ <mountoption> ]*
嘗試mount <device>到目錄<dir>。<device>可以用格式以命名指定一個mtd塊設(shè)備。<mountoption>包含”ro”,”rw”,”remount”,”noatime”。

setkey
暫時沒有。

setprop <name> <value>
設(shè)置系統(tǒng)property <name>的值<value>。

setrlimit <resource> <cur> <max>
設(shè)置resource的rlimit。

start <service>
啟動一個沒有運行的服務(wù)。

stop <service>
停止一個正在運行的服務(wù)。

symlink <target> <path>
創(chuàng)建一個<path>的符號鏈接到<target>。

sysclktz <mins_west_of_gmt>
設(shè)置系統(tǒng)時區(qū)(GMT為0)。

trigger <event>
觸發(fā)一個事件。用于調(diào)用其它action。

write <path> <string> [ <string> ]*
打開<path>的文件并寫入一個或多個字符串。

–Properties–
Init會更新一些系統(tǒng)property以提供查看它正在干嘛。

init.action
當(dāng)前正在執(zhí)行的action,如果沒有則為”"。

init.command
被執(zhí)行的命令,如果沒有則為”"。

init.svc.<name>

轉(zhuǎn)載于:https://www.cnblogs.com/nick-zhang/p/3733641.html

總結(jié)

以上是生活随笔為你收集整理的Android的启动脚本–init.rc的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。