轉載:linux 系統開機啓動流程

一、概述

   Linux開機啓動流程主要分以下幾個步驟:

1、POST加電自檢

2、BIOS根據Boot Sequence開始進入下一步引導系統

3、MBR引導系統

4、bootloader引導系統內核

5、加載系統內核

6、init開始執行初始化工作


二、各階段描述

1、POST加電自檢

   CPU在通電後會自動查找位於主板上ROM裏的指令並執行。這段指令程序通常叫作BIOS,在這個步驟裏BIOS程序首先會對主機的硬件設備檢查,看各硬件是否完好,是否滿足整機運行的基本條件。

2、BIOS根據Boot Sequence開始進入下一步引導系統

   BIOS根據啓動順序,選擇接下來要查找的存儲介質。通常BIOS的指令默認是尋找第一啓動項物理存儲介質的0磁道0扇區。裏面存有MBR系統引導記錄,系統能否開機關鍵的一點就是MBR的引導程序。

3、MBR引導系統

   MBR通常位於磁盤的0磁道0扇區,MBR共有512個字節,前446個字節用於存儲bootloader程序,接下來的64字節用於存儲整個磁盤的分區表,剩下的2字節用於標誌磁盤使用情況。

4、bootloader引導系統內核

   BIOS查找到MBR後,最開始執行的是bootloader程序。bootloader程序通常是安裝系統時自動安裝。在Linux中bootloader引導程序以前使用的是LILO(Linux Loader),因爲LILO不能引導位於1024 Cylinder(柱面)以後的分區中的操作系統,隨着硬件的升級發展,最終被GRUB程序所取帶。GRUB(Grand Unified Bootloader)執行流程分三個步驟,1st stage、1.5 stage、2nd stage。

   1st stage,這一步的主程序存儲於MBR的bootloader中,主要的工作是配合MBR裏存儲的分區表識別磁盤基本分區信息。接着程序運行1.5 stage,此段程序位於/boot基本磁盤分區中,爲了配合第一步用於識別系統內核鏡像文件中的特殊文件系統格式。這兩步完成後,stage 2開始執行,此段程序位於/boot基本磁盤分區中,在GRUB目錄中,是GRUB的引導程序,配合grub.conf配置文件,這時系統會顯示一個系統選擇菜單。

5、加載系統內核

   用戶選擇菜單後,grub會執行initrd程序,initrd程序將內存的一部分分配爲一個分區並作爲硬盤來使用,然後把這塊分區掛載爲原始的根文件系統,開始創建設備,並訪問真正的磁盤根系統,加載內核至內存中。系統內核通常是一個一半可執行,一半壓縮的映像文件,加載後可以自解壓。接着內核會重新掛載系統根目錄,把initrd創建的設備複製至自身內存空間。

6、init開始執行初始化工作

   當內核被引導並進行初始化之後,內核就可以啓動自己的第一個用戶空間應用程序了。init會調用/etc/inittab配置文件,執行默認工作:設定默認運行級別、指定系統運行的初始腳本(/etc/rc.d/rc.sysinit)、啓動指定級別下要啓動的服務並關閉需要停止的服務、定義CtrlAltDel組合的動作、初始化終端。在這些步驟中,指定系統運行的初始腳本/etc/rc.d/rc.sysinit又有許多工作:設置主機名、打印文本歡迎信息、激活SELinux和Udev、激活swap、掛載/etc/fstab定義的本地文件系統、檢測根文件系統並對其以讀寫方式重新掛載、設置系統時鐘、裝載鍵盤映射、根據/etc/sysctl.conf設置內核參數、激活軟RAID和LVM設備、文件清理操作等。

   至此,整個系統的啓動工作基本結束。


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