Pop OS:systemd-bootはWindowsを検出できません。

Pop OS:systemd-bootはWindowsを検出できません。

私はデュアルブートでWindowsとLinuxをインストールする古典的な手順に従いました。まず、WindowsをUEFIモードでインストールし、起動可能なPopOSキーを使用してデフォルトのWindowsパーティションのサイズを変更しました。残りのスペースにLinuxパーティションと/boot/efi500MBのパーティションを作成しました。

私の問題は、systemd-bootWindowsブートローダが検出されないようです。

システム起動メニューを表示すると、可能な起動オプションとしてPopOSのみが一覧表示されます。ただし、問題なくBIOSメニューからWindowsを起動できます。

実行すると、bootctl次の結果が表示されます。

System:
     Firmware: UEFI 2.70 (American Megatrends 5.14)
  Secure Boot: disabled
   Setup Mode: setup

Current Boot Loader:
      Product: systemd-boot 245.4-4ubuntu3.1pop0~1590695674~20.04~eaac747
     Features: ✓ Boot counting
               ✓ Menu timeout control
               ✓ One-shot menu timeout control
               ✓ Default entry control
               ✓ One-shot entry control
               ✓ Support for XBOOTLDR partition
               ✓ Support for passing random seed to OS
               ✓ Boot loader sets ESP partition information
          ESP: /dev/disk/by-partuuid/585919b8-7f1b-4f94-a0b1-6ff195d07515
         File: └─/EFI/SYSTEMD/SYSTEMD-BOOTX64.EFI

Random Seed:
 Passed to OS: yes
 System Token: set
       Exists: yes

Available Boot Loaders on ESP:
          ESP: /boot/efi (/dev/disk/by-partuuid/585919b8-7f1b-4f94-a0b1-6ff195d07515)
         File: └─/EFI/systemd/systemd-bootx64.efi (systemd-boot 245.4-4ubuntu3.1pop0~1590695>
         File: └─/EFI/BOOT/BOOTX64.EFI (systemd-boot 245.4-4ubuntu3.1pop0~1590695674~20.04~e>

Boot Loaders Listed in EFI Variables:
        Title: Linux Boot Manager
           ID: 0x0003
       Status: active, boot-order
    Partition: /dev/disk/by-partuuid/585919b8-7f1b-4f94-a0b1-6ff195d07515
         File: └─/EFI/SYSTEMD/SYSTEMD-BOOTX64.EFI

        Title: Windows Boot Manager
           ID: 0x0000
       Status: active, boot-order
    Partition: /dev/disk/by-partuuid/42f0d8f0-13e0-41cf-bc36-ac80dccc54fd
         File: └─/EFI/MICROSOFT/BOOT/BOOTMGFW.EFI

        Title: UEFI OS
           ID: 0x0009
       Status: active, boot-order
    Partition: /dev/disk/by-partuuid/585919b8-7f1b-4f94-a0b1-6ff195d07515
         File: └─/EFI/BOOT/BOOTX64.EFI

Boot Loader Entries:
        $BOOT: /boot/efi (/dev/disk/by-partuuid/585919b8-7f1b-4f94-a0b1-6ff195d07515)

Default Boot Loader Entry:
        title: Pop!_OS
           id: Pop_OS-current.conf
       source: /boot/efi/loader/entries/Pop_OS-current.conf
        linux: /EFI/Pop_OS-3ce60b75-530a-4cad-9e80-5156a8e6bb56/vmlinuz.efi
       initrd: /EFI/Pop_OS-3ce60b75-530a-4cad-9e80-5156a8e6bb56/initrd.img
      options: root=UUID=3ce60b75-530a-4cad-9e80-5156a8e6bb56 ro quiet loglevel=0 systemd.sh>

Windows Boot Manager以下の項目を参照してくださいBoot Loaders Listed in EFI Variables。 systemd-bootはどういうわけか私のWindowsパーティションが存在することを知っていますが、起動可能であることを検出できないようです。

(走ってもbootctl install何も変わらないようです)

私の/boot/efi/ディレクトリは次のとおりです。

/boot/efi/EFI
├── BOOT
│   └── BOOTX64.EFI
├── Linux
├── Pop_OS-3ce60b75-530a-4cad-9e80-5156a8e6bb56
│   ├── cmdline
│   ├── initrd.img
│   └── vmlinuz.efi
└── systemd
    └── systemd-bootx64.efi
/boot/efi/loader/entries/
└── Pop_OS-current.conf

したがって、Windows ブートローダで入力する必要があるディレクトリは何らかの方法で入力されません。

この問題を診断し、Windowsをsystemd-bootの起動オプションとして追加するにはどうすればよいですか?

答え1

この方法はマルチドライブシステムでのみテストされました。

Windows EFIパーティションの検索

lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT

パスの作成とWindows EFIパーティションのマウント

sudo mkdir /mnt/win-efi
sudo mount /dev/sdb1 /mnt/win-efi

Windows EFIの内容をPOP EFIにコピーします。

sudo cp -r /mnt/win-efi/EFI/Microsoft /boot/efi/EFI

ブートローダにタイマーを追加

sudo micro /boot/efi/loader/loader.conf

loader.confに新しい行timeout 5または秒数を追加します。

再起動

sudo reboot

答え2

これはうまくいきません。

インストーラは、オペレーティングシステムをインストールするときにbootctl install正しいパラメータを呼び出す必要があり、インストール後に変更することはできません。

pop osが誤って設定されているため、インストール時にbootctlへのパーティションパスを提供しないため、systemdbootはWindowsパーティションを検出できません。

システムの起動を忘れ、代わりに grub を使用する必要があります。

答え3

rEFIndのインストール

さらなる調査の最後に発見したものこのRedditトピック同じ問題を持つ人から来ました。このスレッドと他のスレッドのいくつかのポスターでは、代わりにインストールを提案しましたrEFInd

rEFIndはインストールが非常に簡単で、Windowsパーティションをすぐに検出しました。

私は私が推奨する次のYoutubeチュートリアルに従いました。

答え4

uefiモードで利用できるかどうかはわかりません。 2010年のノートブックにレガシーモードをインストールするときも同じ問題が発生しました。 os-proberをインストールして解決しました。次に「sudo os-prober」と入力すると、インストールされているWindows 10が返されます。

その後、「sudo update-grub」と入力しました。

ついにWindows 10が見つかりました。

これが他の人に役立つことを願っています。

関連情報