Uefi

刪除了 Windows EFI 分區,怎麼辦?

  • October 3, 2021

我在雙引導系統中安裝了 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 秒,現在我看到Pop OsBoot to System Firmware

這個答案需要我刪除的 Windows EFI 分區。有沒有辦法在 systemd-boot 中獲取 Windows 條目?

Gparted(如果重要): Gparted

askUbuntu 上的這個答案中,我使用TestDisk來恢復已刪除的 EFI 分區中的數據。

我從已刪除的 EFI 分區中複製了 Microsoft 文件夾,/boot/efi/EFI並將其複製到相同的目的地,但在新的 efi 分區中。瞧!Windows Boot Manger 出現在 systemd-boot 菜單中。

我最近遇到了一些類似的問題。如果您的 EFI 分區數據不可恢復,您可以引導至 Windows 安裝媒體、Windows 10 光碟或快閃記憶體驅動器,其中已閃爍Win 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:(用windows安裝對應的字母替換X)

現在,您可以手動將 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"
  • 保存並退出

完畢!

引用自:https://unix.stackexchange.com/questions/671607