启动Fedora40系统,如果开机后出现这样的黑色屏幕,通常是GRUB问题,需要修复Grub引导。
通过下边操作,使用 Live CD 进入系统,并运用 chroot 命令修复这个问题。下面是修复步骤:
- 使用 Fedora Live CD 启动:将 Fedora Live CD 插入电脑并从中启动,不需要进行安装。
- 打开一个终端:一般情况下,你可以在 Live 系统的环境里找到一个终端应用程序。
- 确定你的 Fedora 安装分区:使用
lsblk命令查看你的分区结构。假设我的 Fedora40 安装的系统分区如下:
`/dev/sda1` /boot/efi
`/dev/sda2` /boot
`/dev/sda3` /
需先确定电脑系统是 UEFI模式,大部分系统都是UEFI模式
- 挂载系统分区:你需要将 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
- 进入chroot环境
# 进入待修改的系统, chroot环境是gurb已经被损坏的Fedora40系统
sudo chroot /mnt/fedora
# 运行以下命令,判断系统是否UEFI模式, 如果返回目录,说明是UEFI模式
ls /sys/firmware/efi
- 重新安装和配置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对应出错,检查后按下边流程修改,一一对应
- 修改/etc/fstab文件:
/etc/fstab文件中保存着分区的uuid,使用记事本打开,类似这样的
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
获得的结果是这样的
以上命令获得当前系统分区的UUDI标识,按照 sda + 数字 ,或者依据分区的标签如/data1,/data2..,检查/etc/fstab文件中的UUID标识是否和新系统一一对应。
注意 /etc/fstab中的 none swap 行的UUID,是对应TYPE=‘SWAP’类型的行
如果分区表UUID是旧的,需要替换成新系统的UUID。
当分区时给每个分区加上label,此时就容易区分。
- 重启电脑:
此时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