


Linux開機(jī)流程分析
開機(jī)不是只要按一下電源鈕而關(guān)機(jī)只要關(guān)掉電源鈕就可以了嗎?有何大學(xué)問?話是這樣沒錯(cuò)啦,但是由于 Linux 是一套多人多任務(wù)的操作系統(tǒng),你難保你在關(guān)機(jī)時(shí)沒有人在線上,如果你關(guān)機(jī)的時(shí)候碰巧一大群人在線上工作,那會(huì)讓當(dāng)時(shí)在線上工作的人馬上斷線的!那不是害死人了!一些資料可以無價(jià)之寶哩!另外,與 DOS 環(huán)境不同的是, Linux 在執(zhí)行的時(shí)候,雖然你在畫面上只會(huì)看到黑壓壓的一片,完全沒有任何畫面,但其實(shí)他是有很多的程序在背景底下執(zhí)行的,例如郵件程序、瀏覽器主機(jī)程序等,你如果隨便關(guān)機(jī)的話,是很容易傷害硬盤及數(shù)據(jù)傳輸?shù)膭?dòng)作的!所以在 Linux 下關(guān)機(jī)可是一門大學(xué)問喔
既然開機(jī)是很嚴(yán)肅的一件事,呵呵,那我們來了解一下整個(gè)開機(jī)的過程吧!好讓大家比較容易發(fā)現(xiàn)開機(jī)過程里面發(fā)生錯(cuò)誤的地方,與解決之道!不過,由于開機(jī)的過程中,那個(gè) Boot Loader 使用的軟件可能不一樣,例如 Mandrake 9.0 已經(jīng)同時(shí)提供 Lilo 與 Grub 這兩個(gè)開機(jī)管理程序,雖然 lilo 與 grub 的激活過程或許有點(diǎn)不太相同,但是他的原理則都是一樣的哩!這里我們先介紹較老牌的 Lilo 啰! Lilo 是什么?!簡(jiǎn)單的說,他是 LInux LOader 的縮寫,就是 Linux 開機(jī)時(shí)候加載的咚咚就對(duì)了!這東西可是控制了你的多重開機(jī)的命脈!底下的篇幅會(huì)再分別介紹這兩套開機(jī)管理程序!底下先開始來談?wù)?Linux 是如何開機(jī)的呢?基本的流程為:
1. 加載 BIOS 的硬件信息;
2. 讀取 MBR 的 Kernel Loader (亦即是 lilo, grub, spfdisk 等等)開機(jī)信息;
3. 加載 Kernel 的操作系統(tǒng)核心信息;
4. Kernel 執(zhí)行 init 程序并取得 run-level 信息;
5. init 執(zhí)行 /etc/rc.d/rc.sysinit 檔案;
6. 激活核心的外掛式模塊 (/etc/modules.conf);
7. init 執(zhí)行 run-level 的各個(gè)批次檔( Scripts );
8. init 執(zhí)行 /etc/rc.d/rc.local 檔案;
9. 執(zhí)行 /bin/login 程序;
10. 登入之后開始以 Shell 控管主機(jī)。
大概的流程就是上面寫的那個(gè)樣子啦,而每一個(gè)程序的內(nèi)容主要是在干嘛呢?底下就分別來談一談吧!
· 尋找 BIOS 加載硬件信息:
稍微有 PC 硬件經(jīng)驗(yàn)的人們大概都知道 BIOS ( Basic Input/Output Setup ) 的作用!他是第一個(gè)被加載計(jì)算機(jī)的資料!你主機(jī)的 CPU 資料、開機(jī)順序、硬盤大小、芯片組工作狀態(tài)、PnP 的開啟與否、內(nèi)存的時(shí)脈等等等...這都記錄在 BIOS 當(dāng)中!所以啦,開機(jī)之后,系統(tǒng)會(huì)先去找這個(gè)東西;
· 可開機(jī)硬盤的 MBR 讀取 Kernel loader:
再來呢?呵呵!當(dāng)然就是硬盤的開機(jī)資料啰!由于個(gè)人計(jì)算機(jī)的系統(tǒng)在讀完 BIOS 之后,會(huì)先去讀取第一個(gè)開機(jī)硬盤的第一個(gè)扇區(qū)(就是 master boot record, MBR 啰!),還記得這個(gè) MBR 嗎?嗄!忘記了?趕緊回到第二篇好好的再復(fù)習(xí)一遍ㄋㄟ?。而這個(gè)扇區(qū)主要就是在記錄開機(jī)的信息!還記得上面提到的 Lilo 及 grub 吧?他的紀(jì)錄就是在這里啰!所以啰,這個(gè)時(shí)候 Lilo 紀(jì)錄的信息就會(huì)被讀出來,系統(tǒng)并依 Lilo 的信息去不同的系統(tǒng)開機(jī),這也就是多重開機(jī)設(shè)定的地方啦。
好了,先再來回憶一下,如果你是以 grub 程序開機(jī)的話,那么在開機(jī)的時(shí)候會(huì)顯示什么資料呢?呵呵!會(huì)顯示蠻多的開機(jī)選單,沒錯(cuò)?就是『選單』,然后選擇了你的選擇項(xiàng)目之后,系統(tǒng)就會(huì)跑到該扇區(qū)去讀取該操作系統(tǒng)的核心啰!呵呵!所以一個(gè)好的 boot loader 會(huì)具有兩個(gè)功能,就是:
o 選單功能 ( menu )
o 指向功能 ( pointer )
那么為何要有 loader 呢?我想,我們得先來探討一下這個(gè)話題才行!要探討之前先來了解一下,曉不曉得 Windows 與 Linux 的檔案格式一不一樣?!呵呵!當(dāng)然不一樣對(duì)不對(duì),好了,那么再來說一說,請(qǐng)問,你的計(jì)算機(jī)怎么知道你的硬盤的資料是什么系統(tǒng)?哈哈!那就是 loader 的主要功能啰!在你能使用系統(tǒng)之前,一定需要加載核心對(duì)吧!?但是怎樣讓你的硬件認(rèn)識(shí)核心呢?那就是 kernel loader 的主要功能了!所以這里需要提出的是, Linux 的 loader ( lilo 或 grub ) 是可以認(rèn)識(shí) windows 的核心檔案的,但是 Windows 的 loader 卻不認(rèn)識(shí) Linux 的核心檔案,因此,作為一個(gè)多重開機(jī)的設(shè)定 loader ,就無法使用 Windows 所提供的 loader 啰!由于需要讓系統(tǒng)認(rèn)識(shí)你的 kernel ,因此,就需要 kernel loader 啦!這樣想就對(duì)啦!
· 加載核心( Kernel ):
好了,等我們?cè)?grub 的選單中選擇了 Linux 這個(gè)系統(tǒng),然后主機(jī)跑到 Linux 所在的硬盤之下,就開始將他的核心加載啰。在 Linux 的系統(tǒng)下,通常開機(jī)的核心都擺在 /boot 底下,因此,這個(gè)時(shí)候的 boot loader 就會(huì)到 /boot 去尋找相關(guān)的核心。我們的 kernel 名稱通常就是 /boot/vmlinuz-xxxx 的格式,目前 Mandrake 9.0 的核心版本為 2.4.19,而 Mandrake 自行釋出的版本為 2.4.19-16mdk ,所以,使用 uname –r 會(huì)出現(xiàn) 2.4.19-16mdk 呦!然后 MDK
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解