流行作業系統:systemd-boot 無法檢測到 Windows
我已經按照經典程序在雙啟動中安裝 Windows 和 Linux。首先我以 UEFI 模式安裝 Windows,然後使用可啟動的 PopOS 密鑰調整主 Windows 分區的大小;
/boot/efi
我在剩餘空間中創建了一個 Linux 分區以及一個 500MB 的分區。我的問題是,
systemd-boot
似乎無法檢測到 Windows 引導載入程序。當我顯示 systemd-boot 菜單時,它僅將 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?
試試這個方法只在多驅動系統上測試過
查找 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
它行不通
安裝程序在安裝作業系統時需要
bootctl install
使用正確的參數呼叫,安裝後您無法再更改它pop os 配置錯誤,因此在安裝時它不會為 bootctl 提供分區路徑,並且 systemdboot 無法檢測到 windows 分區
您應該忘記 systemd 啟動並改用 grub