华网,国产一级二级在线,华网资讯,国产一级二级视频,华网头条,国产一级二级三级视频,华人网络家园

設置里的自啟動是什么意思_設置中的自啟動在哪里

首頁 > 汽車 > 試駕評測 > 正文

設置里的自啟動是什么意思_設置中的自啟動在哪里

設置里的自啟動是什么意思_設置中的自啟動在哪里

最近有個項目需要在Android開機啟動之后,自動執行一個C語言編寫的程序:pengd

該程序運行時需要修改網絡ip地址及其他網絡操作,所以需要root權限

根據需求描述,我們需要做一下操作:

  1. pengd 預置到Android中的某個路徑下,比如放在 /sbin/pengd
  2. 然后修改init.rc文件,實現開機后自動運行我們的程序pengd
  3. 本次項目用到的安卓設備的init.rc和sbin下的文件重啟后會恢復默認,主要是安卓部分目錄是基于ramdisk,因此我們需要重新制作ramdisk.img,將前面2個步驟的操作同步到到ramdisk.img,然后再重新燒錄設備對應分區

假定廠家提供文件名為:ramdisk_new

修改init.rc文件,如下:

注意rc文件最后一定要有空行,否則編譯報錯!

init.rc語法見第二章 該配置文件并不是唯一寫法,具體要參考實際廠家提供的sdk中的ramdisk

直接拷貝pengd到

也可以是其他bin目錄

采用廠家提供的燒錄工具燒錄ramdisk即可,不在截圖。

可以adb shell登錄安卓設備,用以下命令查看進程是否生效:

Adnroid系統就像是是運行在linux系統上的一個“服務進程”,并不算是一個完整的操作系統。

這些服務進程是維持設備正常運轉的關鍵,而這些進程的鼻祖就是init進程。

進程ID為1,源代碼位于system/core/init 目錄。

作為Android系統的第一個進程,Init進程承擔這很多重要的初始化任務,一般Init進程的初始化可以分為兩部分,前半部分掛載文件系統,初始化屬性系統和Klog, selinux的初始化等,后半部分重要通過解析init.rc來初始化系統daemon服務進程,然后以epoll的監控屬性文件,系統信號等。

init.rc則是init進程啟動的配置腳本,這個腳本是用一種叫Android Init Language(Android初始化語言)的語言寫的。

init.rc語法官方文檔路徑:system/core/init/Readme.txt

下圖是瑞芯微sdk的改文件路徑:

一個完整的init.rc腳本由4種類型的聲明組成:

  1. Action(動作)
  2. Commands(命令)
  3. Services(服務)
  4. Options(選項)
  • 注釋以 # 開頭
  • 關鍵字和參數以空格分隔,每個語句以行為單位
  • C語言風格的 \ 轉義字符可以用來為參數添加風格
  • 字符串使用 “ ”
  • 行尾的 \ 用來表示和下面一行是同一行
  • Actions(動作)和Services(服務)就是一個新語句的開始,這個兩個后面跟著Commands(命令)或Options(選項)都屬于這個新語句
  • Actions(動作)和Services(服務)有唯一的名字,如果出現重名就會被當成錯誤忽略掉

一個動作其實就是響應某個事件的過程。

如下圖所示:當early-init這個觸發條件產生時,依次執行下面的命令1、命令2、命令3、命令4

【改文件位于system/core/rootdir/init.rc

源碼實現思想:

當相應的事件發生后,系統就會對init.rc中的各個觸發條件進行匹配,只要匹配成功就會把這個動作加到“命令執行隊列的尾部”,等待執行。如果已經存在是不會再次添加的。

命令會在條件觸發后一條一條的執行。

觸發條件解釋示例boot這是init程序啟動后觸發的第一個事件on boot<name> = <Value>當屬性name滿足特定的value時觸發on property:vold.decrypt=trigger_load_persist_propsdevice-added-<path> device-removed-<path>當設備節點添加/刪除時會觸發service-exited-<name>當指定的服務<name>存在時觸發

init.rc中常見的Commands有以下一些:

  • exec <path> [ <argument> ]創建和執行程序(<path>). 這將會阻塞init,直到程序執行完成。由于它不是內置命令,應盡量避免使用exec,它可能會引起init卡死。
  • export <name> <value>在全局環境變量中設在環境變量 <name><value>。(這將會被所有在這命令之后運行的進程所繼承)
  • ifup <interface>啟動網絡接口<interface>
  • import <filename>解析一個init配置文件,擴展當前配置。
  • hostname <name>設置主機名。
  • chdir<directory>改變工作目錄。
  • chmod <octal-mode> <path>更改文件訪問權限。
  • chown <owner> <group> <path>更改文件的所有者和組。
  • chroot <directory>改變進程的根目錄。
  • class_start <serviceclass>啟動該類service所有尚未運行的服務。
  • class_stop <serviceclass>停止所有該類正在運行的service。
  • domainname <name>設置域名。
  • enable <servicename>改變一個disable的service為enabled。一般用于service在init.rc中被標記為disabled,這樣的service是不會被啟動的,當滿足一定的觸發條件時,可以同enable命令來將他變為enabled。示例:
  • insmod <path>安裝位于<path>的模塊(PS:驅動)。
  • mkdir <path> [mode] [owner] [group]<path>創建一個目錄,(可選)使用給定的模式,所有者個組。如果沒有提供,該目錄將用755權限,所有者為root用戶,組為root。
  • mount <type> <device> <dir>[ <mountoption> ]*嘗試掛載<device><dir><device>可能有mtd@name形式,以指定名為name的mtd塊設備。<mountoption>包括 "ro", "rw", "remount", "noatime", ...
  • restorecon <path> [ <path> ]*恢復名為<path>的文件在file_contexts中配置的的安全級別。自動被init標記正確,不需要用init.rc創建的目錄。
  • restorecon_recursive <path> [ <path> ]*遞歸的恢復<path>指出的目錄樹中file_contexts配置指定的安全級別。path不要用shell可寫或app可寫的目錄,如/data/locla/temp,/data/data,或者有類似前綴的(目錄)。
  • setcon <securitycontext>設置當前進程的security context為特定的字符串。這是典型的僅用于所有進程啟動之前的early-init設置init context
  • setenforce 0|1設置SELinux系統范圍的enfoucing狀態。0 is permissive (i.e. log but do not deny), 1 is enforcing.
  • setprop <name> <value>設置系統屬性<name><value>.
  • setrlimit <resource> <cur> <max>為特定資源設置rlimit
  • setsebool <name> <value>設置SELinux的bool類型<name><value><value> may be 1|true|on or 0|false|off
  • start <service>啟動一個服務(如果服務尚未啟動)。
  • stop <service>停止服務(如果正在運行)。
  • symlink <target> <path>創建一個符號連接,at <path> with the value <target>
  • sysclktz <mins_west_of_gmt>Set the system clock base (0 if system clock ticks in GMT)
  • trigger <event>觸發一個事件。一個動作將另一動作排隊。
  • wait <path> [ <timeout> ]poll特定的<path>,出現后返回,或timeout到達。如果timeout沒有指定,默認為5秒。
  • write <path> <string>打開一個位于<path>的文件,寫入(不是追加)字符串<string>

Services其實是可執行程序,他們在特定選項的約束下會被init程序運行或者重啟。

一般格式:

其中標識符含義如下:

Option用來定義Service的行為,決定了Service將在何時啟動,如何運行等。常用的Option有包括以下一些。

  • critical這是十分關鍵的服務。如果在四分鐘內退出超過四次,手機將會重啟并進入recovery模式。
  • disabled這種類型的服務不會自動啟動。它必須明確的使用名字啟動。
  • setenv <name> <value>設置環境變量=在加載的進程中。
  • socket <name> <type> <perm> [ <user> [ <group> [ <context> ] ] ]創建一個名為/dev/socket/<name>的UNIX域socket并將fd傳遞到加載的進程中。
  • user <username>在執行該service前改變用戶名,默認為root。如果你的進程請求Linux的特殊能力,就不要用這個命令。需以進入進程仍是root->請求特權->切換到你期望的uid來替換此法。
  • group <groupname> [ <groupname> ]*在執行該service前改變組名。第一個以后的附加組名用于設定進程的附加組(通過setgroups())。當前默認是root。
  • seclabel <securitycontext>在執行服務之前改變安全級別。主要用于從rootfs執行服務,比如ueventd, adbd. 在system分區上可以用基于文件安全級別的策略定義的transition,如果沒有指定且沒有定義策略的transition,默認是init上下文。
  • oneshot退出不重啟服務(名副其實,一次性)。
  • class <name>為一service指定一個類名,所有有相同類名的service可以一同啟動或停止。如果沒有用class選項指定類名,該service屬于"default"。
  • onrestart在service重啟的時候執行。

備案號:贛ICP備2022005379號
華網(http://www.cdxdyzl.com) 版權所有未經同意不得復制或鏡像

QQ:51985809郵箱:51985809@qq.com

主站蜘蛛池模板: 联系我们-99公司开户电话-99厅 | 上海物流公司_上海冷链运输_空运_电商仓储配送电话-迈泽物流 | 免费建站_自助建站_网站建设_企业建站_中小企业建网站_免费网站模板-牵牛建站 | 江苏美鑫食品科技有限公司 | 神魔录官网 - 收藏网址的地方,也是防骗小知识分享的地方 | 西安汉信丨条码打印机,条码扫码枪,条码标签,条码仓库管理系统专业供应商 | 碳化硅脱硫喷嘴,碳化硅烧嘴套,碳化硅耐磨衬套-潍坊致达特种陶瓷有限公司 | 三原图库 - 设计图片素材打包下载sytuku.com | 陕西散花照明-西安太阳能路灯,陕西太阳能路灯,西安太阳能路灯厂家,陕西太阳能路灯厂家 | 临沂网站建设,临沂网站制作,临沂网络公司,临沂小程序开发,临沂网站设计,沂水网站建设,沂南网站建设,蒙阴网站建设,平邑网站建设,费县网站建设,兰陵网站建设,郯城网站建设,临沭网站建设,莒南网站建设,兰山网络公司 | 四合扣-工字扣-帽钉(831,200,警用,大拉力四合扣)-永嘉县鑫达钮扣有限公司 | 医用空气净化消毒机,医用床单位消毒机,无磁空气消毒机,紫外线空气消毒机厂家-南昌市扬帆环保设备有限公司 | 配重铁砂|合金钢丸|山东铁砂|济南嘉日金属制品有限公司 | 自动门、旋转门、速通门维修保养升级服务平台_门道佰分佰【官网】 | 蒸汽发生器厂家-电加热蒸汽发生器-免办证/免报批/免报检电锅炉-上海电热水锅炉-上海艾亚锅炉有限公司 | 吉林人才网_吉林招聘网_求职找工作平台 | 面馆加盟_重庆小面加盟_特色面馆加盟首选老城街 | 注塑加工,无锡塑料件加工,注塑模具加工厂家-无锡富立康精密模塑有限公司 | 每天一篇励志文章,每晚一个励志故事—励志人生网 | 排污管道疏通_长沙消防管道/暗管网漏水检测维修_长沙雨水管道疏通就找湖南鸿磊环保工程有限公司 排水PVC管-PVC排污管-给水PVC管-电线PVC管-米阳建材pvc管厂 | 河南豫冀锅炉容器制造有限公司 | 天津韬艺科技有限公司,天津网站建设公司,天津网站设计公司,品牌网站策划公司 | 陶瓷纤维模块|陶瓷纤维毯|陶瓷纤维纸|高温隔热材料|陶瓷纤维厂家-济南火龙热陶瓷有限责任公司 | 压滤机_板框压滤机_生产厂家陕西华星佳洋装备制造有限公司 | 长春互联网运营值选星广传媒,长春短视频运营,长春新媒体运营,长春互联网运营,长春抖音运营,吉林视频号代运营,吉林快手代运营,短视频推广公司,公众号运营,微博运营,新媒体运营 | 纸带过滤机,磁性分离器,排屑器-烟台通赫机床辅机有限公司 | 免费的动态思维导图软件,脑图大师,思维导图制作软件 - 万彩脑图大师官网 | 苏州探测器清洗_烟感探头清洗_感烟探测器维修清洗_火灾探测器清洗报价/价格_进口国产消防设备清洗_江苏智淼探测器清洗厂家- | 长沙物流公司|湖南货物运输公司|长沙第三方物流公司-国联物流 湖南第三方物流专家 | 智能灰熔融性测试仪,微机自动定硫仪,快速自动测硫仪-鹤壁市恒科仪器仪表有限公司 | 排污管道疏通_长沙消防管道/暗管网漏水检测维修_长沙雨水管道疏通就找湖南鸿磊环保工程有限公司 排水PVC管-PVC排污管-给水PVC管-电线PVC管-米阳建材pvc管厂 | 激光切割加工,佛山激光切割加工,钣金加工,机加工-佛山市华锐达金属制品有限公司 | 山东万通液压股份有限公司-自卸车专用油缸,能源采掘设备油缸,机械装备用油缸,油气弹簧,工程机械油缸,液压元件 | 移动破碎站-洗沙机-球磨制砂机-污泥处理-青州冠诚重工机械有限公司 | 云南破碎机-制砂机-洗砂机-振动筛-昆明昆重机械厂家 | 扭矩测试仪_拉力测试仪_扭力扳手测试仪_测试台-上海铸衡电子科技有限公司 | 长春试验机-长春凯新试验仪器_试验机研发生产 专注试验机_首页 | 系统门窗加盟_门窗十大品牌_欧享门窗官网| 天然气车船展、氢能装备展、氢燃料汽车展、核电装备展、国防信息化装备展---北京企发展览服务有限公司 | 生物除臭剂-养殖场垃圾除臭剂-垃圾填埋场除臭剂-成都微菌环境 | 郑州环球重工机械有限公司建筑垃圾处理专题网站 |