CentOS6.5下排除啟動類故障
開機自檢→MBR引導→GRUB菜單→加載內核(kernel)→init進程初始化
1、開機,BIOS自檢,檢測基本的硬件,檢測出第一個能夠開機引導的硬盤或設備,比如光驅、硬盤、U盤。
2、檢測出能夠引導的設備之後,查找設備中的引導程序,放置在硬盤第一個扇區,也就是MBR,MBR中有GRUB引導程序、以及分區表。
3、BIOS會把放在MBR這個扇區中的啟動引導程序運行起來,運行起來之後讀取/boot/grub/grub.conf,,告知GRUB,內核位於哪裏,GRUB可以去自行加載,除了內核,還有一個鏡像文件系統initrd,此時內核和鏡像文件都加載到內存中,是由GRUB完成。
4、加載到內存之中,又會進行依次硬件自檢(全面的硬件檢查),底層文件加載完畢,內核將完全掌控整個linux操作系統的運行過程
5、內核把init進程運行起來,此進程負責整個環境的初始化。
實驗目標
通過模擬MBR扇區故障排查,更深層的了解Linux的啟動流程,使之更加註意日常做好相關文件備份工作。
搭建步驟
第一種故障原因
病毒等造成的破壞
不正確的操作、磁盤讀寫誤操作
故障現象
找不到引導程序,啟動中斷
無法加載操作系統,開機後黑屏
解決思路
應提前做好備份文件
以安裝光盤引導進入急救模式
從備份文件中恢復
⑴備份MBR扇區數據
[root@redhat1 ~]# mkdir /backup
[root@redhat1 ~]# mount /dev/sdb1 /backup/ #添加一塊硬盤,寫入系統文件,掛載
[root@redhat1 ~]# dd if=/dev/sda of=/backup/mbr.bak bs=512 count=1 #備份扇區,一定要備份到另外一個盤中
⑵模擬MBR扇區故障
[root@redhat1 ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1 #模擬扇故障
[root@redhat1 ~]# reboot#此時重啟服務
⑶光盤引導,進入緊急模式,按提示操作
⑷從備份文件中恢復MBR扇區
第二種故障原因
MBR中的GRUB引導程序遭到破壞
grub.conf文件丟失、引導配置有誤
故障現象
系統引導停滯,顯示“grub>”提示符
解決思路
方法1:嘗試手動輸入引導命令
方法2:進入緊急急救模式,重建grub程序
方法1:
若在"grub>"提示符後可以進行編輯,則通過輸入對應的引導命令(可參考其他相同版本
登錄進入系統以後,需要找到配置文件/boot/grub/grub.conf,並修復其中的錯誤,或者直接重建該文件
⑴查看grub配置文件的uuid以及對應設備的設備文件名作為備份使用
[root@redhat1 ~]# ls -l /dev/disk/by-uuid/
[root@redhat1 ~]# grep -v "^#" /boot/grub/grub.conf
⑵重命名grub配置文件,模擬故障
[root@redhat1 ~]# cd /boot/grub/
[root@redhat1 grub]# mv grub.conf grub.conf.bak#重名grub配置文件,模擬故障
[root@redhat1 grub]# reboot #重啟
⑶進入"grub>"提示符後可以進行編輯
解析添加的四行:
①root(hd0,0)
#告知系統尋找的內核是在第一塊硬盤第一個分區(第一個0代表的是第一塊硬盤,第二個0代表是第一個分區),在grub中硬盤只識別為hd
②kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=8a3cb8f8-a169-4eba-b1e1-47c88aa84169
#告知系統內核的名稱以及版本號;
也可以寫成將kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/sda5
"/"代表該分區的最頂層目錄;
ro代表只讀;
root=UUID,root代表是根目錄,一般是通過uuid或設備的絕對路徑表示
③initrd /initramfs-2.6.32-431.el6.x86_64.img
#加載鏡像文件系統,鏡像文件系統相當於存放一些驅動,在引導的時候,可能需要一些設備的驅動把它引導起來
④boot
#開始引導不管kernel、initrd都會加載到內存裏面
⑷重啟測試
方法2:
使用安裝光盤引導進入急救模式,若分區表未被破壞,則急救模式將會找到硬盤中的Linux根分區,並將其掛載到光盤目錄結構中的/mnt/sysimage/文件夾中
進入"bash-4.1#"的Shell環境以後,執行"chroot /mnt/sysimage" 命令可以將目錄結構切換到待修復的Linux系統中,然後重寫(或通過之前備份的文件恢復)grub.conf配置文件即可
⑴備份MBR扇區數據
[root@redhat1 ~]# dd if=/dev/sda of=/root/grub.bak bs=446 count=1#前446字節是主引導記錄,從第447字節開始後的64字節,每16字節為一組,是硬盤分區表,分區表沒有壞,不需要備份到其他的硬盤
[root@redhat1 ~]# mount /dev/sdb1 /backup/ #掛載第二塊硬盤第一個分區
[root@redhat1 ~]# cp /root/grub.bak /backup/ #根據模擬實驗,雖然分區表理論上不會被破壞,為了保險起見,還是將其放入第二塊盤中
⑵模擬MBR扇區故障
[root@redhat1 ~]# dd if=/dev/zero of=/dev/sda bs=446 count=1 #模擬破壞引導程序,未破壞分區表
[root@redhat1 ~]# shutdown -r now
CentOS6.5下排除啟動類故障