Linux啓動過程分爲2種,init方式和systeamd方式。ide
先說init啓動過程:spa
1.首先,啓動電源。操作系統
2.啓動POST(Power on self test),加電自檢程序,檢查主板硬件上有無短路等等,若是正常,會「滴」的響一聲,這是不少人熟知的開機「滴」聲。(上面那篇文章沒寫到。)進程
3.而後處理器會在系統存儲中找到BIOS(Basic Input Output System)。內存
(注:BIOS一組固化到計算機內主板上一個ROM芯片上的程序,它保存着計算機最重要的基本輸入輸出的程序、開機後自檢程序和系統自啓動程序。)get
4.BIOS找到第一個引導設備。(通常是硬盤 ,裝系統的時候多是USB多是CD,裝過系統的童鞋知道能夠進BIOS設置啓動順序。 )it
5.查找硬盤的的主引導記錄MBR(Master Boot Record),磁盤的第一扇區第一磁道,並將其加載到內存中,之後的啓動過程就由MBR程序引導。前面是BIOS在引導。ast
(注:MBR描述了邏輯分區的信息,包含文件系統以及組織方式。此外,MBR還包含計算機在啓動的第二階段加載操做系統的可執行代碼或鏈接每一個分區的引導記錄VBR。)class
6.MBR初始化引導程序(Grub或LILO,前者居多,用Grub爲例)Grub。test
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步啓動出來的。)
至此,開機成功!