CentOS 6 系統無法開機故障修復
本文針對grub故障及服務故障導致的開機無法啟動的情況進行模擬,並給出修復詳細步驟。
一、grub各配置文件問題引起的開機故障
可能出現此故障場景:
當前硬盤沒有grub,每次啟動都是通過有grub的光盤或U盤啟動的當前硬盤上的操作系統
有兩塊硬盤其中有一塊沒有安裝grub
主機Windows和Linux雙系統共存,後來由於Windows壞了重裝了Windows此時Linux的bootloader就被覆蓋
1、模擬stage1階段(操作系統所在磁盤分區的前446字節)被破壞導致的開機故障
模擬操作:
故障現象:開機停留在如果所示界面
修復方法1:
①如上圖選擇Rescue installed system(救援模式),或者在該界面按Esc進入boot命令行接口
鍵入圈紅內容也可以進入緊急救援模式。之後需選擇語言及鍵盤圖略。
②是否設置網絡信息
註:若要通過網絡服務器上的文件修復grub可啟動該項,此處要通過光盤修復選擇“No”
③緊急救援模式接下來會嘗試查找本機硬盤上是否有裝過操作系統,如果有的話它會把找到的根掛載至當前啟動的小的緊急救援模式的Linux系統的/mnt/sysimage目錄下,稍後用戶可以到該目錄下找所需要的文件,若要這樣選擇
“continue” 。後續確定圖略④選擇shell,進入系統開始修復階段
chroot /mnt/sysimage從救援模式的根切到已損壞操作系統,因為後續要把grub安裝到該操作系統。
grub-install /dev/sda重新安裝grub,以修復系統。
⑤sync將修改寫入磁盤,退出已grub修復的系統進入緊急救援模式下的Linux重啟系統。
重啟過程中拆除光盤避免系統以光盤啟動,如下圖不打勾“啟動時連接”即可
重啟系統成功圖略。
修復方法2:如方法1前面步驟至切根操作(chroot /mnt/sysimage),之後鍵入grub進入grub命令行界面交互操作,
grub> root (hd#,#)
grub> setup (hd#)
quit
“#”視情況而定,例如root(hd0,0)操作系統在第一塊硬盤,第一個分區。setup (hd0)代表把grub裝到哪塊硬盤。
註意:第二種方法要求/boot/grub目錄下必須有stage1、stage2和各類stage1_5。局限性較大,推薦使用第一種方法進行修復。
2、模擬stage1_5階段(操作系統所在磁盤分區的512字節約3個扇區)被破壞導致的開機故障
模擬操作:
故障現象為卡在全黑屏(不用截圖了吧)
修復方法:開機按Esc進入救模式界面,之後操作同stage1階段。
3、模擬stage1_5階段(操作系統所在磁盤分區的512字節約3個扇區)被破壞導致的開機故障
模擬操作:將/boot/grub/目錄下除grub.conf文件其余全部刪除。
故障現象:如圖所示
修復方法:開機按Esc進入救模式界面,之後操作同stage1階段。
4、將/boot/grub目錄刪除導致的無法開機。
故障現象:如圖
開機會卡在grub命令行界面。
修復方法:如下圖鍵入root、kernel、initrd三條主要信息(內容以實際故障計算機為準),重啟後進入救援模式重復上述操作(切根、生產grub配置信息),
重寫配置文件:/boot/grub/grub.conf
簡單的寫一下:
title jinbus
root (hd0,0)
kernel /vmlinuz-2.6.32-642.el6.x86_64 ro root=/dev/sda3
initrd /initramfs-2.6.32-642.el6.x86_64.img
重啟解決問題。
5、刪除/boot目錄下的所有文件,導致的開機無法啟動。
模擬故障:rm –rf /boot
此時刪除了啟動時需要的:
內核文件:vmlinuz-2.6.32-642.el6.x86_64
虛擬文件系統:initramfs-2.6.32-642.el6.x86_64.img
grub 的啟動文件:stage1.5 stage2
grub的stage1.5 :如果之前發生過修復,那麽啟動時用到的數據存在於MBR之後,stage1.5同樣存在於文件夾下,但是不會用到 。
grub的配置文件:grub.conf
修復方法:進入光盤救援模式,恢復內核文件:vmlinuz-2.6.32-642.el6.x86_64 及 虛擬文件系統:initramfs-2.6.32-642.el6.x86_64.img
方案1:安裝 kernel進行修復,
chroot /mnt/sysimange
mount /dev/sr0 /mnt/sr0
rmp –ivh /mnt/sr0/Packages/kernel.****.rpm
方案2:分別修復
① chroot /mnt/sysimange
cp /mnt/isolinux/vmlinuz-2.6.32-642.el6.x86_64 /boot
cp /mnt/isolinux/initramfs-2.6.32-642.el6.x86_64.img /boot
② 創建虛擬文件系統文件
mkinitrd /boot/initramfs-`uname -r `.img `uname -r `
③ 安裝 grub 使用命令:
grub-install /dev/sda
④ 重寫 grub.config
⑤ sync 同步
二、服務問題引起的開機故障
模擬服務故障環境:在/etc/init.d/下新建故障服務test.sh,
新建該腳本要遵循LSB服務腳本定義的規範進行編寫基本格式如上圖,能接受4個基本參數即可{start|stop|status|restart}。在start函數中寫入sleep 10000模擬開機無法啟動的環境。
如圖設置test.sh服務為開機自啟動。
故障現象:卡到某一服務無法開機
修復方法1:一般服務在單用戶模式下不會設為自啟動,開機至grub菜單界面。
選中要啟動的內核,a鍵編輯內核參數。如圖在參數後面添加1(或者s、S、single)進入單用戶模式。
chkconfig test.sh off 將故障服務off掉即可。
如果單用戶模式都設為了開機啟動,就需要使用第二種方法進行修復。
修復方法2:grub菜單a鍵編輯內核參數,後面添加如下圖所示內容
回車,b鍵啟動
此時bash作為第一個啟動的程序,會跳過initrd設定的服務。
此時是只讀掛載沒有修改權限,需重新掛載並進行後續操作。
重啟完成修復。
本文出自 “linux運維” 博客,請務必保留此出處http://arm2012.blog.51cto.com/2418467/1962247
CentOS 6 系統無法開機故障修復