在Linux系統的啟動過程中,涉及到MBR主引導記錄,GRUB啟動菜單,系統初始化配置檔案,分區挂載配置檔案各方面,其中任何一個環節出現故障都有可能導緻系統啟動故障,今天的實驗就模拟一下這幾方面的故障然後解決。
一.MBR扇區故障
首先介紹一下MBR扇區,它是實體硬碟的第一個扇區(512位元組),由三部分構成:1.主引導程式代碼,占446位元組;2.硬碟分區表DPT,占64位元組;3.主引導扇區結束标志AA55H。MBR引導記錄正位于MBR扇區,當MBR扇區發生故障時,将可能無法進入引導菜單,或者因無法找到正确的分區位置而無法加載系統,通過該硬碟引導主機時很可能進入黑屏狀态。接下來通過實驗來模拟MBR扇區的備份、破壞和修複過程:
1.備份:将第一塊硬碟(sda)的MBR扇區備份到第二塊硬碟的sdb1分區中。
<a href="http://blog.51cto.com/attachment/201008/180147426.jpg" target="_blank"></a>
2.模拟損壞MBR扇區:從空裝置檔案zero中讀取512位元組的資料,寫入第一塊硬碟sda,進而破壞MBR扇區中的資料。
<a href="http://blog.51cto.com/attachment/201008/180541152.jpg" target="_blank"></a>
完成上述操作後,重新開機系統,将會出現“Operating system not found”的提示資訊,表示無法找到可用的作業系統,是以無法啟動主機。(如下圖)
<a href="http://blog.51cto.com/attachment/201008/181025609.jpg" target="_blank"></a>
3.恢複MBR扇區資料:由于MBR扇區損壞後無法再從硬碟啟動系統,是以我們使用RHEL5安裝CD光牒引導,當出現安裝向導的“boot:”提示符時,輸入“linux rescue”并回車(如下圖),以“急救模式”引導CD光牒中的Linux系統。之後依次按Enter鍵接收預設的語言、鍵盤格式,提示是否配置網卡時選“NO”,然後系統會自動查找硬碟中的分區并嘗試将其挂載到“/mnt/sysimage”目錄(選擇“Continue”确認并繼續)。接下來當出現是否初始化磁盤的警告視窗時,切記一定要選擇“NO”(如下圖),以免造成對硬碟資料的進一步損壞,最後選擇“OK”确認後将進入帶“sh-3.2#”提示符的Bash Shell環境。
<a href="http://blog.51cto.com/attachment/201008/182508813.jpg" target="_blank"></a>
接下來進行恢複操作,先确認第一硬碟的分區情況(已無法獲得有效分區表資訊),然後挂載帶有備份檔案的分區,并恢複備份資料:
<a href="http://blog.51cto.com/attachment/201008/183107458.jpg" target="_blank"></a>
完成恢複操作後,執行“init 6”重新開機主機即可正常進入系統。(取出RHEL5安裝CD光牒)
二.GRUB引導故障
GRUB是大多數Linux系統預設使用的引導程式,如果主機中有不同的作業系統,可以通過啟動菜單的方式選擇進入。當“/boot/grup/grup.conf”配置檔案丢失,或者關鍵配置出現錯誤,或者MBR記錄中的引導程式遭到破壞時,Linux主機啟動後可能隻會出現“grub>”的提示符(如下圖),無法完成進一步的系統啟動過程。
<a href="http://blog.51cto.com/attachment/201008/184506222.jpg" target="_blank"></a>
接下來模拟一下“/boot/grup/grup.conf”檔案備份、丢失、恢複的操作:
1.備份“/boot/grup/grup.conf ”檔案至/disk下。
#cp /boot/grup/grup.conf /disk
2.删除“/boot/grup/grup.conf“ 檔案,重新開機系統。
# rm -f /boot/grup/grup.conf
#reboot
3.恢複“/boot/grup/grup.conf” 檔案有兩種方法,第一種是在“grub" 指令提示符後輸入對應的引導指令(可參考“/boot/grup/grup.conf“檔案中的配置),再執行“boot”指令也可以引導linux系統,進入系統後再重建grup.conf檔案,或直接恢複備份即可。這種恢複方法較為複雜,而且一般不容易記住相關的指令的選項,核心參數等。是以我們采用第二種方法來恢複:同樣使用RHEL5安裝CD光牒引導進入急救模式(參考上恢複MBR時的操作),如果分區表并未破壞,則急救模式将會找到硬碟中的Linux根分區,并将其挂載到CD光牒目錄結構中的“/mnt/sysimage”檔案夾中。恢複操作如下:
sh-3.2# chroot /mnt/sysimage //切換到待修複的Linux系統根環境
sh-3.2# cp /disk/grup.conf /boot/grup/ //恢複備份檔案
另外如果是MBR扇區中的引導程式出現損壞,可能在恢複grub.conf配置檔案後仍然無法成功啟動系統,此時就需要在急救模式下的Shell環境中重裝grub。
sh-3.2# chroot /mnt/sysimage
sh-3.2# grub-install /dev/sda
sh-3.2# exit
根據以上操作便可以恢複GRUB故障了!
三./etc/inittab檔案丢失或損壞
“/etc/inittab”檔案是系統初始化程序init的配置檔案,當該檔案被誤删除或者存在錯誤配置時,可能導緻無法啟動系統。丢失“/etc/inittab”檔案後,啟動時将會出現“INIT:No inittab file found”的錯誤提示資訊(如下圖):
<a href="http://blog.51cto.com/attachment/201008/191623342.jpg" target="_blank"></a>
恢複方法:在急救模式的“sh-3.2#”環境中挂載RHEL5CD光牒,并重新安裝initscripts軟體包,完裝完畢後重新開機系統,便可以恢複/etc/inittab檔案了。
<a href="http://blog.51cto.com/attachment/201008/191901145.jpg" target="_blank"></a>
今天的實驗到此就先結束了,當然模拟的實驗環境和真實的環境中出現的故障有些差異,但解決方法應該是差不多的。以上如有文字如有錯誤,歡迎大家指正!
本文轉自 kk5234 51CTO部落格,原文連結:http://blog.51cto.com/kk5234/383008,如需轉載請自行聯系原作者