一、出現 grub> 字樣,等待交互式輸入指令,說明MBR中Bootloader的stage1、stage1_5、stage2都正常,但丟失了/boot/grub.conf 文件,所以無法加載啟動項菜單,就無法讀取默認啟動的kernel、initrd等文件路徑。
解決辦法:無需救援模式,直接在此交互式界面指定相關文件的加載路徑。
(1) grub> root (hd0,0) #指定/boot的根目錄,若/boot為獨立分區則以(hd#,#)格式給出分區,若與操作系統的根在同一分區則為 (hd#,#)/
(2) grub> kernel /vmlinuz-xxx.el6.x86_64 root=/dev/{sda2|/mapper/VolGroup…} selinux=0 #指定kernel的位置,及真正的根目錄所掛載的分區,注意邏輯卷。取消安全標簽
(3) grub> initrd /initramfs-xxx.el6.x86_64.img #指定ramdisk文件所在位置,掛載臨時根文件系統,安裝相關驅動。
(4) grub> reboot
二、
最終停止在上圖畫面,并且也可以正常進入啟動項菜單,說明MBR、gurb文件等都沒問題,緊接著便是加載kernel和initrd。因此很有可能是initrd文件有問題了。
解決上述問題:需要進入救援模式。
當原根文件系統可以正常掛載。
(1) chroot /mnt/sysimage #切換到原根文件系統
(2) mkinitrd /initramfs-`uname -r`.img `uname -r` #用命令生成initrd文件,后邊的版本號必須與原有的內核版本號相同。
(3) exit
(4) reboot
若出現以下畫面則說明是內核文件找不到了。
解決kernel損壞問題:進入救援模式
(1) chroot /mnt/sysimage
(2) mount /dev/sr0 /mnt/cdrom
(3) rpm -ivh /mnt/cdrom/Package/kernel-VERSION-RELEASE –force #重新從光盤安裝kernel,避免因殘留文件存在而無法安裝,直接使用–force選項強制安裝。
(4) exit
(5) reboot
三、無法進入Bootloader,表現為沒有安裝操作系統之前的畫面時,極有可能是MBR中的grub數據損壞或者是/boot/grub/下的各相關文件丟失,進入救援模式重新裝載grub即可,重新裝載的過程中也會生成所需相關文件。但 /boot/grub/grub.conf 文件需要手動配置。
救援模式下安裝grub:
(1)切換根目錄為真正的操作系統的根目錄
chroot /mnt/sysimage
(2) grub-install –root-directory=/ /dev/sda
(3) exit
(4) reboot
### –root-directory=/代表的是指明boot的父目錄,由于安裝grub程序到磁盤的mbr中去的同時還要復制grub的相關配置文件到boot目錄中去,此時只需要給出boot的父目錄,因為他會在所給出的目錄下邊去尋找一個叫boot的目錄。(用于自制linux系統)
/dev/DISK代表要往那個磁盤的MBR上安裝grub。即引導啟動的硬盤設備。
四、以上問題修復時,若進入救援模式后發現未識別到原有根文件系統,很有可能是/etc/fstab文件出了問題,導致原有根文件系統無法自動掛載,此時就要先手動掛載,然后恢復/etc/fstab文件。
1、原根文件系統屬于正常分區,并未使用邏輯卷時
(1)光盤進救援模式
(2)找 /
]# blkid
]# mount /dev/sdaN /mnt/root #手動掛載成功后不要隨意切換到原有根文件系統,切換后所有命令就不能用了
]# vim /mnt/root/etc/fstab #編輯該文件,例如以下兩行內容
/dev/sda1 /boot defaults 0 0
/dev/sda2 / defaults 0 0
]# reboot
(3)必須重新啟動進入救援模式,讓系統自動識別掛載原有根文件系統。
然后針對以上問題進行各自所需的修復操作。
2、原根文件系統掛載在邏輯卷上時。
(1)光盤進救援模式
(2)找 /
]# blkid
]# lvs
]# vgchange -ay #邏輯卷并不能被正常識別,此時需要使用此命令識別邏輯卷
]# lvs
]# mount /dev/mapper/lv_root /mnt/sysimage #掛載邏輯卷
]# vim /mnt/root/etc/fstab
/dev/sda1 /boot ext4 defaults 0 0
/dev/vg0/lv_root / ext4 defaults 0 0
/usr/xxx /mount ext4 defaults 0 0
/var/xxx /mount ext4 defaults 0 0
(3)必須重新啟動進入救援模式,讓系統自動識別掛載原有根文件系統。
然后針對以上問題進行各自所需的修復操作。
五、grub引導成功,啟動菜單也沒問題,kernel加載成功,出現以下現象說明用戶空間的第一個程序init初始化失敗。
若啟動界面默認顯示詳細啟動過程的最終會顯示以下結果。esc可顯示詳細啟動過程。
默認啟動時不顯示詳細工程,而是centos動態圖像時會一直顯示“圓球”。轉的根本停不下來。
解決方法:進入光盤救援模式。想辦法恢復 /sbin/init 這個文件。此文件是一個二進制文件,可以考慮從別的系統上拷貝一份過來,注意版本問題。
總結:引起啟動失敗的問題:
1、grub
MBR中grub損壞、grub相關文件丟失
2、kernel或者initrd文件加載失敗
3、/sbin/init初始化失敗
原創文章,作者:Hulk,如若轉載,請注明出處:http://www.www58058.com/60798