Linux系統啓動流程詳解(BIOS—MBR—GRUB--Kernel—init—run

BIOS:Basic Input Output System;

BIOS加載CMOS,並藉助CMOS 內的配置值取得主機的各項硬件配置

BIOS 再進行啓動自我測試 (Power-on Self Test, POST),然後開始運行硬件偵測的初始化,

並配置 PnP 設備,

之後再定義出可啓動的設備順序,

接下來就會開始進行啓動設備的數據讀取了 (MBR 相關的任務開始)。

一、GRUB:Boot Loader(啓動 載入或管理程序) 分類

1.LILO(早期使用的)

2.grub(目前使用的)

3.spfdisk(目前有一部分人使用的)

 

二、Kernel文件

/boot/vmlinuz    內核文件

/boot/initramfs   內核模塊(驅動程序模塊)(/lib/modules/ 目錄內)

 

顯示內核啓動信息命令:dmesg

 

三、init&runlevel

是系統運行的第一個進程

/etc/inittab    #init&runlevel文件及位置

runlevel:

0   halt(關機)

1   Single User Mode(單用戶模式,此模式下可以恢復root密碼)

2   Multi User Without NFS(不帶網絡的多用戶模式)

3   命令行多用戶模式

4   Unused(未使用,系統保留)

5   X11圖形界面模式(與runlevel 3類似,只是多加載了一項X Window)

6   Reboot(重啓)

 

顯示當前及上一個運行級別的命令:runlevel

修改當前運行級別:init 3

單用戶模式下可以恢復root密碼

五、總結(轉之於鳥哥)

當你按下電源按鍵後計算機硬件會主動的讀取 主板中的BIOS 來加載硬件資訊及進行硬件系統的自我測試, 之後系統會主動的去讀取第一個可啓動的裝置 (由 BIOS 配置的,如硬盤、光驅、usb flash disk、) ,此時就可以讀入啓動管理程序了(grub)。

啓動管理程序可以指定使用哪個核心文件來啓動,並實際加載核心到內存當中解壓縮與運行, 此時核心就能夠開始在內存內活動,並偵測所有硬件資訊與加載適當的驅動程序來使整部主機開始運行, 等到核心偵測硬件與加載驅動程序完畢後,一個最陽春的操作系統就開始在你的 PC 上面跑了。

主機系統開始運行後,此時 Linux 纔會呼叫外部程序開始準備軟件運行的環境, 並且實際的加載所有系統運行所需要的軟件程序哩!最後系統就會開始等待你的登陸與操作啦! 簡單來說,系統啓動的經過可以彙整成底下的流程的:

  1. 加載 BIOS 的硬件資訊與進行自我測試,並依據配置取得第一個可啓動的裝置;
  2. 讀取並運行第一個啓動裝置內 MBR 的 boot Loader (亦即是 grub, spfdisk 等程序);
  3. 依據 boot loader 的配置加載 Kernel ,Kernel 會開始偵測硬件與加載驅動程序;
  4. 在硬件驅動成功後,Kernel 會主動呼叫 init 程序,而 init 會取得 run-level 資訊;
  5. init 運行 /etc/rc.d/rc.sysinit 文件來準備軟件運行的作業環境 (如網絡、時區等);
  6. init 運行 run-level 的各個服務之啓動 (script 方式);
  7. init 運行 /etc/rc.d/rc.local 文件;
  8. init 運行終端機模擬程序 mingetty 來啓動 login 程序,最後就等待使用者登陸啦;

大概的流程就是上面寫的那個樣子啦,你會發現 init 這個傢伙佔的比重非常重! 所以我們纔會在第十七章的 pstree 命令中談到這傢伙。 那每一個程序的內容主要是在幹嘛呢?底下就分別來談一談吧!

六、CMOS 內的主機配置:

CPU 與周邊設備的溝通時脈

啓動設備的搜尋順序

硬盤的大小與類型

系統時間

各周邊匯流排的是否啓動 Plug and Play (PnP, 即插即用設備)

各周邊設備的 I/O 位址

CPU 溝通的 IRQ 岔斷

等等

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章