歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux系統啟動流程學習筆記

Linux系統啟動流程學習筆記

日期:2017/2/28 14:51:54   编辑:Linux教程

前言

今天很天真的寫了個openvpn的開機啟動腳本,以為添加到/etc/rc.local就萬事大吉了,結果肯定是失敗的,因此這裡記錄一下我學習linux啟動流程的過程!

系統啟動流程

加載BOIS的硬件資訊與進行自我測試,並依據配置取得第一個可啟動的裝置

在個人計算機架構下,你想要啟動整部系統首先就得讓系統去加載BIOS(Basic Input Output System),並透過BIOS程序去加載CMOS資訊,並且藉由CMOS內的配置值取得主機的各項硬件配置。 在取得這些資訊後,BIOS還會進行啟動自我測試(power-on self test,POST)。然後開始運行硬件偵測的初始化,並配置PnP裝置,之後再定義出可啟動的裝置順序,接下來就會開始進行啟動裝置的數據都去了。 由於我們的系統軟件大多放置在硬盤中,所以BIOS會指定啟動的裝置好讓我們可以讀取磁碟中的操作系統核心文件。我們需要一個啟動管理程序來處理文件加載的問題,因此這個啟動管理程序就被成為Boot Loader.

讀取並運行第一個啟動裝置內MBR的boot loader

loader的主要功能是認識操作系統的文件格式並據以加載核心到主內存中去運行。 boot loader主要功能:
  • 提供菜單:使用者可以選擇不同的啟動項目,這也是多重啟動的重要功能(支持雙系統或者多系統)
  • 加載核心文件:直接指向可啟動的程序區段來開始操作系統
  • 轉交其他loader:將啟動管理功能轉交給其他的loader負責
吐嘈一下windows:windows的loader不具備控制權轉交功能,因此安裝雙系統時只能先裝windows再裝linux了,微軟是不是有些霸道和蛋疼!

依據boot loader的配置加載kernel,kernel會開始偵測硬件和加載驅動程序

boot loader的管理而開始讀取核心文件後,接下來,linux就會將核心解壓到主內存當中,並且利用核心的功能,開始測試與驅動各個周邊裝置,包括儲存裝置、cpu、網絡卡、聲卡等等。此時linux核心會以自己的功能重新偵測一次硬件,也就是說核心此時開始接管BIOS後的工作。

在硬件驅動成功後,kernel會主動呼叫init程序,而init會取得run-level咨詢

在核心加載完畢、進行硬件偵測與驅動程序加載後,此時你的主機硬件應該是已經准備就緒了,此時核心會主動呼叫第一支程序,就是/sbin/init。查看init的pid為1./sbin/init最主要的功能是准備軟件運行環境,包括系統的主機名稱,網絡配置,語系處理、文件系統格式及其他服務的啟動。而所有的動作都會透過init的配置檔,亦即是/etc/inittab來規劃,而inittab內還有一個很重要的配置項目,那就是默認的runlevel(啟動運行等級)。

run level等級:

  • 0 - halt(系統直接關機)
  • 1 - single user mode(單人維護模式,用在系統出問題時的維護)
  • 2 - mulit-user (類似於runlevel 3,但無nfs服務)
  • 3 - full multi-user mode(完整含有網絡功能的純文字模式)
  • 4 - unused(系統保留功能)
  • 5 - X11(與runlevel 3類似,但加載使用 x window)
  • 6 - reboot(重新啟動)
Copyright © Linux教程網 All Rights Reserved