資源描述:
《linux引導(dǎo)過(guò)程九個(gè)步驟》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、Linux引導(dǎo)過(guò)程的九個(gè)步驟【1】硬件和固件以及讀入MBRBIOS或其它固件系統(tǒng)讀取硬盤(pán)或者其它引導(dǎo)設(shè)備(例如,光盤(pán)、軟盤(pán)、網(wǎng)絡(luò)引導(dǎo)等等)上的主引導(dǎo)記錄。計(jì)算器在接通電源之后,首先由BIOS進(jìn)行自檢,即進(jìn)行所謂的POST(PowerOnSelfTest),然依據(jù)BIOS內(nèi)設(shè)置的引導(dǎo)順序從硬盤(pán)、軟盤(pán)或CDROM中讀入“引導(dǎo)塊”。例如,通常BIOS中設(shè)置的引導(dǎo)順序?yàn)榈谝粋€(gè)IDE硬盤(pán)的C分區(qū)在最前面,那就是說(shuō),計(jì)算機(jī)開(kāi)機(jī)啟動(dòng)時(shí)會(huì)把C盤(pán)的第0柱面,第0頭的第1個(gè)扇區(qū)讀入內(nèi)存,然跳到那里開(kāi)始執(zhí)行。這個(gè)扇區(qū)有一個(gè)大
2、家很熟悉的名字,它就是:MBR(MainBootRecord)。換句話(huà)說(shuō),MBR里面存放的是一小段程序以及分區(qū)表的數(shù)據(jù)。在使用WIN9X和DOS時(shí),這里面存放的代碼就會(huì)把分區(qū)表里標(biāo)記為Active的分區(qū)的第一個(gè)扇區(qū)(一般存放著操作系統(tǒng)的引導(dǎo)代碼)讀入內(nèi)存并跳轉(zhuǎn)到那里開(kāi)始執(zhí)行.【2】引導(dǎo)裝載程序運(yùn)行x86系統(tǒng)上的Linux系統(tǒng)通常使用LILO或者GRUB。某些老式系統(tǒng)可能使用loadlin通過(guò)一個(gè)中間DOS分區(qū)進(jìn)行引導(dǎo)。在PowerPC®系統(tǒng)上,這可能是BootX或者yaboot。一般來(lái)說(shuō),引導(dǎo)裝
3、載程序是一種簡(jiǎn)單的程序,它知道到哪里尋找Linux內(nèi)核,可能在幾個(gè)版本之間進(jìn)行選擇,甚至可以選擇同一計(jì)算機(jī)上的其它操作系統(tǒng)。在用LILO來(lái)引導(dǎo)LINUX時(shí),有兩種選擇:(a)BIOS->LILO(直接安裝在MBR中)->KERNEL??把LILO直接安裝在MBR,這時(shí)就由BIOS直接把LILO代碼調(diào)入內(nèi)存,然跳轉(zhuǎn)執(zhí)行LILO即可.(b)BIOS->MBR->LILO(安裝在活動(dòng)分區(qū)的第一個(gè)扇區(qū))->KERNEL??把LILO安裝在LINUX分區(qū),必須把LINUX分區(qū)設(shè)為Active.這時(shí)BIOS調(diào)入的是
4、WIN9X/DOS??下的MBR代碼,然由這段代碼來(lái)調(diào)入LILO的代碼(位于活動(dòng)分區(qū)的第一個(gè)扇區(qū)).在過(guò)去,對(duì)于能夠設(shè)置可引導(dǎo)分區(qū)的最高柱面,最大硬盤(pán)大小,在大硬盤(pán)上主分區(qū)的位置等等有許多限制。因?yàn)樵谧x入及執(zhí)行MBR時(shí),操作系統(tǒng)還沒(méi)有起來(lái),所以只能用BIOS提供的INT13來(lái)進(jìn)行磁盤(pán)操作,而INT13只能讀寫(xiě)硬盤(pán)1024柱面之前的數(shù)據(jù),由此可知任何操作系統(tǒng)的引導(dǎo)代碼都必須在1024柱面之前。對(duì)于LINUX的引導(dǎo)裝載程序來(lái)說(shuō),不管你是使用方式(a)還是方式(b)來(lái)啟動(dòng),都要保證KERNEL放在1024柱面
5、之前。但因?yàn)長(zhǎng)INUX不使用INT13來(lái)進(jìn)行硬盤(pán)操作,所以在KERNEL啟動(dòng)以后,就有讀寫(xiě)1024柱面以后數(shù)據(jù)的能力了。不過(guò),現(xiàn)在幾乎所有硬件系統(tǒng)的BIOS都得到了改進(jìn),能夠處理實(shí)際上無(wú)限大的硬盤(pán),因此現(xiàn)代的引導(dǎo)裝載程序(至少是Linux的引導(dǎo)裝載程序),對(duì)于分區(qū)大小或位置已經(jīng)沒(méi)什么限制了.【3】?jī)?nèi)核裝載并進(jìn)入保護(hù)模式當(dāng)啟動(dòng)電源之際,計(jì)算機(jī)的BIOS就會(huì)找尋有無(wú)系統(tǒng)開(kāi)機(jī)磁盤(pán),有可能使用軟盤(pán)、硬盤(pán)或者是隨身碟開(kāi)機(jī),BIOS會(huì)將bootloader載入RAM中,接者bootLoader會(huì)載入LinuxKer
6、nel,而Kernel一旦起動(dòng)后,第一件事就是切入保護(hù)模式(protectedmode),此時(shí),所有的硬件交由Kernel來(lái)控制,也意味掙脫BIOS的羈絆?!?】初始化硬件并安裝根文件系統(tǒng)當(dāng)Kernel加載完畢后,便開(kāi)始初始化系統(tǒng)所有硬設(shè)備。而當(dāng)所有的硬件初始化的動(dòng)作也告完成之際,系統(tǒng)將嘗試掛載rootpartition(根分區(qū)).所謂Rootpartition也就是將被掛上后當(dāng)作"/"的根目錄,如果無(wú)法正確掛載rootpartition,系統(tǒng)將無(wú)法運(yùn)作。在某些情況下,可能需要先裝載一個(gè)臨時(shí)ramdis
7、k映像,以便加載啟用真實(shí)根文件系統(tǒng)所需的特殊驅(qū)動(dòng)程序或模塊,例如SCSI驅(qū)動(dòng)模塊,然后再安裝真正的根文件系統(tǒng)。安裝好根檔系統(tǒng)之后,就可以開(kāi)始系統(tǒng)初始化了?!?】啟動(dòng)進(jìn)程init來(lái)初始化Linux系統(tǒng)當(dāng)rootfilesystem成功的掛載后,就會(huì)去執(zhí)行init這個(gè)程序。init會(huì)檢查/etc/inittab文檔,找出該文檔中標(biāo)明sysinit的這一行,并執(zhí)行該行指定的script.在RedhatLinux系統(tǒng)上此腳本名為/etc/rc.d/rc.sysinit,它是一個(gè)比較復(fù)雜和冗長(zhǎng)的Shell腳本(有
8、幾百行),也就是說(shuō)rc.sysinit將開(kāi)始肩負(fù)接下來(lái)的系統(tǒng)初始化大任;??而在Debian系統(tǒng)上此腳本則名為/etc/init.d/rcS,它其實(shí)是只包含一行調(diào)用命令的腳本(exec/etc/init.d/rcS);在內(nèi)核起來(lái)之后所生成第一個(gè)進(jìn)程init(/sbin/init),是所有其它Linux進(jìn)程的父進(jìn)程(PID為1).它(init)的工作就是根據(jù)/etc/inittab配置文文件來(lái)執(zhí)行相應(yīng)的腳本進(jìn)行系統(tǒng)初始化,例如設(shè)置鍵盤(pán),字體,