我正在用Windows 10和PopOS使用grub2双引导笔记本电脑。
问题是grub没有显示OS选择菜单,而是转到grub。如何配置/安装grub2以自动显示选择菜单?
我可以手动加载Grub菜单,然后按预期运行,查看popOS、高级popOS、Windows、系统设置,甚至是我在/etc/grub.d/40_custom中配置的自定义“关机”菜单。
grub>set prefix=(hd0,gpt5)/boot/grub
grub>insmod normal
grub>normal当检查grub加载的值时,问题似乎是所有路径都指向第一个分区( windows引导加载程序),因此没有指向任何位置。
grub开头的路径如下:
cmdpath=(hd0,gpt1)
prefix=(hd0,gpt1)/boot/grub
root=hd0,gpt1gpt1是windows引导程序,所以我想它是在寻找它的配置,却找不到它。
我尝试重新安装grub包,重新安装grub,更新它,并运行ubuntu引导修复工具,这是各种有类似问题的在线线程推荐的(都是单独的):
sudo apt install --reinstall grub-common grub-efi-amd64-bin grub-efi-amd64-signed grub-efi-amd64 grub2-common
sudo grub-install /dev/sda
sudo update-grub2所有这些都成功了,但并没有改变任何事情。
我还检查了在/boot/efi/EFI/pop/grub.cfg中设置了正确的值:
search.fs_uuid 1672afd3-3d1c-462d-9284-1f0d6b1e07e9 root hd0,gpt5
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg我的分区布局(德文):
Festplatte /dev/sda: 256GB
Sektorgröße (logisch/physisch): 512B/4096B
Partitionstabelle: gpt
Disk-Flags:
Nummer Anfang Ende Größe Dateisystem Name Flags
1 1049kB 106MB 105MB fat32 EFI system partition boot, esp
2 106MB 123MB 16,8MB Microsoft reserved partition msftres
3 123MB 202GB 202GB ntfs Basic data partition msftdata
5 202GB 256GB 53,2GB ext4
4 256GB 256GB 537MB fat32 boot, esp我认为grub2在分区4中。
我的UEFI显示了3种引导选项,windows引导程序,grub作为ubuntu,以及引导grub的硬盘驱动器。
还禁用了安全启动,否则grub拒绝加载内核。
发布于 2020-12-10 16:42:24
显然,OP已经解决了他们的问题,但是对于任何仍然发现这个问题的人来说:
我遇到了一个非常类似的问题,我的$prefix变量指向错误的目录。我通过将grub.cfg文件移动到$prefix中定义的路径来解决这个问题。在pop-os上,路径是efi分区上的/EFI/ubuntu。
在引导系统上,将此命令输入终端:
sudo cp -r /boot/efi/EFI/pop /boot/efi/EFI/ubuntu或者另一种
sudo cp -r /boot/efi/grub /boot/efi/EFI/ubuntu这样做的目的是:
当grub启动时,它在定义路径($prefix)上搜索一个D7文件。在pop-os上,这个路径通常是从grub加载的分区上的/EFI/ubuntu。当您启动系统时,efi分区会自动挂载到/boot/efi。因此,用于grub的/与用于操作系统的/boot/efi/相同。将文件移动到/boot/efi/EFI/ubuntu使grub能够在路径/EFI/ubuntu中找到它。
我希望这是合理的。这正是我所理解的,我可能错了。
注意:当我在grub中执行ls -la /时,它将EFI文件夹显示为efi,这使我感到非常困惑。但显然grub并不那么在意资本化。
发布于 2020-10-22 17:36:24
好吧,我想出来了:
显然,我的UEFI不理解一个硬盘上的多个EFI分区,默认为Windows创建的分区,这可能是因为一个古老的ubuntu安装,在它上有一个grub。
对于任何发现这个问题的人来说,都有类似的问题:确保您正在引导的引导映像实际上是您想要的。为此,在grub中执行set并查看cmdline参数。它将告诉您启动了哪个分区。
https://askubuntu.com/questions/1284787
复制相似问题