Linux啓動流程

                     

第一步:加載BIOS

當打開服務器電源時,系統會先加載BIOS信息,計算機必須先找到它,並通過BIOS程序去加載CMOS的信息,再通過CMOS內的設置值取得主機的各項硬件配置,例如CPU與接口設備的通信頻率、啓動設備的查找順序等等。在此之後,計算機才知道它接下來應該去找哪個硬件設備。

 

第二步:讀取MBR

我們知道,硬盤上0磁道第一個扇區被稱爲MBR,即Master Boot Record——主引導記錄,總共佔用512字節引導程序佔前446個字節(偏移0到1BDH),接着是64個字節的DPT(分區表)最後兩個結束字節),裏面存放了預啓動信息、分區表信息。系統找到BIOS所指定的硬盤的MBR後,就會將其複製到0x7c00地址所在的物理內存中。其中被複制到物理內存的內容就是Boot Loader,而具體到你的電腦,那就是lilo或者grub了。

 

第三步:Boot Loader

Boot Loader 就是在操作系統內核運行之前運行的一段小程序。通過這段小程序,我們可以初始化硬件設備建立內存空間的映射圖,從而將系統的軟硬件環境帶到一個合適的狀態,以便爲最終調用操作系統內核做好一切準備。

其中,Boot Loader有很多種,包括grublilospfdisk等,目前用的最多的是grub。系統會讀取內存中grub的配置信息,以此來啓動不同的操作系統。因此,如鳥哥私房菜所提到的,如果要在一臺計算機上裝Windowslinux雙系統,必須先安裝Windows,因爲Windows在安裝時會主動覆蓋掉MBR以及自己所在分區的啓動扇區,而Linux可以選擇把引導程序安裝在其他分區的啓動扇區。

 

第四步:加載kernel

根據grub設定的內核映像所在路徑系統讀取內存映像並進行解壓縮操作。此時,屏幕一般會輸出“Uncompressing Linux”的提示。當解壓縮內核完成後,屏幕輸出“OK, booting the kernel”。

系統將解壓後的內核放置在內存之中,並調用start_kernel()函數來啓動一系列的初始化函數並初始化各種設備,完成Linux核心環境的建立。至此,Linux內核已經建立起來了,基於Linux的程序應該可以正常運行了。

 

第五步:調用init進程 (/sbin/init

內核被加載後,第一個運行的程序便是/sbin/init,該文件會讀取/etc/inittab文件,並依據此文件來進行初始化工作,它決定了系統去/etc/rc.d/rcN.d/中的n文件中去執行相應的啓動。

其實/etc/inittab文件最主要的作用就是設定Linux的運行等級,其設定形式是“id:5:initdefault:”,這就表明Linux需要運行在等級5上。Linux的運行等級設定如下:

0:關機

1:單用戶模式

2:無網絡支持的多用戶模式

3:有網絡支持的多用戶模式

4:保留,未使用

5:有網絡支持有X-Window支持的多用戶模式

6:重新引導系統,即重啓

 

此外,還會執行/etc/rc.d/rc.sysinit這個文件來進行系統啓動時的初始化。它是Linux系統執行的第一個用戶層文件,它做的工作非常多,包括設定PATH、設定網絡配置(/etc/sysconfig/network)、啓動swap分區、設定/proc等等。

 

第六步:執行不同運行級別的腳本程序

即由上一步中/etc/inittab文件中的默認值,啓動/etc/rc.d/rcN.d/文件下對應的腳本程序,來完成相應的初始化工作和啓動相應的服務。

 

第七步:執行/etc/rc.d/rc.local

該腳本內容如下:

#!/bin/sh

#

# This script will be executed *after* all the other init scripts.

# You can put your own initialization stuff in here if you don't

# want to do the full Sys V style init stuff.

即一切執行完畢,下面開始init用戶自己訂製的開機啓動腳本,可以把開機想做的事情寫在這個腳本中。

 

第八步:執行/bin/login程序,進入登錄狀態

這時,終於系統啓動完成,啓動login程序,等待用戶登錄。


參考博客:http://blog.chinaunix.net/uid-26495963-id-3066282.html

     http://www.ruanyifeng.com/blog/2013/08/linux_boot_process.html (包含non-login shell)

     http://blog.chinaunix.net/uid-23069658-id-3142047.html (內容更爲詳細)


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