web-dev-qa-db-ja.com

古いOSインストールを正しく指すように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]

[1]でupdate-grubを実行してみました。これにより、grubメニューに[3]と[4]の追加エントリが追加されました。しかし、これら2つのうちの1つを選択すると、次のエラーが発生します。

error: no such device: B6C5-4C11.
error: disk 'hd3,gpt2' not found.

SSD0から起動しようとすると、[3]と[4]で起動できても[1]と[2]では起動できない古いgrubメニューが表示されます。

私が達成しようとしていることは、NVMe0から起動した後、1つのGRUBメニューから[1]、[2]、[3]、および[4]に入ることができることです。

ここにスケッチがあります

a sketch of the disk/OS layout

更新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/sde4にあり、UUIDE23CCF783CCF45EFが設定されています。
  2. 古いUbuntuは/dev/sdf1にあり、UUID664b5f90-b52c-4f6b-b2b7-89933eb7bc27を使用しています

次に、エラーをスローするupdate-grubによって生成された2つのエントリを示します。

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

UEFIモードでは、4つのOSがすべて内蔵ドライブにインストールされます。 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行の長いレポートを出力します を生成します。

2
LizardMaster

テストの前に次のすべてを実行したため、この問題がどの時点で修正されたかはわかりません。

  1. 新しくインストールしたUbuntuでupdate-grubを実行します
  2. 古いUbuntuインストールでupdate-grubを実行
  3. BIOS設定を確認した
  4. 最新のBIOSをフラッシュ
  5. BIOS設定をリセット
  6. すべての設定をリセット前の状態に戻します(レガシーではなくUEFIなど)。

変更ログの唯一の項目が「Intelのセキュリティ問題のためにCPUマイクロコードを更新する」であるため、BIOSの更新が影響を与える理由がわかりません。だから私の推測は次のとおりです。ステップ2で問題が修正されました。

0
LizardMaster