新聞中心
linux INIT代碼是操作系統(tǒng)Linux中最重要的部分之一,它是操作系統(tǒng)啟動后和用戶登錄前的過渡環(huán)節(jié),主要負責加載硬件設備驅(qū)動程序和核心模塊,加載配置文件和外部服務,以及配置和映射內(nèi)存等,是操作系統(tǒng)的正確運行的基礎。那么本文就講講linux init代碼的深入分析。

成都創(chuàng)新互聯(lián)是一家專注網(wǎng)站建設、網(wǎng)絡營銷策劃、成都小程序開發(fā)、電子商務建設、網(wǎng)絡推廣、移動互聯(lián)開發(fā)、研究、服務為一體的技術型公司。公司成立十多年以來,已經(jīng)為上千家自上料攪拌車各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務?,F(xiàn)在,服務的上千家客戶與我們一路同行,見證我們的成長;未來,我們一起分享成功的喜悅。
首先,我們來看看Linux Init代碼的框架構(gòu)成,它是由init進程驅(qū)動的,其中init進程是Linux操作系統(tǒng)中最核心的一個程序,用于啟動系統(tǒng)內(nèi)核初始化和加載外部服務,這一過程大致可分為以下3個步驟:
第一步,init進程從/etc/inittab文件加載并啟動其他進程;第二步,init進程從/etc/init.d目錄下加載用戶自定義的服務腳本;第三步,init進程從/etc/rc?.d目錄啟動系統(tǒng)的運行級別(Runlevel)服務。
其次,可以看看Linux Init代碼具體的實現(xiàn)過程:
1. init進程從/etc/inittab文件加載并啟動其他進程:
init進程實際上讀取/etc/inittab文件并解析配置參數(shù),根據(jù)配置內(nèi)容啟動其他進程。
例如:
::sysinit:/etc/rc.d/rc.sysinit
該配置行告訴init進程,當系統(tǒng)剛啟動完畢后它需要調(diào)用/etc/rc.d/rc.sysinit進行系統(tǒng)初始化。
2. init進程從/etc/init.d目錄下加載用戶自定義的服務腳本:
init進程會檢查/etc/init.d目錄下是否存在用戶自定義的服務腳本,例如Apache、SSH等,并會按照默認的規(guī)則去加載和運行對應的服務腳本來啟動相應的服務。
3. init進程從/etc/rc?.d目錄啟動系統(tǒng)的運行級別(Runlevel)服務:
init進程會從/etc/rc?.d目錄讀取運行級別(Runlevel)配置文件(rc?.d),來根據(jù)配置文件加載指定的服務。
其中,啟動運行級別服務的代碼示例如下:
# List runlevel directories
for i in /etc/rc?.d ; do
# Go through the scripts in that directory
for x in $i/S* ; do
# Split off the runlevel number
level=`echo $x | cut -b 4-`
# If it’s the one we want run it
if [ “$level” = “$RUNLEVEL” -o “$level” = “S” ]; then
# Source shell functions
. /etc/rc.d/init.d/functions
# Run the service
echo -n $”Starting $x: ”
daemon $x start
fi
done
done
最后,通過以上分析,可以總結(jié)出Linux Init代碼的執(zhí)行過程是以init進程為核心,由/etc/inittab、/etc/init.d以及/etc/rc?.d三部分組成的,其中init進程用于啟動系統(tǒng)內(nèi)核初始化和加載外部服務,/etc/inittab文件用于加載其他進程,而/etc/init.d目錄用于自定義服務腳本,最后/etc/rc?.d目錄用于啟動不同級別服務。
香港云服務器機房,創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)云服務器廠商,回大陸優(yōu)化帶寬,安全/穩(wěn)定/低延遲.創(chuàng)新互聯(lián)助力企業(yè)出海業(yè)務,提供一站式解決方案。香港服務器-免備案低延遲-雙向CN2+BGP極速互訪!
當前文章:分析LinuxInit代碼的深入分析(linuxinit代碼)
分享地址:http://fisionsoft.com.cn/article/cddoios.html


咨詢
建站咨詢
