redhat8 rhel8 啟動grub損壞修復

foolqiu發表於2024-08-20

環境: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 本文為實際操作後的記錄

相關文章