機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
LINUX引導(dǎo)過程
LINUX引導(dǎo)過程
 更新時(shí)間:2009-8-12 16:55:38  點(diǎn)擊數(shù):0
【字體: 字體顏色

LINUX引導(dǎo)過程
首先說明一下,這里講的是LINUX引導(dǎo)經(jīng)過的步驟,而不涉及KERNEL引導(dǎo)過程的內(nèi)部
細(xì)節(jié)。希望本文能對(duì)初學(xué)LINUX的朋友有所幫助。

一、從BIOS到KERNEL
計(jì)算機(jī)在接通電源之后首先由BIOS進(jìn)行自檢,即進(jìn)行所謂的POST(Power On Self 
Test),然后依據(jù)BIOS內(nèi)設(shè)置的引導(dǎo)順序從硬盤、軟盤或CDROM中讀入“引導(dǎo)塊”。
如通常BIOS中設(shè)的引導(dǎo)順序?yàn)镃在最前面,那么就把C盤(第一個(gè)IDE硬盤)的第0柱面
,第0頭的第1個(gè)扇區(qū)讀入內(nèi)存,然后跳到那里開始執(zhí)行。這個(gè)扇區(qū)有一個(gè)大家熟悉的
名字——MBR(Main Boot Record)。換句話說,MBR里面存放的是一小段程序以及分
區(qū)表的數(shù)據(jù)。在使用WIN9X和DOS時(shí),這里面放的代碼就把分區(qū)表里標(biāo)記為Active的分
區(qū)的第一個(gè)扇區(qū)(一般存放著操作系統(tǒng)的引導(dǎo)代碼)讀入內(nèi)存并跳轉(zhuǎn)到那里開始執(zhí)行。

而在用LILO引導(dǎo)LINUX時(shí),有兩種選擇:
  (1) 把LILO安裝在MBR。這時(shí)就由BIOS直接把LILO代碼調(diào)入內(nèi)存,然后跳轉(zhuǎn)執(zhí)行
LILO。即
        BIOS——>LILO(在MBR中)——>KERNEL
  (2) 把LILO安裝在LINUX分區(qū),并把LINUX分區(qū)設(shè)為Active。這時(shí),BIOS調(diào)入的是
WIN9X/DOS下的MBR代碼,然后由這段代碼來調(diào)入LILO的代碼(位于活動(dòng)分區(qū)的第一個(gè)
扇區(qū))。即
        BIOS——>MBR——>LILO(在活動(dòng)分區(qū)的第一個(gè)扇區(qū))——>KERNEL
因?yàn)樵谧x入及執(zhí)行MBR時(shí),操作系統(tǒng)還沒有起來,所以只能用BIOS提供的INT13來進(jìn)
行磁盤操作,而INT13只能讀寫硬盤1024柱面之前的數(shù)據(jù),由此可知任何操作系統(tǒng)的引
導(dǎo)代碼必須在1024柱面之前。對(duì)于LINUX來說,不管你使用方式(1)還是方式(2)啟動(dòng),
都要保證KERNEL放在1024柱面之前。只有在KERNEL起來以后,才有讀/寫1024柱面以后
數(shù)據(jù)的能力。因?yàn)長INUX不使用INT13來進(jìn)行硬盤操作。從上面我們也可以看到,不存在
什么“WIN95可以,而LINUX不可以”的問題,作為操作系統(tǒng)要能被正確引導(dǎo),在現(xiàn)有
的BIOS下,它們的引導(dǎo)部分都必須在1024柱面之前。如果操作系統(tǒng)本身還是基于INT13
來進(jìn)行磁盤操作的話,那么它也只能讀/寫1024柱面之前的數(shù)據(jù)。


二、從KERNEL到login prompt
在KERNEL起來之后,將生成第一個(gè)進(jìn)程——init,實(shí)際上是執(zhí)行了/sbin/init。ini
t的工作是根據(jù)/etc/inittab來執(zhí)行相應(yīng)的腳本進(jìn)行系統(tǒng)初始化,如設(shè)置鍵盤、字體,
裝載模塊,設(shè)置網(wǎng)絡(luò),等等。

/etc/inittab文件的每一行包括四個(gè)域:
id:runlevels:action:process
runlevel是運(yùn)行模式,通常為0-6。模式0是halt,模式6是reboot,模式1是單用戶,
模式2/3是多用戶,模式5是運(yùn)行xdm以圖形界面方式登錄。id為標(biāo)識(shí)符,通常為兩個(gè)
字母。process為需要執(zhí)行的程序或腳本。action包括有:
  (1) defaultinit —— 指定缺省的運(yùn)行模式(runlevel)
  (2) sysinit —— 指定運(yùn)行的第一個(gè)程序/腳本,此時(shí)runlevels域不起作用。
  (3) boot —— 在sysinit之后執(zhí)行,runlevels域不起作用
  (4) bootwait —— 同boot,但init會(huì)等待該命令結(jié)束
  (5) once —— 在進(jìn)入有runlevels指定的運(yùn)行模式時(shí)運(yùn)行
  (6) wait —— 同上,但init會(huì)等待該命令結(jié)束
  (7) respawn —— 在進(jìn)入相應(yīng)runlevel時(shí)執(zhí)行,并且若該進(jìn)程結(jié)束,init會(huì)再起
一個(gè)進(jìn)程執(zhí)行同樣的命令
  (8) ctrlaltdel —— 指定在用戶按下Ctrl-Alt-Del時(shí)執(zhí)行的命令

對(duì)于Redhat來說,執(zhí)行的順序?yàn)椋?br>/etc/rc.d/rc.sysinit            # 由init執(zhí)行的第一個(gè)腳本
/etc/rc.d/rc $RUNLEVEL          # $RUNLEVEL為缺省的運(yùn)行模式
/sbin/mingetty                  # 等待用戶登錄

三、/etc/rc.d/rc.sysinit及/etc/rc.d/rc
在Redhat中,/etc/rc.d/rc.sysinit主要做在各個(gè)運(yùn)行模式中相同的初始化工作,包括:
  調(diào)入keymap以及系統(tǒng)字體
  啟動(dòng)swapping
  設(shè)置主機(jī)名
  設(shè)置NIS域名
  檢查(fsck)并mount文件系統(tǒng)
  打開quota
  裝載聲卡模塊
  設(shè)置系統(tǒng)時(shí)鐘
等等。

/etc/rc.d/rc則根據(jù)其參數(shù)指定的運(yùn)行模式來執(zhí)行相應(yīng)目錄下的腳本。凡是以Kxx開
頭的,都以stop為參數(shù)來調(diào)用;凡是以Sxx開頭的,都以start為參數(shù)來調(diào)用。調(diào)用的
順序按xx從小到大來執(zhí)行。例如,假設(shè)缺省的運(yùn)行模式是3,/etc/rc.d/rc就會(huì)按上
述方式調(diào)用/etc/rc.d/rc3.d/下的腳本。
值得一提的是,Redhat中的運(yùn)行模式2、3、5都把/etc/rc.d/rc.local做為初始化腳
本中的最后一個(gè),所以用戶可以自己在這個(gè)文件中添加一些需要在其他初始化工作之
后,登錄之前執(zhí)行的命令。

四、init在等待/etc/rc.d/rc執(zhí)行完畢之后(因?yàn)樵?etc/inittab中/etc/rc.d/rc
的action是wait),將在指定的各個(gè)虛擬終端上運(yùn)行/sbin/mingetty,等待用戶的登
錄。至此,LINUX的啟動(dòng)結(jié)束。

五、對(duì)于Slackware,作為sysinit的腳本是/etc/rc.d/rc.S,運(yùn)行模式1的腳本是
/etc/rc.d/rc.K,運(yùn)行模式2、3、4、5的腳本是/etc/rc.d/rc.M。另外,裝載模塊
的命令都集中在/etc/rc.d/rc.modules中,/etc/rc.d/rc.local為登錄前執(zhí)行的最
后一個(gè)腳本。 

  • 上一篇: 巧配samba實(shí)現(xiàn)WIN2000和Linux文件共享
  • 下一篇: 自己動(dòng)手完善藍(lán)點(diǎn)Linux2.0的用戶權(quán)限
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1