1. 程式人生 > >Linux的2種啟動過程

Linux的2種啟動過程

linux 啟動過程

Linux啟動過程分為2種,init方式和systeamd方式。


先說init啟動過程:

1.首先,啟動電源。

2.啟動POST(Power on self test),加電自檢程序,檢查主板硬件上有無短路等等,如果正常,會“滴”的響一聲,這是很多人熟知的開機“滴”聲。(上面那篇文章沒寫到。)

3.然後處理器會在系統存儲中找到BIOS(Basic Input Output System)。

(註:BIOS一組固化到計算機內主板上一個ROM芯片上的程序,它保存著計算機最重要的基本輸入輸出的程序、開機後自檢程序和系統自啟動程序。)

4.BIOS找到第一個引導設備。(一般是硬盤 ,裝系統的時候可能是USB可能是CD,裝過系統的童鞋知道可以進BIOS設置啟動順序。 )

5.查找硬盤的的主引導記錄MBR(Master Boot Record),磁盤的第一扇區第一磁道,並將其加載到內存中,以後的啟動過程就由MBR程序引導。前面是BIOS在引導。

(註:MBR描述了邏輯分區的信息,包含文件系統以及組織方式。此外,MBR還包含計算機在啟動的第二階段加載操作系統的可執行代碼或連接每個分區的引導記錄VBR。)

6.MBR初始化引導程序(Grub或LILO,前者居多,用Grub為例)Grub。

7.Grub程序加載內核kernel。

8.內核kernel會去查找/sbin下的init程序,並且執行該程序。init便是Linux的父進程,是所有進程的父進程,PID為1。

9.init讀取/etc/inttab,確定此次運行的級別runlevel。

10.init讀取/etc/fstab,根據文件信息掛載分區。

11.init讀取/etc/init.d,開啟對應啟動級別(第9步確認)的腳本和服務。

12.進入Shell(這是第11步啟動出來的。)

至此,開機成功!



我們再來說說systemd方式啟動:

1.前面7步與init方式相同。

8.內核kernel將加載systemd作為引導管理程序。(使用systemd還是init取決於Grub裏的配置。)

9.加載default.target,實際上default.target是指向graphical.target的軟鏈接,文件的內容是需要加載的target文件。

10.啟動multi-user.target,為多用戶設定系統環境,開起防火墻服務。

11.加載basic.target,開啟普通服務特別是圖形服務。(它通過/etc/systemd/system/basic.target.wants目錄來決定哪些服務會被啟動)

12.加載sysinit.targe,開啟重要服務,例如掛載等。

13.加載local-fs.target,來處理底層核心服務。

14.進入Shell(這是第11步啟動出來的。)

至此,開機成功!


本文出自 “sevenot” 博客,請務必保留此出處http://sevenot.blog.51cto.com/12398291/1945490

Linux的2種啟動過程