国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

LINUX引導過程

2024-07-26 00:31:39
字體:
來源:轉載
供稿:網友
linux引導過程
首先說明一下,這里講的是LINUX引導經過的步驟,而不涉及KERNEL引導過程的內部
細節。希望本文能對初學LINUX的朋友有所幫助。

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

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


二、從KERNEL到login PRompt
在KERNEL起來之后,將生成第一個進程——init,實際上是執行了/sbin/init。ini
t的工作是根據/etc/inittab來執行相應的腳本進行系統初始化,如設置鍵盤、字體,
裝載模塊,設置網絡,等等。

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

對于Redhat來說,執行的順序為:
/etc/rc.d/rc.sysinit            # 由init執行的第一個腳本
/etc/rc.d/rc $RUNLEVEL          # $RUNLEVEL為缺省的運行模式
/sbin/mingetty                  # 等待用戶登錄

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

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

四、init在等待/etc/rc.d/rc執行完畢之后(因為在/etc/inittab中/etc/rc.d/rc
的action是wait),將在指定的各個虛擬終端上運行/sbin/mingetty,等待用戶的登
錄。至此,LINUX的啟動結束。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大洼县| 定兴县| 龙门县| 乌鲁木齐县| 长子县| 孙吴县| 泽普县| 平顺县| 松滋市| 乐昌市| 信阳市| 分宜县| 邹平县| 桃源县| 利川市| 冀州市| 潼关县| 班玛县| 巫溪县| 永兴县| 黔西| 岑溪市| 隆尧县| 张家港市| 嘉义市| 义乌市| 临泽县| 含山县| 九寨沟县| 彩票| 北宁市| 磐石市| 永清县| 华阴市| 咸丰县| 新沂市| 甘孜| 乳山市| 台中县| 葫芦岛市| 沛县|