在使用CentOS系統時,難免會有誤操作而導致機器不能正常啟動,這里介紹了多種啟動失敗的原因和修復的方法。
grub損壞類
-
grub 1stage 被破壞
使用dd擦寫MBR前446字節,即抹去stage1階段
–[root@_2_ ~]# reboot #重啟
–啟動失敗,找不到系統,這時只能借助光盤進入修復模式,重新安裝grub
–插入光盤,啟動系統,選擇修復模式
–語言和鍵盤都選擇默認就好
–是否啟用網絡功能,我這里不需要,選擇否
–選擇continue
–這里提示根文件系統在/mnt/sysimage下
–選擇啟動一個shell
–使用df查看分區信息,這時,原系統根被掛載至/mnt/sysimage/目錄下
–這時我們先把根切換到原系統,再執行grub-install修復操作
–使用grub-install /dev/sda重裝grub,,若不做根切換,則需指定--root-directory=/mnt/sysimage/
–使用兩次exit退出根,選擇reboot Reboot重啟系統,
–系統已經起來了
-
grub 1.5 stage被破壞
使用dd破壞磁盤512字節之后的扇區,然后重啟,發現系統依然不能啟動,
–解決思路還是重裝grub,這次我使用grub命令行來重裝grub,修復完成后重啟
-
grub.conf丟失
把/boot/grub/grub.conf文件移動至其他目錄,然后重啟系統,會出現grub命令行:
–這時我們可以手動編輯grub參數
指明grub目錄的根: root (hd0,0)
指定內核路徑及參數和真正根文件系統: kernel /vmlinuz-2.6.32-642.e16.x86_64 ro root=/dev/sda3
指明initrd,內核系統驅動initramfs: initrd /initramfs-2.6.32-642.e16.x86_64.img
重新引導操作系統: boot如果忘記根文件系統路徑,可以進入修復模式查看
–可以看到系統已經啟動,雖然能夠進入系統,但是grub.conf配置文件還是缺失,需要我們手動創建
–重啟,啟動成功
-
vmlinuz文件丟失
1、使用rpm重裝kernel包
掛載光盤 mount /dev/sr0 /media 安裝kernel包 rp -ivh kernel-2.6.32-642.el6.x86_64.rpm --replacepkgs
2、使用rpm2cpio解壓出vmlinuz包,再把vmlinuz復制到/boot下
若系統已經不能啟動,則在救援模式下先切換根目錄,再使用以上兩種方法 -
initramfs文件丟失
使用mkinitrd命令
mkinitrd /boot/initramfs-`uname -r`.img `uname -r`
若系統已經不能啟動,則在救援模式下先切換根目錄,再使用以此種方法 -
/boot目錄被刪除,系統無法啟動
~]# reboot重啟會進入grub命令行
–此時/boot文件全部丟失,即使手動也無法指定引導grub,需要進入救援模式
–1.切換根目錄,使用grub-install安裝grub
–2.安裝kernel包生成vmlinuz和initramfs等文件
–3.編輯grub.conf配置文件
啟動成功
-
若/etc/fstab和/boot/丟失
–重啟會進入grub命令行,這時根文件系統不能掛載,我們要進入修復模式修復
到這里會提示沒有發現根文件系統,因為系統找不到/etc/fstab文件無法掛載,還是選擇打開一個shell
若根分區為普通分區使用blkid和fdisk -l查看分區信息,這里很容易發現/dev/sda1是是boot分區,sda2時swap分區,若我們此時不能分辨根分區,則把所有類似分區掛載起來,從分區信息中分辨根分區,這里我知道sda3是根,然后新建目錄,把sda3掛載至此目錄
到這一步我們先增加根分區里的/etc/fstab文件,編輯完成后重啟繼續進入修復模式
–
若根分區為邏輯卷如下圖,只有boot是獨立普通分區
–在修復模式下,看不到具體的邏輯分區
–使用lvscan能看到邏輯分區處于非活動狀態,使用vgchange -ay激活邏輯分區,再次查看分區信息,看到了邏輯設備
接下來還是需要掛載邏輯卷,創建/etc/fstab文件,我們先掛載根文件系統,再創建fstab文件呢
然后重啟進入修復模式,讓系統能識別并掛載根
已經識別到了
–到這一步說明已經識別掛載了根分區,至此我們使用前述方法再修復/boot/分區,就能正常啟動系統了
–
了解原理之后,修復系統啟動失敗其實就是這么簡單!
原創文章,作者:M20-1--孔祥文,如若轉載,請注明出處:http://www.www58058.com/46658
寫的很不錯,圖文并茂,很詳細,