Nar*_*aos 7 dual-boot windows uefi systemd-boot pop-os
我已经按照经典程序在双启动中安装 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>
Run Code Online (Sandbox Code Playgroud)
注意 下的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
Run Code Online (Sandbox Code Playgroud)
/boot/efi/loader/entries/
??? Pop_OS-current.conf
Run Code Online (Sandbox Code Playgroud)
所以应该用 Windows 引导加载程序填充的目录以某种方式没有。
如何诊断此问题,并将 Windows 添加为 systemd-boot 的启动选项?
小智 16
尝试 此方法仅在多驱动器系统上进行过测试
查找 Windows EFI 分区
lsblk -o NAME,FSTYPE,SIZE,MOUNTPOINT
Run Code Online (Sandbox Code Playgroud)
创建路径并挂载 Windows EFI 分区
sudo mkdir /mnt/win-efi
sudo mount /dev/sdb1 /mnt/win-efi
Run Code Online (Sandbox Code Playgroud)
将 Windows EFI 的内容复制到 POP EFI
sudo cp -r /mnt/win-efi/EFI/Microsoft /boot/efi/EFI
Run Code Online (Sandbox Code Playgroud)
将计时器添加到引导加载程序
sudo micro /boot/efi/loader/loader.conf
Run Code Online (Sandbox Code Playgroud)
并向 loader.conf 添加新行timeout 5
或任意秒数
重启
sudo reboot
Run Code Online (Sandbox Code Playgroud)
经过进一步的研究,我发现这个 reddit 帖子来自有相同问题的人。此线程和其他线程中的多张海报建议rEFInd
改为安装。
rEFInd 安装起来非常简单,并立即检测到我的 Windows 分区。
我遵循了这些 Youtube 教程,我推荐这些教程:
归档时间: |
|
查看次数: |
8425 次 |
最近记录: |