環境:redhat8.4 RHEL8.4
伺服器:華為G560
問題描述:調整了/etc/default/grub檔案,重新生成/boot/grub2/grub.cfg導致機器啟動失敗,直接進入了rescue模式
解決方案:
啟動到如下介面
選擇c進入grub命令介面
可以使用ls命令去檢視驅動器的情況
- (hd0) 是第一個硬碟。
- (hd0,msdos1) 是第一個硬碟上的第一個分割槽。
- (hd0,msdos2) 是第一個硬碟上的第二個分割槽。
- (hd0,msdos3) 是第一個硬碟上的第三個分割槽。
一般來說,對於LVM結構磁碟,對應關係如下,這也是我的系統對應關係(這個結構需要根據自己系統情況仔細區分)
- (hd0,msdos1) 是第一個硬碟上的第一個分割槽,對應/dev/sda1,也就是系統中檔案系統/boot ,啟動檔案儲存的分割槽 對應的是傳統方式部署、啟動的系統
- (hd0,msdos2) 是第一個硬碟上的第二個分割槽,對應/dev/sda2,也就是系統中檔案系統/boot/efi,對應的是UEFI方式部署、啟動的系統
- (hd0,msdos3) 是第一個硬碟上的第三個分割槽,對應/dev/sda3,也就是系統中其它檔案系統,也就是根VG所在的分割槽
以上的對應關係也可以和同類系統對應
可以用命令詳細檢視磁碟內具體內容
現在清楚了這些內容,就開始
手動引導啟動
首先讓載入程式找到啟動檔案
grub> set root=(hd0,msdos1)
然後載入核心版本到根分割槽,我的根分割槽是在sda3裡
- 對於直接磁碟方式安裝的話命令如下
grub> linux16 /vmlinuz-4.18.0-305.el8.x86_64 ro root=/dev/sda2
- 對於LVM結構系統,命令如下
grub> linux16 /vmlinuz-4.18.0-305.el8.x86_64 ro root=/dev/mapper/vgrhel-lvroot
最後載入系統核心映象
grub> initrd16 /initramfs-4.18.0-305.el8.x86_64.img
grub> boot
以上手工引導,並不能讓下次系統能夠正常啟動。
配置自動啟動:
先說明一點結論,千萬不要手工編輯/etc/default/grub或者/etc/sysconfig/grub
因為我手工編輯了/etc/default/grub,所以執行如下步驟
- 刪除配置檔案
# rm /etc/default/grub
- 重新安裝軟體包
# yum reinstall grub2-tools
- 重建
grub.cfg
檔案以使更改生效
# grub2-mkconfig -o /boot/grub2/grub.cfg
- 重新安裝 GRUB在
/boot/
分割槽上恢復 GRUB
# grub2-install /dev/sda
- 驗證
# reboot
以上步驟基於BIOS安裝的機器,基於UEFI安裝的機器請參考https://docs.redhat.com/zh_hans/documentation/red_hat_enterprise_linux/8/html/managing_monitoring_and_updating_the_kernel/proc_resetting-grub_assembly_reinstalling-grub
相關內容:
檢視、配置grub使用如下命令:
# grubby
還有其它情況的處理步驟,請參考:https://blog.csdn.net/Howei__/article/details/104537757 本文為實際操作後的記錄