Fedora40重新安装GRUB和生成GRUB配置文件

1,046 阅读4分钟

启动Fedora40系统,如果开机后出现这样的黑色屏幕,通常是GRUB问题,需要修复Grub引导。

image.png

通过下边操作,使用 Live CD 进入系统,并运用 chroot 命令修复这个问题。下面是修复步骤:

  1. 使用 Fedora Live CD 启动:将 Fedora Live CD 插入电脑并从中启动,不需要进行安装。
  2. 打开一个终端:一般情况下,你可以在 Live 系统的环境里找到一个终端应用程序。
  3. 确定你的 Fedora 安装分区:使用 lsblk 命令查看你的分区结构。假设我的 Fedora40 安装的系统分区如下:
 `/dev/sda1`  /boot/efi
 `/dev/sda2`  /boot
 `/dev/sda3`  /

需先确定电脑系统是 UEFI模式,大部分系统都是UEFI模式

  1. 挂载系统分区:你需要将 Fedora 系统分区挂载到一个目录上,以下示例使用 /mnt/fedora 作为根挂载点
sudo mkdir /mnt/fedora
sudo mount /dev/sda3 /mnt/fedora

sudo mount /dev/sda2 /mnt/fedora/boot
sudo mount /dev/sda1 /mnt/fedora/boot/efi

为让`chroot` 环境运行得像一个正常的环境,你需要挂载一些额外的虚拟文件系统:(不挂载系统会无法联网)

sudo mount --bind /dev /mnt/fedora/dev
sudo mount --bind /proc /mnt/fedora/proc
sudo mount --bind /sys /mnt/fedora/sys
sudo mount --bind /run /mnt/fedora/run

我的系统hmoe、var是独立分区,此时也需要挂载上

sudo mount /dev/sda4 /mnt/fedora/var
sudo mount /dev/sda8 /mnt/fedora/home
  1. 进入chroot环境
    # 进入待修改的系统, chroot环境是gurb已经被损坏的Fedora40系统
    sudo chroot /mnt/fedora
    
    # 运行以下命令,判断系统是否UEFI模式, 如果返回目录,说明是UEFI模式
    ls /sys/firmware/efi  
  1. 重新安装和配置GRUB
# 安装以下内容:注意前边不要加sudo
dnf reinstall shim grub2-efi grub2-efi-x64-modules grub2-efi-x64-cdboot

# 在chroot环境中,不要用sudo
# 如果这样安装:sudo dnf reinstall shim grub2-efi grub2-efi-x64-modules grub2-efi-x64-cdboot
# 会提示出错: sudo:unable to allocate pty:No such device

# 继续运行(/boot/efi/EFI/fedora/ 这个路径不用变,不需要加上挂载路径) 
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

# 退出chroot环境
exit 

# 然后逐个卸载所有挂载: 
sudo umount /mnt/fedora/dev 
sudo umount /mnt/fedora/proc 
sudo umount /mnt/fedora/sys 
sudo umount /mnt/fedora/run 
sudo umount /mnt/fedora/boot/efi 
sudo umount /mnt/fedora/boot 
sudo umount /mnt/fedora reboot

恢复文件时,有可能造成分区表的UUID对应出错,检查后按下边流程修改,一一对应

  1. 修改/etc/fstab文件: /etc/fstab文件中保存着分区的uuid,使用记事本打开,类似这样的

image.png

UUID=f1682e9d-81ac-4b19-9524-b25d3777a636 / ext4 defaults 1 1 
UUID=8a7c85c1-a5e5-4758-948d-884a3b15802a /boot ext4 defaults 1 2 
UUID=F53E-D864 /boot/efi vfat umask=0077,shortname=winnt 0 2 
UUID=521ff072-7590-43f9-a651-aa1735509a1a /data1 ext4 defaults 1 2 
UUID=60ec3684-19c1-4bb1-a490-84bc0796b67a /data2 ext4 defaults 1 2 
UUID=5557e2dd-c74c-45d2-aa1a-e42f73dce3ca /data3 ext4 defaults 1 2 
UUID=539a41ce-7bc7-4ea9-bec0-5843a2c3bebe /home ext4 defaults 1 2 
UUID=a2d61198-8f46-4a82-b491-4277f8ed4a4a /var ext4 defaults 1 2 
UUID=ed81b52c-282e-47cb-a512-e5280e91fbf4 none swap defaults 0 0

这些UUID是上一个分区表的标识,如果和当前硬盘分区没有对应,系统就无法启动

# 获取当前系统分区信息
sudo blkid

获得的结果是这样的

image.png

以上命令获得当前系统分区的UUDI标识,按照 sda + 数字 ,或者依据分区的标签如/data1,/data2..,检查/etc/fstab文件中的UUID标识是否和新系统一一对应。

注意 /etc/fstab中的 none swap 行的UUID,是对应TYPE=‘SWAP’类型的行

image.png

如果分区表UUID是旧的,需要替换成新系统的UUID。

当分区时给每个分区加上label,此时就容易区分。

  1. 重启电脑
    此时Fedora40的grub引导修复,已经完成
# 逐个卸载所有挂载: 
sudo umount /mnt/fedora/dev 
sudo umount /mnt/fedora/proc 
sudo umount /mnt/fedora/sys 
sudo umount /mnt/fedora/run 
sudo umount /mnt/fedora/boot/efi 
sudo umount /mnt/fedora/boot 
sudo umount /mnt/fedora

reboot

感谢以下文章的作者:
Linux系统迁移(将配置好的系统安装到其它电脑上)
grub2-install fails