歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux開機流程以及運行級別

Linux開機流程以及運行級別

日期:2017/2/28 14:24:29   编辑:Linux教程

Linux開機流程

一、概念
1、boot loader: 領導裝載程序,常用的有(Grub, spfdisk)

2、Grub: 是一個多操作系統啟動管理器,開機時領導不同系統,windows linux等

二、開機的流程
1、加載BIOS(basic input output system)的硬件信息,並進行自我測試

2、讀取並執行第一個開機裝置內MBR(主引導記錄扇區)的boot loader即grub spfdisk 等程序!

3、 grub(boot loader)就是一個多操作系統啟動管理器,運行之後就是選擇系統(boot loader --grup的功能之後在講)

4、依據 boot loader 的設定加載kernel(也就是在第3步這裡選擇的系統的內核),加載進來的kernel在存儲器中解壓並執行,偵測硬件信息加載驅動程序

5、硬件驅動成功之後,kernel會主動呼叫第一個用戶級的程序,init, init 會取得運行級別(runlevel) 的信息(run level 信息保存在 /etc/inittab檔案中)

6、init 執行 /etc/rc.d/rc.sysinit 檔案 來准備軟件執行的環境(如 網絡 ,時區等信息)具體信息可以 vim /etc/rc.d/rc.sysinit 去查看

7、init 執行 run-level 的各個服務即啟動和這個run-level 對應的服務

8、 執行 /etc/rc.d/rc.local 檔案 (這是使用者自訂開機啟動程序,把需要開機自動運行的程序寫在這個腳本裡)


9、 init 執行終端機仿真程序 mingtty 來啟動 login 程序,最後等待用戶登錄

三、Bios(basic input output system)的作用
1、Bios它是一組固化到計算機內主板上一個Rom(read only memory) 芯片上的程序,它保存著計算機最重要的基本輸入輸出的程序、系統設置信息、開機後自檢程序和系統自啟動程序,他裡面的程序是被廠家燒錄進去的,所以只能讀不能改

2、Cmos是微機主板上的一塊可讀寫的RAM芯片,主要用來保存當前系統的硬件配置和操作人員對某些參數的設置.

3、透過bios 程序去加載cmos 的信息,並且藉由cmos內的設定值取得主機各硬件配置信息,如cup ,接口設備的溝通頻率開機裝置的順序,各個接口設備的I/O地址等.

4、獲取這些信息之後,Bios 還會進行開機自我測試,然後開始執行硬件偵測的初始化,並設定pnp裝置,之後再定義出開機的裝置順序,接下來就會開始進行開機裝置的數據讀取(MBR相關任務開始) (MBR master boot record 主引導區)


5、由於系統軟件大多都被放在硬盤上,所以Bios 會制定開機的裝置好讓我們可以讀取磁盤中的操作系統核心檔案。

6、由於不同操作系統的文件系統格式不同,因此我們必須要以一個開機管理程序來處理核心檔案加載的問題,因此這個開機管理程序就被稱為 boot loader !

7、這個boot loader 就安裝在第一個扇區(sector)內,也就是我們說的MBR( master boot record 住引導記錄區)

8、每種操作系統的 boot loader 都不同,這樣的話Bios怎麼讀取 MBR中的內的boot loader那?

9、其實 BIOS是通過硬件的INT13中斷功能來讀取 MBR 中的內容,也就是說只要BIOS在硬件偵測的時候如果能夠偵測到你的磁盤(不管是sata 還是ide接口)那就有辦法透過INT 13 這條信道來讀取該磁盤的第一個扇區你的MBR中的內容,這樣的話 boot loader 也就能夠被執行了!

四、Boot loader (引導裝載程序)
1、Boot loader 的最主要功能就是要認識操作系統的文件格式,並加載選定的系統核心到住住存儲器中去執行。

2、由於每一種操作系統的文件格式不同,所以每種操作系統都有自己的boot loader


3、這樣的話,當在一台機器上裝多個操作系統怎麼辦因為MBR只有一個,而每種操作系統都有自己的boot loader ,其實每個filesystem 或主分割槽都會留Boot sector(引導扇區),來安裝自己的boot loader 所以可以安裝多系統的問題也就解決了

4、boot loader 的主要功能:

(1)、提供選單: 用戶可以選擇自己的開機項目,這也就是多重引導的重要功能。

(2)、載入核心檔案: 直接指向可開機的程序區段,開始操作系統。

(3)、轉交其他的boot loader : 將開機管理功能轉交給其他的boot loader 負責。

** 由於具有選單功能因此我們可以選擇不同的核心來開機

** 由於具有控制權轉交的功能,因此我們可以加載其他boot sector 內的 boot loader !

5、當boot loader 的管理開始讀取核心檔案後,接下來Linux 就會將核心解壓縮到主存儲器中,並且利用核心的功能,開始測試與驅動各個周邊的裝置 如存儲裝置, cpu, 網卡,聲卡等。此時linux 核心會以自己的功能重新偵測硬件信息,而不一定會使用BIOS偵測到的信息,也就是說此時開始 加載進來的Linux 核心 接管了 BIOS的工作!

6、到此內存中已經加載了 kernel 並使用kernel 的功能來偵測硬件以及嘗試掛在根目錄取得額外的驅動程序,但是現在的內核不認識磁盤,沒辦法掛在根目錄,所以也就沒法讀取 /lib.modules/內的驅動

7、內核不認識磁盤,那如何掛在跟目錄,如何加載驅動,那就得借助 虛擬文件系統(也叫臨時文件系統 initrd)來解決

8、虛擬文件系統的特色是,他能夠通過 boot loader 加載到內存中, 然後這個檔案會被解壓並在內存中仿真成為一個根目錄,且此仿真目錄能夠提供一支可執行的程序,透過這個程序來加載開機過程中所需要的模塊,而通常這些模塊就是 USB RAID SCSI 等文件系統與磁盤接口的驅動程序,等這些程序載入完畢後 會幫助核心重新呼叫 /sbin/init 來開始後續的正常開機流程。

9、到此kernel 加載了需要的驅動程序,因為有了驅動可以找到磁盤,所以就掛載了 根目錄文件系統,並釋放這個虛擬文件系統。

10、核心主動加載第一個用戶級程序 /sbin/init

五、第一個用戶級程序init ,及配置文件 /etc/inittab 以及運行等級 run level

1、在核心加載完畢,進行硬件信息這測與驅動程序加載之後,此時你的主機硬件應該已經准備就緒了,此時核心會主動的呼叫第一個用戶級程序,那就是 /sbin/init (init 被稱為所有進行的祖進程,也是第一個啟動的用戶級進程)

2、 /sbin/ init 最主要的功能就是准備軟件執行的環境,包括系統的主機名,網絡設定,語系設置,系統文件格式及其他服務的啟動, 而所有的動作都會透過 init 的配置文件及 /etc/inittab 來規劃。

3、 /etc/inittab 中配置了系統的運行級別 , 這個檔案的最下面 有 id : n : initdefault 這就是設置的系統運行級別

4、為何要設置系統的運行級別,這個有什麼不同: linux藉由 設定的 run level 來規劃,系統使用不同的服務來啟動,讓linux 的使用環境不同,按照有無網絡與有無 xwindow可分為 7 個等級

5、 run level 運行級別

(0)、run level 0: 關機


(1) 、run level 1 : single mode 即單人維護模式,一般忘記 root的密碼,系統有問題什麼的使用這個模式

(2)、run level 2 : without NFS 即無NFS系統

(3)、run level 3: 完整含有網絡功能的純文本模式

(4)、run level 4: 系統保留

(5)、run level 5: xwinods 與3 是類似的只是純文本變為窗口模式

(6)、run level 6: 重啟 reboot


6、啟動時執行一次的文件, /etc/rc.d/rc.sysinit 即系統的數據設定完成!

7、啟動系統 服務與 啟動配置文件 /etc/rc,d/rc n(你的系統級別,按照不同的級別啟動不同的服務) /etc/sysconfig

8、加載核心讓整個系統准備接受指令來工作,在經過 /etc/rc.d/rc.sysinit 的系統模塊與相關硬件信息的初始化,你的系統應該已經順利工作了!

六、運行級別的切換
1、事實上不同的運行級別 只是加載的服務不同,,這裡已 run level 3 和 run level 5 為列: 只是他們的 /etc/rc.3d 和 /etc/rc.5d 內的Sxxname 和 Kxxname 不同而已

2、先對比 /etc/rc.3d 和 /etc/rc.5d 內k 和 s開頭的檔案

3、在新的 run level 內多的 K 都被關閉掉

4、在新的 run level 內多的S 都被開啟,而都存在的就不用管了。

ok 這樣運行級別就轉化過來了!

Copyright © Linux教程網 All Rights Reserved