centos6啟動流程詳解
當我們在平常的工作學習的環境中使用linux時,我們只需要按一下開機鍵,系統就會自動為我們加
載好相關配置,然後為我們打開操作界面,那麽在這個過程中究竟都發生了什麽,如果系統突然起不來
了,那麽到底是啟動時的哪一部分發生了錯誤呢,下面,我們就來看看linux中的centos6啟動的具體流
程。
centos6啟動流程大致分為以下這些步驟:
1.加電自檢,得到BIOS的硬件信息,獲取第一個啟動設備
2.讀取第一個啟動設備MBR的引導加載程序(grub)的啟動信息
3.加載核心操作系統的核心信息,核心開始解壓縮,並嘗試驅動所有的硬件設備
4.運行init程序
5.運行系統初始化腳本 /etc/rc.d/rc.sysinit
6.啟動核心的外掛模塊
7.init執行運行各個批處理文件
8.init執行/etc/rc.d/rc.local
9.執行/bin/login程序,等待用戶登錄
10.登陸之後,打印登陸提示符,並開始shell控制主機
下面我們來分別解釋下每一步的具體細節
1.加電自檢
當我們按下電源鍵後,rom芯片中的CMOS程序開始執行並檢測CPU,內存等設備是否存在並正常運
行,CMOS中的程序叫做BIOS,可以設置硬盤接口,網卡聲卡開關之類的簡單設置。一般PC主機板上會有
一個紐扣電池,它的主要作用就是給BIOS供電,當系統由於突然停電或者其其他原因意外斷電的時候,
這個紐扣電池可以保證主板在斷電後BIOS的一些基本設置不會被重置。
2.讀取MBR的啟動信息
計算機不是人類,他的所有操作都是認為的事先設定好的,所以當啟動計算機的時候,它並不知道
系統放在哪裏,我們需要告訴它,怎麽告訴它呢,就是用程序引導它,這個程序叫做bootloader,不同
的操作系統的bootloader是不同的,windos使用的bootloader是ntloader,只能對windos系統進行引
導,而在linux中的bootloader叫做GRUB,它不僅可以對linux進行引導,也可以對windos進行引導,所
以在裝windos和linux雙系統的電腦的時候,要先裝windos再裝linux。
MBR記錄一般在磁盤0磁道1扇區,一共512個字節,前446個字節是Bootloder,後64個字節是存放
分區信息的,一共四個分區,每個分區占用16個字節,最後兩個字節是分區結束信息,一般是55AA.
所以,當加點自檢完成後,會啟動bootloader也就是grub程序,他會引導計算機到磁盤的第一個扇
區並加載MBR記錄,然後按照MBR記錄啟動系統。
3.加載核心信息,嘗試驅動所有的硬件設備
當加載完MBR的啟動信息後,系統會進行自身初始化,首先它會偵測所有可識別到的
硬件設備,然後會借助於ramdisk加載硬件驅動程序,接著以只讀方式掛載根文件系統,最
後運行用戶空間的第一個程序/sbin/init。那麽,什麽是ramdisk呢?
ramdisk是內核中的特性之一,它使用緩沖和緩沖加速來對硬盤上的文件進行訪問,並
且加載相應的硬件驅動程序。
4.運行init程序
init程序是系統啟動的時候,第一個運行的程序,我們都知道任何程序都有自己的父程序,一旦父程
序被關閉,那麽該程序也將無法運行,而init程序就是系統中所有程序的祖宗程序。
5.運行系統初始化腳本
當init程序啟動後,它做的第一件事就是運行 /etc/rc.d/rc.sysinit,也就是系統初始化腳本,那麽運行這個腳本能做什麽呢?
(1) 設置主機名
(2) 設置歡迎信息
(3) 激活udev和selinux
(4) 掛載/etc/fstab文件中定義的文件系統
(5) 檢測根文件系統,並以讀寫方式重新掛載根文件系統
(6) 設置系統時鐘
(7) 激活swap設備
(8) 根據/etc/sysctl.conf文件設置內核參數
(9) 激活lvm及software raid設備
(10) 加載額外設備的驅動程序
(11) 清理操作
6.啟動核心的外掛模塊
7.init執行運行各個批處理文件
當核心的外掛模塊被啟動後,init會執行各個批處理文件,這些批處理文件位於如下目錄中
這些文件夾分別對應級別0到級別6,我們進入rc5.d中查看有哪些文件
而如果我們使用ls -al命令查看,可以發現這些文件其實都是軟連接
他們其實都指向一個一個的服務腳本,其中K代表此服務開機不自動啟動,S代表開機自動啟動,
後面的數字代表了啟動的順序。
8.執行rc.local文件
rc.local也是一個腳本。該腳本是在系統初始化級別腳本運行之後再執行的,因此我們可以安全地在裏面添加在
系統啟動之後執行的腳本。例如的我們可以在裏面添加fstab掛載腳本。此外,我們可以在裏面添加一些調試用的腳
本命令。
rc.local腳本是在啟動過程中較後執行的,在正常級別下,最後一個啟動服務S99local是指向lrc.local腳本,我們
可以將不方便或者不需要寫為服務腳本的腳本放置於rc.local文件中,他是用戶自定義的一些設置。
9.執行/bin/login程序,等待用戶登錄
出現登陸界面,選擇用戶後,輸入登錄密碼即可登錄
10.登陸之後,打印登陸提示符,並開始shell控制主機
centos6啟動流程詳解