linux啟動流程概述

來源:互聯網
上載者:User

參考:《鳥哥的linux私房菜》

1、BIOS階段

主板上的BIOS為塊flash或EEPROM程式,他會從主板上的CMOS硬體資訊,這些硬體資訊是可以通過BIOS程式修改。、、

BIOS進行啟動自我測試(Power-on self test,POST),然後開始運行硬體偵測的初始化,並配置PnP裝置,之後定義出可啟動裝置。即

根據BIOS中設定的啟動目標裝置(硬碟還是隨身碟還是光碟片),進入階段2

2、boot loader階段

讀取並回合組態的第一個啟動裝置中MBR去的的Boot loader(即grub,spfdisk等程式),由於每個檔案系統(filesystem和分割槽並不等價,參見鳥哥的linxu私房菜)第一個扇區為開機磁區(boot sector)(512bytes),而開機磁區中包含MBR(446bytes)和分割表(partition table)(64byte),由於MBR大小的限制,例如grub
的設定檔就只能放在MBR之外的地方了。

boot loader轉移控制權給kernel

3、kernel階段

核心解壓縮到主存當中,並開始測試與驅動各個周邊裝置,而不一定會使用IBISO偵測到的硬體資訊。

/boot分區的掛載是通過BIOS實現,當控制權交給boot loader,由於kernel在/boot分區中,可以直接掛載,但kernel需要動態載入核心模組(可以理解為驅動程式),而核心某塊一般在/目錄中,而/目錄的分區還沒有掛載,但此時核心是沒法識別硬碟的,這就需要虛擬檔案系統(Inital RAM Disk,initrd)來協助載入核心模組。

而虛擬檔案系統同樣是位於/boot,是透過BIOS載入的,等解壓縮到記憶體中,會類比根目錄,並提供一隻可啟動並執行程式來載入核心模組。

4、init程式階段

linux核心初始化各種硬體以後,linux計入保護模式(protected mode)載入作業系統,然後初始化各種核心資料結構像i-node和檔案表(file tables)等,這個進程PID為0

它建立init進程(PID為1),即執行/sbin/init程式(一隻可執行程式),

init的處理流程的配置在/etc/inittab檔案中(不過在Fedora15中性的啟動方式systemd啟動被使用,不再使用下面的/etc/inittab檔案,關於systemd參考這裡)

關於/etc/inittab檔案的配置參見

鳥哥的linux私房菜,該檔案配置了是否預設runlevel,以及該層級需要運行哪些程式,以及圖形終端是否開啟,tty情況等。

runlevel(來自鳥哥的linux私房菜):

  • 0 - halt (系統直接關機)
  • 1 - single user mode (單人維護模式,用在系統出問題時的維護)
  • 2 - Multi-user, without NFS (類似底下的 runlevel 3,但無 NFS 服務)
  • 3 - Full multi-user mode (完整含有網路功能的純文字模式)
  • 4 - unused (系統保留功能)
  • 5 - X11 (與 runlevel 3 類似,但載入使用 X Window)
  • 6 - reboot (重新啟動)

  • init 的處理流程

事實上 /etc/inittab 的配置也有點類似 shell script 啦,因為該檔案內容的配置也是一行一行的從上往下處理的, 因此我們可以知道 CentOS 的 init 依據 inittab 配置的處理流程會是:

  1. 先取得 runlevel 亦即預設運行等級的相關等級 (以鳥哥的測試機為例,為 5 號);
  2. 使用 /etc/rc.d/rc.sysinit 進行系統初始化
  3. 由於 runlevel 是 5 ,因此只進行『l5:5:wait:/etc/rc.d/rc 5』,其他行則略過
  4. 配置好 [ctrl]+[alt]+[del] 這組的按鍵組合功能
  5. 配置不斷電系統的 pf, pr 兩種機制;
  6. 啟動 mingetty 的六個終端機 (tty1 ~ tty6)
  7. 最終以 /etc/X11/perfdm -nodaemon 啟動圖形介面啦
這裡每個過程更進一步的細節,請參考鳥哥的linux私房菜

5、登入過程

在login提示符下,按下<Enter>,gettry進程建立一個子進程(名字是你輸入的登入名稱),提示輸入密碼並驗證。如果正確,則該子進程再建立一個子進程(它將轉變成你的登入shell);如果驗證失敗,該子進程終止,控制權重新回到getty.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.