一、簡(jiǎn)介
tina 使用busybox init方式啟動(dòng),首先調(diào)用執(zhí)行pseudo_init(掛載文件系統(tǒng),如/proc、/tmp、/sys /etc、/usr),接著會(huì)調(diào)用/sbin/init進(jìn)程,而init進(jìn)程調(diào)用的第一個(gè)啟動(dòng)腳本為/etc/init.d/rcS。
二、平臺(tái)的自定義
不同的平臺(tái)文件系統(tǒng)具有其共性與特殊性。tina/packge/busybox-init-base-files/files下提供了所有平臺(tái)的基礎(chǔ)文件。
而在tina/target/allwinner/XXX/busybox-init-base-files下存放的是平臺(tái)特性文件,其優(yōu)先級(jí)高于前者,即當(dāng)前者目錄和后者存在有相同文件時(shí),以后者為準(zhǔn)。如有以下兩個(gè)文件:
A:tina/target/allwinner/r11-R11_pref1/busybox-init-base-files/etc/banner
B:tina/package/busybox-init-base-files/files/etc/banner
最終拷貝到文件系統(tǒng)中的為A。
三、pseudo_init與rcS
pseudo_init與rcS文件中存在很多平臺(tái)共性的代碼,避免系統(tǒng)充斥大量冗余代碼,以及方便基礎(chǔ)文件的維護(hù)和開(kāi)發(fā)。所以不允許在特定平臺(tái)下自定義pseudo_init、rcS文件(必須使用tina/packge/busybox-init-base-files/files下的pseudo_init、rcS)。
如果需要添加平臺(tái)特定配置(pseudo_init,rcS沒(méi)有配置),可將其寫(xiě)到rc.preboot,rc.final中,參考第四節(jié)。
四、rcS腳本
1.功能描述
(1)執(zhí)行/etc/init.d/rc.preboot。
為了滿足開(kāi)機(jī)快速啟動(dòng)的需求,提供了用戶可自定義rc.preboot文件,即在tina/target/allwinner/XXX/busybox-init-base-files/etc/init.d/目錄下創(chuàng)建rc.preboot腳本文件,將會(huì)被rcS最先調(diào)用執(zhí)行。
(2)配置打印級(jí)別,主機(jī)名稱。
(3)執(zhí)行/etc/init.d/rc.log,配置系統(tǒng)log信息。
系統(tǒng)默認(rèn)使用的是tina/package/busybox-init-base-files/files/etc/init.d/rc.log腳本進(jìn)行配置系統(tǒng)log信息。用戶可在tina/target/allwinner/XXX/busybox-init-base-files/etc/init.d/下創(chuàng)建rc.log,自定義rc.log。
如果需要使用默認(rèn)rc.log,需要在make menuconfig配置。
Base system --- >
busybox-init-base-files......................... Busybox init base system --- >
[*] Use the rc.log
(4)掛載UDISK。
(5)執(zhí)行/etc/init.d/rc.modules,加載內(nèi)核模塊。
系統(tǒng)默認(rèn)使用的是tina/package/busybox-init-base-files/files/etc/init.d/rc.modules腳本進(jìn)行內(nèi)核模塊自加載,用戶可在tina/target/allwinner/XXX/busybox-init-base-files/etc/init.d/下創(chuàng)建rc.modules,自定義rc.modules。
如果需要使用默認(rèn)rc.modules,需要在make menuconfig配置如下。
Base system --- >
busybox-init-base-files......................... Busybox init base system --- >
[*] Use the rc.modules
(6)啟動(dòng)/etc/rc.d下的腳本。
關(guān)于執(zhí)行rc.d下的啟動(dòng)腳本,目的為兼容procd式的應(yīng)用腳本。/etc/rc.d下的腳本是鏈接到/etc/init.d/下,默認(rèn)情況下只執(zhí)行adbd,如果需要執(zhí)行其他腳本,需要在tina/target/allwinner/XXX/busybox-init-base-files/etc/init.d/下,自定義load_script.conf文件,文件內(nèi)容中寫(xiě)上要啟動(dòng)的應(yīng)用,如adbd(注意,每一個(gè)應(yīng)用占一行)??蓞⒖迹簍ina/packge/busybox-init-base-files/files/etc/init.d/load_script.conf。
如果需要執(zhí)行rc.d下的啟動(dòng)腳本,需要在make menuconfig做如下配置。
Base system --->
busybox-init-base-files......................... Busybox init base system --->
[*] Auto load the script in /etc/rc.d
(7)ota初始化。
(8)執(zhí)行/etc/init.d/rc.final,用戶自定義啟動(dòng)腳本。
用戶可在tina/packge/busybox-init-base-files/files/etc/init.d/下創(chuàng)建一個(gè)rc.final腳本,自定義啟動(dòng)應(yīng)用程序,該腳本將會(huì)被rcS最后調(diào)用執(zhí)行。
2.rc.preboot與rc.final的區(qū)別?
rc.preboot比rc.final先運(yùn)行,在執(zhí)行rc.preboot腳本的時(shí)候,系統(tǒng)的一些初始化操作還沒(méi)完成,如掛載UDISK、內(nèi)核模塊自加載、ota等等操作。而rc.final執(zhí)行的時(shí)候,以上的初始化操作已經(jīng)完成。
五.如何寫(xiě)應(yīng)用的啟動(dòng)腳本
example:開(kāi)機(jī)自啟動(dòng)smartlinkd(tina/package/allwinner/smartlinkd/files/smartlinkd.init)
1.方法一(特定格式要求)
(1)procd式
#!/bin/sh /etc/rc.common #本質(zhì)為script腳本,以#!開(kāi)頭, 之后執(zhí)行/etc/rc.common
START=98 #開(kāi)機(jī)啟動(dòng)優(yōu)先級(jí)(序列) [數(shù)值越小, 越先啟動(dòng)]
STOP=98 #關(guān)機(jī)停止優(yōu)先級(jí)(序列) [數(shù)值越小, 越先關(guān)閉]
USE_PROCD=1
PROG=smartlinkd
start_service() { #啟動(dòng)函數(shù)
procd_open_instance
procd_set_param command $PROG -d
procd_close_instance
}
shutdown() {
echo shutdown
}
(2)Sys式
#!/bin/sh /etc/rc.common
START=98
STOP=98
PROG=smartlinkd
start() {
smartlinkd -d &
}
使用上述procd式和sys式腳本,既能兼容procd init啟動(dòng)和busybox init的啟動(dòng)方式。
另外如果使用的是busybox init的啟動(dòng)方式,還需要在load_script.conf文件中換行添加內(nèi)容:smartlinkd
2.方法二(無(wú)特定格式要求)
創(chuàng)建rc.preboot或者rc.final腳本,添加啟動(dòng)smartlinkd的內(nèi)容。
-
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
609瀏覽量
29641 -
RCS
+關(guān)注
關(guān)注
0文章
57瀏覽量
13152
發(fā)布評(píng)論請(qǐng)先 登錄
全志V853的ARM A7和RISC-V E907之間的通信

全志Tina Linux下busybox init簡(jiǎn)介
評(píng)論