centos啓動流程

我們在使用linux操作系統的時候,我們只要按下開機鍵之後,剩下的就是等待,然後輸入用戶名和密碼就可以使用 Linux系統了,然而在從按下開機鍵到輸入用戶名和密碼之前。操作系統都做了什麼?下面就來講述一下centos在啓動的時候都做了哪些動作

cnetos6爲例。詳解centos啓動流程

wKioL1nHgNTB3N-1AAGG0eUSp7E452.png

POST --> Boot Sequence(BIOS) --> BootLoader (MBR) --> Kernel(ramdisk) --> rootfs --> switchroot -->/sbin/init -->(/etc/inittab, /etc/init/*.conf) --> 設定運行級別 -->系統初始化腳本 --> 關閉或啓動對應級別下的服務 --> 啓動終端

一、POST開機自檢

  實現POST的代碼是在主板上ROM芯片上,在開機的時候,POST會對硬件設備進行檢查。完成後會尋找具有與引導記錄的設備,並由引導設備來完成系統的順利啓動。

二、MBR引導

    MBR(MasterBoot Record) MBR記錄一般是在磁盤 0 磁道 1 扇區,共512個字節。前446個字節是BootLoder,後 4*16 64 個字節是存放分區信息的,最後 2 個字節是校驗信息,一般是 55AA

三、GRUBGRand UnifiedBootloader)、加載內核

     就是MBR中的前446個字節,是Bootloader的一種,它的作用是選擇要啓動的內核,系統將linux/boot/grub/grub.conf的配置文件讀入到內存中,根據配置文件中的信息找到內核文就按和僞根文件,並將僞根文件加載到內存中,模擬出一個根系統,在進行加載內核。

四、啓動init程序

       Init程序是centos第一進程。其他進程都是由此進程fork出來的,也就是說,init進程是其他進程的“祖先”。

init啓動啓動之後做的事情

1、讀取/etc/inittab文件來讀取默認級別

wKiom1nHgUygx9_bAACNuzmNmoo141.png

2、執行初始化腳本/etc/rc.d/rc.sysinit來初始化腳本

腳本的作用如下:

  •  設置主機名

  •   設置歡迎信息

  •   激活udevselinux

  •   掛載/etc/fstab文件中定義的文件系統

  •   檢測根文件系統,並以讀寫方式重新掛載根文件系統

  •   設置系統時鐘

  •   激活swap設備

  •   根據/etc/sysctl.conf文件設置內核參數

  •   激活lvmsoftware raid設備

  •   加載額外設備的驅動程序

  •   清理操作


3、執行/etc/rc.d/rcX.d腳本

根據讀取的/etc/inittab文件中的登錄模式,會運行相對應的腳本,假設是5模式,會讀去/etc/rc.d/rc5.d下的所有腳本,來控制系統啓動時啓動或者關閉那些服務

wKioL1nHgVqTdnjjAAEPvk1amXE185.png

  •  這裏的腳本大致分爲兩類,以S開頭的和以K開頭的腳本

  •  S代表開機啓動的,K代表開機時不啓動

  •  每個文件的命名格式,例如S06iptables S表示開機啓動,06 表示啓動次序 iptables表示啓動的腳本名

這些腳本是否開機啓動,可以由chkconfig命令來管理

  •  chkconfig  –addSRV-SCRIPT  可以將自己將自己寫的一些腳本放/etc/rc.d/rc.init.d中,讓此命令統一管理

  •  chkconfig --del  SRV-SCRIPT 將服務刪除,意思就是服務不由chkconfig這種機制來管理 

  • chkconfig SRV_SCRIPT {on|off} 設置服務開機是否自啓動,默認管理的級別是2345. 

  •   --level 2345 等,指定默認級別,可以與其他選項一起使用 

4、執行/etc/rc.d/rc.local腳本,此腳本是啓動過程中最後啓動的一個腳本。

最後會執行/bin/login登錄用戶。至此係統提東過程完成。


在對系統啓動流程有了大致瞭解之後,爲了更深入的理解,下面就做一些來加深理解

實驗刪除/boot/initramfs-2.6.32-696.el6.x86_64.img文件

刪除文件是用僞根系統,是用來掛載根來找內核文件來啓動程序的,如果刪除以後將導致系統無法啓動,所以在系統重啓會出現以下界面:

wKiom1nHgdXA3SA1AAAKNxLth94282.png

修復方法:

1.、進入救援模式

wKioL1nHgeiR7wMKAABWlBs25cc034.png

wKiom1nHgjPxUE_WAAP6w_tw114708.png

2、生成僞根系統

wKioL1nHgiWzRY7FAAFTRDxZgPg683.png

 實驗二、LVM情況下,刪除/etc/fstab文件和/boot下的文件

修復過程

1、進入救援模式

由於刪除了/etc/fstab文件,在進入救援模式的時候將導致系統的根無法掛載到/mnt/sysimages

wKiom1nHguagVc0ZAABWw_2qPGw349.png

2、進入救援模式將掛載根文件,在救援模式下,邏輯卷處於禁用wKiom1nHgwCC5JNZAAEskM8KSuI458.png


3激活邏輯卷

wKioL1nHgt7DBW5oAACFJ7_BvH0076.png

4、重新掛載跟並編輯  /etc/fstab文件

wKiom1nHgy6DrU5JAAD5RaGlygM631.png

5、重新進入救援模式,切根

wKioL1nHgzfzeZUCAAC_fB1MlpY587.png

6掛載光盤,重新安裝kernel

7、安裝grub

wKioL1nHg3mBw81GAAAxMgFOg0Q626.png

8、在/boot/grub下編輯grub.conf文件

wKioL1nHg46jfTTBAAB0m5beyOs363.png

未完待續~


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章