centos6啟動流程

來源:互聯網
上載者:User

標籤:grand   程式   

系統啟動流程

 

 

     系統的啟動時一項非常複雜的過程,核心需要檢測硬體並載入驅動程式,接著調用相關程式為系統運行準備好環境。下面以centos6為例,說明系統的啟動過程。

1   post

當我們按下開機的電源後,主板上的晶片集會首先向CPU發出一個指令,CPU就會跳轉到BIOS中的啟動代碼位置; BIOS首先要檢測關鍵裝置(如記憶體、顯卡等)是否正常,這個過程就稱為POST(加電後自檢)。

2   boot sequence(BIOS)

引導次序:按次序找引導裝置,第一個有引導程式的裝置,即為啟動所用到的裝置。

3  MBR(Bootloader)

MBR(Mater Boot Record),即主引導記錄,其位置在硬碟第一個扇區的前512位元組。。它由三個部分組成,主引導程式(Bootloader)、硬碟分區表DPT(Disk Partition table)和硬碟有效標誌(55AA),其結構圖如下所示:

 

現在常用的Bootloader程式為GRUB,GRUB(Grand Unified Bootloader)是由GNU組織所推行的;CentOS 5和CentOS 6上使用的版本為Grub 0.97。

GRUB是位於/boot下的一個目錄,其裡面的內容如:

 

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/74/04/wKiom1YNIEDxl4dyAAFD74n6hcg187.jpg" title="圖片1.png" alt="wKiom1YNIEDxl4dyAAFD74n6hcg187.jpg" />

從中可以看到stage1、 *_stage1_5和stage2這三類檔案,它們分別表示GRUB引導時的三個階段。stage1執行Bootloader。grub目錄中存在許多以stage1_5結尾的檔案,這些檔案都是stage1_5階段功能的檔案,裡面存放著檔案系統的格式,其作用是串連stage1和stage2的一個通道。stage2階段會讀取grub.conf設定檔中設定資訊來完成系統的引導,載入核心

4  載入核心及initrd

   當stage2被載入記憶體執行時,它首先會去解析grub的設定檔/boot/grub/grub.conf,然後載入核心鏡像到記憶體中,並將控制權轉交給核心,而核心會立即初始化系統中各裝置並做相關的配置工作。

關於Linux的裝置驅動程式的載入,有一部分驅動程式直接被編譯進核心鏡像中,另一部分驅動程式則是以模組的形式放在initrd(ramdisk)中。Initrd稱為虛擬檔案系統,它是啟用系統所必須載入的檔案系統。當kernel被載入到記憶體後,需要載入相應驅動程來識別檔案系統,這時initrd就充當了臨時的系統被掛載到rootfs上,其作用就是協助kernel來載入驅動程式。initrd載入各種儲存介質相關的裝置驅動程式。當所需的驅動程式載入完後,會建立一個根裝置,然後將根檔案系統rootfs以唯讀方式掛載。這一步結束後,釋放未使用的記憶體,轉換到真正的根檔案系統上面去,同時運行/sbin/init程式,執行系統的1號進程。此後系統的控制權就全權交給/sbin/init進程了。

5  init進程

/sbin/init進程是系統其他所有進程的父進程,當它接管了系統的控制權先之後,它首先會去讀取/etc/inittab檔案來執行相應的指令碼進行系統初始化, inittab內有個重要的選項就是運行層級runlevel,init進程會讀取/etc/inittab中定義的運行層級,做相應的配置。runlevel有0-6共7個層級,分別是:

 0-halt關機

1-single user mode      單使用者維護模式

2-multi-user,without NFS        無網路功能的文字模式

3-full-muliti-user mode        完整的文字模式

4-unused            系統保留,未使用

5-X11                   啟動圖形介面

6-reboot            重啟

裝有圖形介面時一般預設層級為5,未裝圖形介面預設為3

6 利用/etc/rc.d/rc.sysint初始化

1、設定主機名稱:讀取/etc/sysconfig/network檔案中的HOSTNAME參數,並以之設定主機名稱;

    2、列印文本歡迎資訊;    

    3、啟用SElinux和udev;

    4、掛載/etc/fstab檔案中定義的檔案系統;

    5、啟用swap;

    6、檢測根檔案系統,並以讀寫方式重新掛載;

    7、設定系統時鐘;

    8、根據/etc/sysctl.conf的檔案設定設定核心參數;

    9、啟用LVM和RAID裝置;

10、載入額外裝置的驅動程式;

11、清理工作。

7 init執行選定的runlevel層級的相關服務的啟動

當/etc/rc.d/rc.sysinit執行完後,系統就可以順利工作了,只是還需要啟動系統所需要的各種服務,這樣主機才可以提供相關的網路和主機功能,完成了系統所有的啟動任務後,linux會啟動終端或X-Window來等待使用者登入,至此,系統就啟動完畢了。


本文出自 “linux” 部落格,請務必保留此出處http://yong1205.blog.51cto.com/10404369/1699803

centos6啟動流程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.