Linux 和 Windows 双系统下的 grub 引导修复

loskyertt Unknown

1.出现的问题

如下图所示:

引导出错.jpg
引导出错.jpg

提示找不到/efi/Microsoft/Boot/bootmgfw.efino such device: 4458-2764。后面这一串数据其实是Windows引导分区的UUID。一般情况下是因为重装系统,导致UUID改变了,但是 Linux 下的 Grub 引导并没有进行修改,这时候是需要手动修改的。

2.解决方案

首先需要知道 Windows 的引导分区是否存在:

1
lsblk

或者使用:

1
sudo fdisk -l

显示的信息更详细。

输出:

1
2
3
4
5
6
7
8
9
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
nvme1n1 259:0 0 476.9G 0 disk
├─nvme1n1p1 259:1 0 300M 0 part
├─nvme1n1p2 259:2 0 16M 0 part
├─nvme1n1p3 259:3 0 100G 0 part
└─nvme1n1p4 259:4 0 376.6G 0 part
nvme0n1 259:5 0 238.5G 0 disk
├─nvme0n1p1 259:6 0 301M 0 part /boot/efi
└─nvme0n1p2 259:7 0 238.2G 0 part /

根据自己电脑磁盘情况查找,我的是nvme1n1p1(一般都是300M的那个分区)。然后记住这个分区名。

查看分区UUID

1
sudo blkid /dev/nvme1n1p1

输出:

1
/dev/nvme1n1p1: UUID="9252-7D2A" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="c9ce23fc-7bde-40a9-8cce-8da0df9079cb"

把这个UUID记下,我的这里是9252-7D2A

打开并编辑/boot/grub/grub.cfg文件:

1
sudo nano /boot/grub/grub.cfg

找到这样的一个内容:

1
2
3
4
5
menuentry 'Windows Boot Manager (on /dev/nvme0n1p1)' --class windows --class os $menuentry_id_option 'osprober-efi-4458-2764>
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root 9252-7D2A
chainloader /efi/Microsoft/Boot/bootmgfw.efi

--set=root后面的UUID改为你自己电脑的,然后重启电脑就行了。

  • Title: Linux 和 Windows 双系统下的 grub 引导修复
  • Author: loskyertt
  • Created at : 2024-10-28 21:53:23
  • Updated at : 2024-12-07 13:38:21
  • Link: https://redefine.ohevan.com/2024/10/28/Grub引导修复/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments
On this page
Linux 和 Windows 双系统下的 grub 引导修复