Linux系統引導流程

Linux的系統引導流程如下:

1:固件firmware(CMOS-BIOS)

2:自舉程序BootLoader(主要是GRUB)

3:載入內核kernel

4:啟動進程init

5:讀取配置文件inittab

固件firmware(CMOS-BIOS)

關於固件的定義在《操作系統概念》第七版是這樣說的:“當打開電源或重啟時,計算機開始運行,它需要運行一個初始化程序。該初始化程序或引導程序(bootstrap program)比較簡單,通常位於ROM或EEPROM中,稱為計算機硬件中的固件。”也就是固化在主板上的一段程序,所以這段程序所起的作用可以理解為CMOS,而BIOS是相對用戶的操作界面,嚴格來說是CMOS-BIOS,不能只是CMOS或者BIOS,它也就類似於windows開機時不停按Delete或F10等等所進入的界面(BIOS)。至於功能我就不多說了,想必大家都清除。

關於固件要說明的是時間的問題,因為在固件上有一個時間,在軟件上也有個時間,這裡就涉及到兩個命令date和hwclock(hardware-clock)。主要針對hwclock來說,date我只是簡單說一下。

1:關於date的用法之前就說過,這裡簡單說明一下

輸入date --help,顯示如下:

Linux系統引導流程

由以上用法就可以修改時間了:

Linux系統引導流程

2. 這裡主要介紹hwclock,同樣遇到不會的命令輸入hwclock --help

Linux系統引導流程

上圖強調的地方一個是--hctosys(hardware-lcock to system-clock)意思說以硬件時間為參考設置軟件時鐘

另一個正好是相反的意思。試驗效果就不演示了。。。

自舉程序BootLoader

自舉程序有很多主要是GRUB,它的作用主要是載入內核(kernel),固件自檢沒問題後就會讀取MBR的第一個位置,所 謂的MBR要叫做主引導記錄(master boot record)位於硬盤的0柱面,0磁頭,1扇區。而BootLoader位於MBR的起始位 置大小為446byes。BootLoader的作用是載入內核,那就必須要告訴內核文件在哪個位置並加載到內存中。

由於BootLoader主要是GRUB,有個配置文件叫grub.conf,用vi查看輸入命令:vi /etc/grub.conf

Linux系統引導流程

kernel /boot/vmlinuz-2.6.32-504.el6.... 也就是說內核文件是存放在boot下的vmlinuz-2.6.32-504.el6,這裡需要說明 的是vmlinuz中的這個“z”表明這個內核文件是個壓縮文件用z來表示,但是在載入時會解壓2.6.32中的2表示主版本號,6表 示次版本號,32表示末版本號,其中比較重要的是6,如果是偶數則表示linux是正式版,奇數表示測試版。

載入內核kernel

載入內核以後,內核主要做兩件事:1:驅動硬件;2:啟動第一個進程init。 init啟動後讀取inittab文件,

執行系統缺省運行級別,從而繼續做後續引導。關於inittab配置文件後續再寫,今天就寫到這。


分享到:


相關文章: