![更新 grub 菜单项以正确指向旧的操作系统安装](https://linux22.com/image/1012353/%E6%9B%B4%E6%96%B0%20grub%20%E8%8F%9C%E5%8D%95%E9%A1%B9%E4%BB%A5%E6%AD%A3%E7%A1%AE%E6%8C%87%E5%90%91%E6%97%A7%E7%9A%84%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%AE%89%E8%A3%85.png)
我最近在系统中添加了一个 NVMe SSD。我在这个新的 NVMe SSD 上安装了 Windows 和 Ubuntu。我想保留之前安装的 Ubuntu。
NVMe0 - New Ubuntu 18.04 (works) [1]
- New windows 10 (works) [2]
SSD0 - Ubuntu 18.04 (old) [3]
SSD1 - Windows 10 (old) [4]
我尝试update-grub
在 [1] 上运行。这导致 grub 菜单有 [3] 和 [4] 的附加条目。但是,当我选择这两个中的一个时,我收到以下错误:
error: no such device: B6C5-4C11.
error: disk 'hd3,gpt2' not found.
如果我尝试从 SSD0 启动,我会看到旧的 grub 菜单,其中我可以启动到 [3] 和 [4],但不能启动到 [1] 和 [2]。
我想要实现的目标是:启动到 NVMe0 后,能够从一个 grub 菜单进入 [1]、[2]、[3] 和 [4]。
这是一个草图
更新 1
NVMe0 EFI 分区的 UUID:A85E-D029
内容/etc/fstab
:
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/nvme0n1p5 during installation
UUID=0eb898d2-f93b-490f-b7f0-40d1ff6cacce / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/nvme0n1p2 during installation
UUID=A85E-D029 /boot/efi vfat umask=0077 0 1
/swapfile none swap sw 0 0
- 旧版 Windows 使用
/dev/sde4
UUIDE23CCF783CCF45EF。 - 旧版 Ubuntu 使用
/dev/sdf1
UUID664b5f90-b52c-4f6b-b2b7-89933eb7bc27
update-grub
以下是引发错误的两个条目。
menuentry 'Windows Boot Manager (on /dev/sde2)' --class windows --class os $menuentry_id_option 'osprober-efi-B6C5-4C11' {
insmod part_gpt
insmod fat
set root='hd4,gpt2'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd4,gpt2 --hint-efi=hd4,gpt2 --hint-baremetal=ahci4,gpt2 B6C5-4C11
else
search --no-floppy --fs-uuid --set=root B6C5-4C11
fi
chainloader /efi/Microsoft/Boot/bootmgfw.efi
}
menuentry 'Ubuntu 18.04.2 LTS (18.04) (on /dev/sdf1)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-664b5f90-b52c-4f6b-b2b7-89933eb7bc27' {
insmod part_gpt
insmod ext2
set root='hd5,gpt1'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd5,gpt1 --hint-efi=hd5,gpt1 --hint-baremetal=ahci5,gpt1 664b5f90-b52c-4f6b-b2b7-89933eb7bc27
else
search --no-floppy --fs-uuid --set=root 664b5f90-b52c-4f6b-b2b7-89933eb7bc27
fi
linux /boot/vmlinuz-4.15.0-46-generic root=UUID=664b5f90-b52c-4f6b-b2b7-89933eb7bc27 ro quiet splash $vt_handoff
initrd /boot/initrd.img-4.15.0-46-generic
}
更新 2
所有 4 个操作系统均以 UEFI 模式安装在内部驱动器上。输出update-grub
:
Sourcing file `/etc/default/grub'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.18.0-16-generic
Found initrd image: /boot/initrd.img-4.18.0-16-generic
Found linux image: /boot/vmlinuz-4.18.0-15-generic
Found initrd image: /boot/initrd.img-4.18.0-15-generic
Found Windows Boot Manager on /dev/nvme0n1p2@/EFI/Microsoft/Boot/bootmgfw.efi
Found Windows Boot Manager on /dev/sde2@/efi/Microsoft/Boot/bootmgfw.efi
Found Ubuntu 18.04.2 LTS (18.04) on /dev/sdf1
Adding boot menu entry for EFI firmware configuration
done
更新 3
我安装了启动修复。
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair
答案1
我不确定这个问题在什么时候被修复,因为我在测试之前做了以下所有事情。
update-grub
在新安装的 Ubuntu 上运行update-grub
在旧版 Ubuntu 安装上运行- 检查 BIOS 设置
- 刷新最新的 bios
- 重置 BIOS 设置
- 将所有设置恢复为重置之前的状态(UEFI 而不是传统设置等)。
我不明白 BIOS 更新为何会产生影响,因为更新日志中唯一的项目是:“更新 CPU 微码以解决英特尔安全问题。”所以我最好的猜测是:步骤 2 解决了这个问题。