RockyLinux系统如果停留在GRUB无法进入时的修复

解决步骤

1. 使用 Rocky Linux 安装介质进入救援模式

  1. 下载 Rocky Linux 的 ISO 镜像,制作启动 U 盘(使用工具如 Rufus 或 dd)。
  2. 将系统设置为从 U 盘启动。
  3. 在启动菜单中选择:

    Troubleshooting > Rescue a Rocky Linux system

  4. 系统会提示是否尝试挂载现有的 Linux 系统,选择 1(继续挂载到 /mnt/sysimage)。

2. 进入系统环境

如果救援模式成功挂载了你的系统根分区,执行以下命令切换到系统环境:

chroot /mnt/sysimage

此时你已经进入了你的系统环境,可以尝试修复 GRUB。

3. 重新安装或修复 GRUB

检查分区表和 GRUB 配置

  1. 确认 /boot 分区是否存在:

    ls /boot

    如果 /boot 文件夹不存在或为空,说明引导分区可能丢失或未挂载。

  2. 检查 EFI 分区(仅适用于 UEFI 系统):

    ls /boot/efi

    如果是 UEFI 系统,EFI 分区应包含 GRUB 引导文件(例如 grubx64.efi)。

重新安装 GRUB

  1. 找到系统磁盘(假设是 /dev/sda):

    lsblk

  2. 对于 BIOS 引导系统,重新安装 GRUB:

    grub2-install /dev/sda

    对于 UEFI 引导系统:

    grub2-install --efi-directory=/boot/efi

  3. 重新生成 GRUB 配置文件:

    grub2-mkconfig -o /boot/grub2/grub.cfg

退出救援环境并重启

执行以下命令:

exit
reboot

4. 检查文件系统

如果问题仍然存在,可能是文件系统损坏导致 GRUB 无法读取引导文件。使用以下步骤检查并修复文件系统:

  1. 使用救援模式挂载分区。
  2. 检查文件系统:

    fsck /dev/sdaX

    替换 /dev/sdaX 为你的实际分区名(例如 /dev/sda1,可以通过 lsblk 查看分区信息)。

  3. 如果发现问题,按照提示修复。

5. 检查 BIOS/UEFI 设置

  1. 确保引导顺序正确,系统磁盘被设置为第一引导设备。
  2. 如果是 UEFI 系统,确保启用了 UEFI 支持,并且 EFI 分区未被破坏。

6. 可能需要重装系统

如果以上方法都无法解决问题,并且数据有备份,考虑重装 Rocky Linux 系统。

其他诊断建议

如果以上步骤仍无法解决问题,请提供更多详细信息:

  1. 系统是 BIOS 还是 UEFI 模式?
  2. 是否进行了磁盘操作(如调整分区或更换磁盘)?
  3. 是否最近执行了内核更新或系统升级?

提供这些信息后,我可以进一步帮你排查问题。

 

grub2-install --efi-directory=/boot/efi 显示installing for i386-pc platform gurb2-isatall: error: install device isn't specified

 

出现 grub2-install: error: install device isn't specified 错误,说明在执行 grub2-install 命令时,没有正确指定目标设备或存在配置问题。以下是解决方法和逐步操作:

问题原因

  1. UEFI 系统中,如果没有正确指定 EFI 分区或 EFI 引导设备,GRUB 无法安装。
  2. BIOS 系统中,需要明确指定目标磁盘(如 /dev/sda)。
  3. 可能缺少必要的挂载点(如 /boot 或 /boot/efi 未挂载)。

解决方法

1. 确认系统是 BIOS 还是 UEFI

通过以下命令确认系统是 BIOS 还是 UEFI 模式:

ls /sys/firmware/efi

  • 如果存在 /sys/firmware/efi 目录,则系统是 UEFI 模式
  • 如果不存在,则是 BIOS 模式

根据模式不同,选择以下对应的解决步骤。

2. 对于 UEFI 模式

步骤 1:确认 EFI 分区是否挂载

  1. 检查 EFI 分区是否挂载:

    ls /boot/efi

    • 如果是空的,说明 EFI 分区未挂载。
    • 找到 EFI 分区(通常是 FAT32 文件系统,大小约 100~512 MB),通过以下命令确认:

      lsblk -f

      查找类似 vfat 的文件系统,通常是 /dev/sda1 或 /dev/nvme0n1p1。

  2. 挂载 EFI 分区:
    假设 EFI 分区是 /dev/sda1(根据实际情况调整),运行以下命令:

    mount /dev/sda1 /boot/efi

步骤 2:重新安装 GRUB

  1. 安装 GRUB 到 EFI 分区:

    grub2-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=rocky

    说明:

    • --target=x86_64-efi:指定安装 UEFI 模式的 GRUB。
    • --efi-directory=/boot/efi:指定 EFI 分区挂载点。
    • --bootloader-id=rocky:为 GRUB 启动项命名(可以自定义)。
  2. 生成 GRUB 配置文件:

    grub2-mkconfig -o /boot/grub2/grub.cfg

  3. 重启系统:

    reboot

3. 对于 BIOS 模式

步骤 1:确认目标磁盘

  1. 使用 lsblk 查看系统磁盘:

    lsblk

    找到系统磁盘(例如 /dev/sda 或 /dev/vda),不要指定分区(只使用磁盘名)。

步骤 2:重新安装 GRUB

  1. 安装 GRUB 到目标磁盘:

    grub2-install /dev/sda

    说明:

    • /dev/sda 是目标磁盘,请根据实际情况调整。
    • 如果系统有多个磁盘,确保选择正确的系统安装磁盘。
  2. 生成 GRUB 配置文件:

    grub2-mkconfig -o /boot/grub2/grub.cfg

  3. 重启系统:

    reboot