1. 程式人生 > >CentOS 6 系統無法開機故障修復

CentOS 6 系統無法開機故障修復

centos 開機無法 啟動修復

本文針對grub故障及服務故障導致的開機無法啟動的情況進行模擬,並給出修復詳細步驟。


一、grub各配置文件問題引起的開機故障

可能出現此故障場景

  • 當前硬盤沒有grub,每次啟動都是通過有grub的光盤或U盤啟動的當前硬盤上的操作系統

  • 有兩塊硬盤其中有一塊沒有安裝grub

  • 主機WindowsLinux雙系統共存,後來由於Windows壞了重裝了Windows此時Linuxbootloader就被覆蓋

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目錄下必須有stage1stage2和各類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

grubstage1.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 系統無法開機故障修復