一、BIOS啟動階段
在電腦開啟的瞬間,計算機會首先加載主板上的BIOS固件,這部分程序負責硬件相關的初始化工作,比如檢測內存、檢測硬盤、檢測顯卡等。同時,BIOS還會從固定位置讀取引導扇區(boot sector)的內容,將控制權交給引導扇區的程序,進入下一個階段。
二、引導加載階段
引導扇區中的程序通常是一個小型的引導加載程序(bootloader),最常見的引導加載程序是GRUB。引導程序首先會讀取配置文件/grub/grub.cfg,這個文件包含了啟動菜單和內核選項。
grub.cfg示例: menuentry 'Ubuntu' { linux /vmlinuz-4.10.0-42-generic root=/dev/sda1 ro quiet splash initrd /initrd.img-4.10.0-42-generic }
上面的示例中,menuentry定義了啟動項的名稱,linux行指定了內核文件的位置和內核啟動參數,initrd行指定了初始內存盤(initrd)文件的位置,initrd里可以包含一些加載內核所必要的模塊和設備驅動。
三、內核啟動階段
引導程序將控制權轉交給內核,內核首先會進行硬件偵測,尋找所有可用的I/O設備,初始化中斷、內存和各種驅動程序。
隨後,內核會嘗試掛載root文件系統,這個過程是通過讀取fstab文件中的內容來完成的。
fstab示例: /dev/sda1 / ext4 errors=remount-ro 0 1 /dev/sda2 none swap sw 0 0
fstab文件中定義了已有的存儲設備的掛載點。上面的實例定義了/dev/sda1作為根文件系統的掛載點,使用ext4文件系統,並啟用錯誤日誌、請求重新掛載等功能。
內核成功掛載文件系統後,會執行/sbin/init程序,這個程序是系統的初始化管理程序。
四、系統初始化階段
初始化程序會啟動各種守護進程和系統服務,比如控制台、網絡、遠程文件共享、系統日誌等。這些服務會連接到本地或者遠程的設備和網絡,並開始提供各種服務。
最後系統加載登錄管理器,等待用戶登錄。Linux系統中最常見的登錄管理器是GDM和LightDM。
當用戶輸入用戶名和密碼後,系統開始啟動用戶的會話,並加載用戶的首選項和設置。
五、總結
在Linux系統啟動時,BIOS首先會啟動並初始化硬件,然後將控制權交給引導扇區,引導程序會讀取配置文件並引導內核啟動。內核啟動後會進行硬件偵測和文件系統掛載,接着會進入系統初始化階段啟動各種服務。最後啟動登錄管理器,等待用戶登錄。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/159515.html