centos 6系統啟動流程分析

linux 系統啟動流程:

之前有描述過linux的啟動流程,但還有許多模糊的地方,經過一段時間了學習,查資料,看腳本,比初次理解更深,可以將上次模糊或不足的地方描述得比較清楚一些。

先看一張啟動流程圖。

 centos 6系統啟動流程分析

分析:

linux系統的啟動流程大概可以分為兩大部分:

第一部分為內核空間的啟動

第二部分為用戶空間的啟動

其中,內核空間的啟動主要可為分四個主要的階段:

post –>  mbr  –> grub   –>  kernel

用戶空間的啟動,也主要分四個階段:

inittab –> sysinit –> runlevel –> rc.local ; mingetty ;login

 

下邊我將盡已所能,將每個過程描述清楚。

 

內核空間啟動的四個階段:

第一個階段 post:

主機通電之后,運行的第一個程序,就是bios,全稱base input output system,這個程序是集成在主板的rom中,運行起來后,就要先跑一次post代碼,進行最基本的檢查,主要檢查主機的硬件是否正常,若不正常,將會報錯并不再進行下一步。

 

第二階段  裝載MBR

post代碼執行完后,就會將bios中設定好的啟動順序,將第一個活動的設備的MBR加載至內存中,MBR446字節為linux中的主導引程序grubstage1。至此,bios的任務完成。

 

 

第三階段  裝載grub引導啟動程序

MBRgrubstage1加載到內存中后,又會繼續讀取第一個扇區512字節后的大概27個扇區,這個范圍內,正是stage1_5所在的階段。stage1_5階段,存儲了/boot分區的文件系統驅動,加載到此驅動后,才能去加載/boot分區中的stage2階段。至此,整個linux的引導啟動程序grub加載完成

 

第四階段  加載kernel

grub的配置文件grub.conf中,已經指明了kernel的位置以及initramfs的位置,能加載kernel,并且掛載initramfs已經是板上釘釘的事,接下來的事,只需要借助initramfs這個偽根文件系統中存儲的驅動,去掛載真正的“/”文件系統,需要注意的是,此時“/”文件系統是以只讀方式掛載的。下一步,將會啟動系統的第一個程序:/sbin/init,init進程起來之后,下接來要做的事,就歸屬于用戶空間了。

 

用戶空間啟動的四個階段:

第一階段:

/sbin/init程序運行為init進程后,第一件事,就是去讀取配置文件/etc/inittab/etc/init目錄下的*.conf文件,按照這些配置文件的定義,去完成系統的初始化。

 

第二階段:

根據init程序配置文件的定義,在任何運行級別下運行/etc/rc.d/sysinit腳本。此腳本主要完成的工作如下有設置主機名,主機時間,根據/etc/fstab中的定義,掛載指定的文件系統,“/”文件系統也被重新以只讀的方式掛載,激活LVM,sortware raid這些虛擬設備,激活swap設備,加載額外的驅動程序,清理此前這些操作產生的無用的文件。

 

第三階段:

執行完init程序配置文件中指定運行的sysinit腳本后,將會根據確定的運行級別,運行相應的運行級別下的腳本,啟動對應的服務,關閉對應的服務。

linux每個運行級別下,設置啟動的服務都不相同,大概有幾種級別:

0:關機

1:單用戶模式或救援模式

2:多用戶模式,多用于維護,且沒有NFS

3: 多用戶模式,正常模式,平時用得最多的就是這個

4:保留

5:圖形界面

6:重啟

執行完相應的運行級別的腳本后,還要執行用戶定義在rc.local中的命令。執行mingettty,開啟6個終端,提示用戶輸入用戶名和密碼進行登陸。至此,整個系統啟動流程結束。

 

 

 

 

 

 

 

 

 

 

原創文章,作者:old_radish,如若轉載,請注明出處:http://www.www58058.com/75713

(0)
old_radishold_radish
上一篇 2017-05-15
下一篇 2017-05-15

相關推薦

  • Java中的CopyOnWrite容器

    Copy-On-Write簡稱COW,是一種用于程序設計中的優化策略。其基本思路是,從一開始大家都在共享同一個內容,當某個人想要修改這個內容的時候,才會真正把內容Copy出去形成一個新的內容然后再改,這是一種延時懶惰策略。從JDK1.5開始Java并發包里提供了兩個使用CopyOnWrite機制實現的并發容器,它們是CopyOnWriteArrayList和…

    Linux干貨 2016-08-15
  • sed使用小結

    sed使用小結 Stream EDitor  行編輯器       sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”( pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,…

    Linux干貨 2016-08-12
  • Linux Basics–part6

    1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; tmp]# cp /etc/rc.d/init.d/rc.sysinit /tmp/rc.sysinit tmp]# vim rc.sysinit : 進入末行模式 %s@^[[:space:]]\+@#@g 2…

    Linux干貨 2017-08-24
  • 破壞grub實驗之一

    1、刪除grub stage1階段 [root@centos6 ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1 1+0 records in 1+0 records out 446 bytes …

    Linux干貨 2016-09-19
  • X86平臺系統啟動流程 (Blog 9)

    POST –> BootSeqence(BIOS) –> Bootloader(MBR) –> Kernel(initrd) –> init(/etc/inittab)

    2017-11-27
欧美性久久久久