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 纔會呼叫外部程序開始準備軟件運行的環境, 並且實際的加載所有系統運行所需要的軟件程序哩!最後系統就會開始等待你的登陸與操作啦! 簡單來說,系統啓動的經過可以彙整成底下的流程的:
- 加載 BIOS 的硬件資訊與進行自我測試,並依據配置取得第一個可啓動的裝置;
- 讀取並運行第一個啓動裝置內 MBR 的 boot Loader (亦即是 grub, spfdisk 等程序);
- 依據 boot loader 的配置加載 Kernel ,Kernel 會開始偵測硬件與加載驅動程序;
- 在硬件驅動成功後,Kernel 會主動呼叫 init 程序,而 init 會取得 run-level 資訊;
- init 運行 /etc/rc.d/rc.sysinit 文件來準備軟件運行的作業環境 (如網絡、時區等);
- init 運行 run-level 的各個服務之啓動 (script 方式);
- init 運行 /etc/rc.d/rc.local 文件;
- init 運行終端機模擬程序 mingetty 來啓動 login 程序,最後就等待使用者登陸啦;
大概的流程就是上面寫的那個樣子啦,你會發現 init 這個傢伙佔的比重非常重! 所以我們纔會在第十七章的 pstree 命令中談到這傢伙。 那每一個程序的內容主要是在幹嘛呢?底下就分別來談一談吧!
六、CMOS 內的主機配置:
CPU 與周邊設備的溝通時脈
啓動設備的搜尋順序
硬盤的大小與類型
系統時間
各周邊匯流排的是否啓動 Plug and Play (PnP, 即插即用設備)
各周邊設備的 I/O 位址
CPU 溝通的 IRQ 岔斷
等等