1. 程式人生 > >CentOS6.5下排除啟動類故障

CentOS6.5下排除啟動類故障

dir 檢查 lB 只讀 nor als fff mark chroot

概述引導過程

開機自檢→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文件的引導語句),然後再執行"boot"命令即可正常引導Linux系統

登錄進入系統以後,需要找到配置文件/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下排除啟動類故障