centos啟動流程
我們在使用linux操作系統的時候,我們只要按下開機鍵之後,剩下的就是等待,然後輸入用戶名和密碼就可以使用 Linux系統了,然而在從按下開機鍵到輸入用戶名和密碼之前。操作系統都做了什麽?下面就來講述一下centos在啟動的時候都做了哪些動作
以cnetos6為例。詳解centos啟動流程
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。
三、GRUB(GRand UnifiedBootloader
就是MBR中的前446個字節,是Bootloader的一種,它的作用是選擇要啟動的內核,系統將linux下/boot/grub/grub.conf的配置文件讀入到內存中,根據配置文件中的信息找到內核文就按和偽根文件,並將偽根文件加載到內存中,模擬出一個根系統,在進行加載內核。
四、啟動init程序
Init程序是centos第一進程。其他進程都是由此進程fork出來的,也就是說,init進程是其他進程的“祖先”。
在init啟動啟動之後做的事情
1、讀取/etc/inittab文件來讀取默認級別
2、執行初始化腳本/etc/rc.d/rc.sysinit來初始化腳本
腳本的作用如下:
設置主機名
設置歡迎信息
激活udev和selinux
掛載/etc/fstab文件中定義的文件系統
檢測根文件系統,並以讀寫方式重新掛載根文件系統
設置系統時鐘
激活swap設備
根據/etc/sysctl.conf文件設置內核參數
激活lvm及software raid設備
加載額外設備的驅動程序
清理操作
3、執行/etc/rc.d/rcX.d腳本
根據讀取的/etc/inittab文件中的登錄模式,會運行相對應的腳本,假設是5模式,會讀去/etc/rc.d/rc5.d下的所有腳本,來控制系統啟動時啟動或者關閉那些服務
這裏的腳本大致分為兩類,以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登錄用戶。至此系統提東過程完成。
在對系統啟動流程有了大致了解之後,為了更深入的理解,下面就做一些來加深理解
實驗1 刪除/boot/下initramfs-2.6.32-696.el6.x86_64.img文件
刪除文件是用偽根系統,是用來掛載根來找內核文件來啟動程序的,如果刪除以後將導致系統無法啟動,所以在系統重啟會出現以下界面:
修復方法:
1.、進入救援模式
2、生成偽根系統
實驗二、在LVM情況下,刪除/etc/fstab文件和/boot下的文件
修復過程
1、進入救援模式
由於刪除了/etc/fstab文件,在進入救援模式的時候將導致系統的根無法掛載到/mnt/sysimages上
2、進入救援模式將掛載根文件,在救援模式下,邏輯卷處於禁用
3、激活邏輯卷
4、重新掛載跟並編輯 /etc/fstab文件
5、重新進入救援模式,切根
6掛載光盤,重新安裝kernel
7、安裝grub
8、在/boot/grub下編輯grub.conf文件
未完待續~
centos啟動流程