天天看點

linux系統從開機到登入之前的啟動流程

 Linux系統從開機到登入之前的啟動流程

1.開機BIOS自檢

接通電源開機,計算機會先加載BIOS資訊,因為BIOS中包含了CPU的相關資訊,裝置啟動順序資訊 ,硬碟資訊,記憶體資訊,時鐘資訊,pnp特性等等。

2.MBR引導

MBR是磁盤上第0磁道第一個扇區,即主引導記錄,它的大小是512位元組,裡面存放了預啟動資訊,分區表資訊。

系統找到BIOS所指定的磁盤的MBR後,就會将其複制到0x7c00位址所在的實體記憶體中。被複制到實體記憶體就是Boot  Loader,具體到我的電腦就是lilo或者grub

3.grub引導菜單

系統讀取記憶體中的grub配置資訊(一般為menu.lst或grub.lst),并依照此配置資訊來啟動不同的作業系統

4.加載核心kernel

根據grub設定的核心映像所在路徑,系統讀取記憶體映像,并進行解壓縮操作。系統将解壓後的核心放置在記憶體之中,并調用start_kernel()函數來啟動一系列的初始化函數和初始化各種裝置,完成linux核心環境的建立。

5.啟動init程序

核心被加載後,第一個運作的程式便是/sbin/init,該檔案會讀取/etc/inittab檔案,并依據此檔案來進行初始化工作。

其實/etc/inittab檔案最主要的作業就是設定linux的運作級别

6.讀取inittab檔案,執行rc.sysinit,rc等腳本

在設定了運作級别後,linux系統執行的第一個使用者層檔案就是/etc/rc.d/rc.sysinin腳本程式,它的工作非常多,包括設定PATH,設定網絡配置(/etc/sysconfig/network),啟動swap分區,設定/proc等等。(/etc/rc.d/rc.sysinit檔案中的腳本非常多)

7.啟動核心子產品

具體是依據/etc/modules.conf檔案或/etc/modules.d目錄下的檔案來裝載核心子產品

8.執行不同運作級别的腳本程式

根據運作級别的不同,系統會運作rc0.d到rc6.d中相應的腳本程式,來完成相應的初始化工作和啟動相應的服務

9.執行/etc/rc.d/rc.local

Rc.local就是在一切初始化工作後,linux留給使用者進行個性化的地方。

10.執行/bin/login程式,進入登入狀态

此時系統已經進入到了等待使用者輸入username和passwd的時候了,輸入帳号就可以登入了。

本文全文手打,參考了如下文章:

http://blog.chinaunix.net/uid-26495963-id-3066282.html

繼續閱讀