更新 grub 菜单项以正确指向旧的操作系统安装

更新 grub 菜单项以正确指向旧的操作系统安装

我最近在系统中添加了一个 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
  1. 旧版 Windows 使用/dev/sde4UUIDE23CCF783CCF45EF
  2. 旧版 Ubuntu 使用/dev/sdf1UUID664b5f90-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

生成摘要输出一份 2.1k 行的报告

答案1

我不确定这个问题在什么时候被修复,因为我在测试之前做了以下所有事情。

  1. update-grub在新安装的 Ubuntu 上运行
  2. update-grub在旧版 Ubuntu 安装上运行
  3. 检查 BIOS 设置
  4. 刷新最新的 bios
  5. 重置 BIOS 设置
  6. 将所有设置恢复为重置之前的状态(UEFI 而不是传统设置等)。

我不明白 BIOS 更新为何会产生影响,因为更新日志中唯一的项目是:“更新 CPU 微码以解决英特尔安全问题。”所以我最好的猜测是:步骤 2 解决了这个问题。

相关内容