開門見山:
1、嵌入式linux啟動第一步----Boot Loader
Boot Loader在這里我就不細說了,詳細分析起來的話有很多內(nèi)容,網(wǎng)上也有很多講解很詳細的文章。這段小程序中我們可以初始化硬件設備、建立內(nèi)存空間的映射圖,將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核做好一切準備。
2、嵌入式linux啟動第二步----加載內(nèi)核
假如你是從u-boot啟動的話,可能會有很多方式來實現(xiàn)內(nèi)核的加載。系統(tǒng)讀取內(nèi)存映像,并進行解壓縮操作,此時屏幕一般會有一些供調(diào)試用的打印信息。內(nèi)核解壓好之后,系統(tǒng)將解壓后的內(nèi)核放在內(nèi)存之中,并調(diào)用start_kernel()函數(shù)來啟動一系列的初始化函數(shù)并初始化各種設備,完成Linux核心環(huán)境的建立。至此Linux內(nèi)核已經(jīng)建立起來了,也就是說核心的任務調(diào)度、多用戶什么的功能都齊全了??赡苡腥藭栁覀冊贐oot Loader里面不是已經(jīng)初始化了硬件了么?怎么還要初始化設備。這里原因說不好,Boot Loader里面確實是初始化了一些硬件設備,但是那些初始化只是臨時的,系統(tǒng)起來之后的初始化會覆蓋掉。你可以理解為Boot Loader里面初始化算是游擊、土八路,真正系統(tǒng)起來才是正規(guī)軍。
3、嵌入式linux啟動第三步----用戶層init依據(jù)inittab文件來設定運行等級
內(nèi)核加載后,第一個運行的程序便是/sbin/init,該文件會讀取/etc/inittab文件,并依據(jù)此文件來進行初始化工作。其實/etc/inittab文件最主要的作用就是設定Linux的運行等級,其設定形式是“xxx1:xxx2:xxx3:xxx4”其中xxx1是指入口標識符,xxx2是指init所處的運行等級,xxx3是指action,描述process的運行方式,xxx4是指process。
運行等級設定如下:
0:關機
1:單用戶模式
2:無網(wǎng)絡支持的多用戶模式
3:有網(wǎng)絡支持的多用戶模式
4:保留,未使用
5:有網(wǎng)絡支持有X-Window支持的多用戶模式
6:重新引導系統(tǒng),即重啟
4、嵌入式linux啟動第四步----init進程執(zhí)行rc.sysinit
在設定了運行等級之后,Linux系統(tǒng)執(zhí)行的第一個用戶文件就是/etc/rc.d/rc.sysinit腳本程序,它做的工作非常多,包括設定PATH、設定網(wǎng)絡配置(/etc/sysconfig/network)、啟動swap分區(qū)、設定/proc等等。
5、嵌入式linux啟動第五步----啟動內(nèi)核模塊
依據(jù)/etc/modules.conf文件或/etc/modules.d目錄下的文件來裝載內(nèi)核模塊。
6、嵌入式linux啟動第六步----執(zhí)行不同運行級別的腳本程序
根據(jù)不同的級別設置,運行rc0.d到rc6.d中的相應的腳本程序,來完成相應的初始化工作和啟動相應的服務。
7、嵌入式linux啟動第七步----執(zhí)行/etc/rc.d/rc.local
這是linux留給用戶進行個性化的地方??梢园严朐O置和啟動的東西放到這里。
8、嵌入式linux啟動第八步----執(zhí)行/bin/login程序,進入登陸狀態(tài)
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請
點擊舉報。