我在双引导系统中安装了 Pop-OS。
以前,我的 EFI 分区约为 250mb。 Pop Installer 告诉我它太小了。因此,我没有调整大小和移动(由于数据丢失和 Windows 无法启动的可能性),而是删除了旧的 EFI 分区并创建了一个新的 EFI 分区用于安装。
输出efibootmgr
:
BootCurrent: 0006
Timeout: 1 seconds
BootOrder: 0006,0007,0002
Boot0002* Windows Boot Manager
Boot0006* Pop!_OS 20.04 LTS
Boot0007* UEFI OS
输出bootctl
:
System:
Firmware: UEFI 2.70 (American Megatrends 5.13)
Secure Boot: disabled
Setup Mode: user
Current Boot Loader:
Product: systemd-boot 245.4-4ubuntu3.6pop0~1617377648~20.04~eafddeb
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/06919b6c-bed1-461e-9b6d-04dc9597fd38
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/06919b6c-bed1-461e-9b6d-04dc9597fd38)
File: └─/EFI/systemd/systemd-bootx64.efi (systemd-boot 245.4-4ubuntu3.6pop0~1617377648~20.04~eafddeb)
File: └─/EFI/BOOT/BOOTX64.EFI (systemd-boot 245.4-4ubuntu3.6pop0~1617377648~20.04~eafddeb)
Boot Loaders Listed in EFI Variables:
Title: Pop!_OS 20.04 LTS
ID: 0x0006
Status: active, boot-order
Partition: /dev/disk/by-partuuid/06919b6c-bed1-461e-9b6d-04dc9597fd38
File: └─/EFI/SYSTEMD/SYSTEMD-BOOTX64.EFI
Title: UEFI OS
ID: 0x0007
Status: active, boot-order
Partition: /dev/disk/by-partuuid/06919b6c-bed1-461e-9b6d-04dc9597fd38
File: └─/EFI/BOOT/BOOTX64.EFI
Boot Loader Entries:
$BOOT: /boot/efi (/dev/disk/by-partuuid/06919b6c-bed1-461e-9b6d-04dc9597fd38)
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-39f0e06d-54c4-4fd3-af74-605fcd37bc55/vmlinuz.efi
initrd: /EFI/Pop_OS-39f0e06d-54c4-4fd3-af74-605fcd37bc55/initrd.img
options: root=UUID=39f0e06d-54c4-4fd3-af74-605fcd37bc55 ro quiet loglevel=0 systemd.show_status=false splash
EFI 中没有 Windows 变量。我将 systemd-boot 的超时时间增加到 5 秒,现在我明白了流行操作系统和启动至系统固件。
这答案需要 Windows EFI 分区,我已将其删除。有没有办法让 Windows Entry 进入 systemd-boot ?
Gparted(如果重要的话):
答案1
我最近遇到了一些类似的问题。如果您的 EFI 分区数据无法恢复,您可以启动 Windows 安装介质、Windows 10 光盘或闪存驱动器赢10图片闪烁。启动到安装介质后:
- 按Shift+F10打开命令提示符,然后执行以下命令:
diskpart
list disk
sel disk #
(将 # 替换为包含新 ESP/EFI 分区的磁盘号)list part
sel part #
(将 # 替换为 fat32 EFI 分区号)assign letter=s
list vol
记下 Windows 操作系统已分配的驱动器盘符。exit
bcdboot X:\windows /s s:
(将X替换为windows安装对应的字母)
现在您可以将 Windows 条目添加到/boot/efi/loader/loader.conf手动并添加超时以延迟启动到默认操作系统并让自己有时间在启动过程中进行选择。
- 启动进入 Pop!_OS
- 打开终端
- 跑步
sudo nano /boot/efi/loader/entries/windows.conf
- 将以下内容粘贴到文档中:
title Windows 10
efi /EFI/Microsoft/Boot/bootmgfw.efi
#you may need to search for your bootmgfw.efi if it's not here
- 保存并退出
- 跑步
sudo nano /boot/efi/loader/loader.conf
- 添加此行
timeout 20
(以秒为单位输入任何值) - 添加此行以防止 Windows 重复条目
auto-windows 0
- (可选)通过添加另一行并使用其标题来设置默认操作系统
default "Windows 10"
或default "Pop!_OS"
- 保存并退出
完毕!
答案2
从这个答案在askUbuntu上, 我用了测试盘恢复已删除的EFI分区中的数据。
/boot/efi/EFI
我从已删除的 EFI 分区中复制了 Microsoft 文件夹,并将其复制到新的 efi 分区中的相同目标。瞧! Windows 启动管理器出现在 systemd 启动菜单中。
答案3
就我而言,非常出乎意料的是,我将SATA磁盘更改为NVME磁盘 - 必须完全重新安装Windows,这几天所有数据都在云中很好 - 但我没有注意到它将启动文件写入了efi文件夹第二个 Sata SSD 来自早期的 Windows 使用。重新创建 Windows 环境没有问题,直到我决定在第二个磁盘上安装 Ubuntu。为了做好准备,我使用 LiveUSB 启动并使用 gparted 完全擦除了 /dev/sdb 并为Ubuntu准备分区。重启电脑却出现找不到操作系统的错误。我再次使用 liveUSB gparted 进行检查并安装 EFI,结果发现不再有带有数据的 EFI 分区。nvm 磁盘上的分区是空的。有点绝望,我寻找解决方案,找到了这个页面。有信心,我再次做了一个 Ubuntu LiveUSB gparted,并在 nvme 磁盘上为 1500Mb EFI 分区创建了空间,gparted 优雅地允许您管理我设置引导和系统的标志,并在 nvme 开始时从 100Mb 分区中删除这些标志磁盘。使用 Windows 恢复 USB 重新启动;选择修复选项,输入命令提示符并执行上述所有命令,直到并包括 bcdboot(不要忘记将 X 替换为实际的 Windows 分区驱动器号)- 重新启动并启动!