1. 程式人生 > >centos6啟動流程詳解

centos6啟動流程詳解

linux 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啟動流程詳解