Windows/Arch Linux 双启动时 Windows 引导加载程序损坏

Windows/Arch Linux 双启动时 Windows 引导加载程序损坏

我有 2 个 nvme 驱动器,一个装有 Windows 10,另一个装有 Arch Linux。我原以为这两个操作系统的引导加载程序都在各自的磁盘上,但事后看来并非如此。

今天我查看了 linux 磁盘的 efi 分区,发现一个 windows 条目。我认为这是多余的,想删除它。本着备份的精神,我复制了/boot/EFI/Microsoft目录。

现在,重启后,windows 启动项从 motherbother 的启动菜单中消失了。所以我回到 Arch 并放回了备份目录。但再次重启后,windows 启动项没有重新出现。我尝试禁用快速启动,但没有帮助。

我可以做些什么来解决这个问题,最好是从 Linux 开始?如果需要的话,还可以下载 Windows 磁盘映像。

这是 esp 的磁盘设置和内容。

❯❯❯ sudo fdisk -l /dev/nvme0n1
Disk /dev/nvme0n1: 465.78 GiB, 500107862016 bytes, 976773168 sectors
Disk model: Samsung SSD 960 EVO 500GB               
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 01DE889D-9319-4179-920D-4EB5E1A08F94

Device         Start       End   Sectors   Size Type
/dev/nvme0n1p1  2048     34815     32768    16M Microsoft reserved
/dev/nvme0n1p2 34816 976773119 976738304 465.8G Microsoft basic data

❯❯❯ sudo fdisk -l /dev/nvme1n1
Disk /dev/nvme1n1: 465.78 GiB, 500107862016 bytes, 976773168 sectors
Disk model: Samsung SSD 970 EVO 500GB               
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 270C4D3C-BF3C-4DF1-A834-C03B8BBB6692

Device             Start       End   Sectors   Size Type
/dev/nvme1n1p1      2048   1050623   1048576   512M EFI System
/dev/nvme1n1p2   1050624  34605055  33554432    16G Linux swap
/dev/nvme1n1p3  34605056 708337678 673732623 321.3G Linux filesystem
/dev/nvme1n1p4 708339712 976773134 268433423   128G Linux filesystem

❯❯❯ tree -L 4 /boot
/boot
├── e0dbb6ba929948f599abce57c8e2eb65
├── EFI
│   ├── BOOT
│   │   └── BOOTX64.EFI
│   ├── Microsoft
│   │   ├── Boot
│   │   │   ├── BCD
│   │   │   ├── BCD.LOG
│   │   │   ├── BCD.LOG1
│   │   │   ├── BCD.LOG2
│   │   │   ├── bg-BG
│   │   │   ├── bootmgfw.efi
│   │   │   ├── bootmgr.efi
│   │   │   ├── BOOTSTAT.DAT
│   │   │   ├── boot.stl
│   │   │   ├── cs-CZ
│   │   │   ├── da-DK
│   │   │   ├── de-DE
│   │   │   ├── el-GR
│   │   │   ├── en-GB
│   │   │   ├── en-US
│   │   │   ├── es-ES
│   │   │   ├── es-MX
│   │   │   ├── et-EE
│   │   │   ├── fi-FI
│   │   │   ├── Fonts
│   │   │   ├── fr-CA
│   │   │   ├── fr-FR
│   │   │   ├── hr-HR
│   │   │   ├── hu-HU
│   │   │   ├── it-IT
│   │   │   ├── ja-JP
│   │   │   ├── kd_02_10df.dll
│   │   │   ├── kd_02_10ec.dll
│   │   │   ├── kd_02_1137.dll
│   │   │   ├── kd_02_14e4.dll
│   │   │   ├── kd_02_15b3.dll
│   │   │   ├── kd_02_1969.dll
│   │   │   ├── kd_02_19a2.dll
│   │   │   ├── kd_02_1af4.dll
│   │   │   ├── kd_02_8086.dll
│   │   │   ├── kd_07_1415.dll
│   │   │   ├── kd_0C_8086.dll
│   │   │   ├── kdstub.dll
│   │   │   ├── ko-KR
│   │   │   ├── lt-LT
│   │   │   ├── lv-LV
│   │   │   ├── memtest.efi
│   │   │   ├── nb-NO
│   │   │   ├── nl-NL
│   │   │   ├── pl-PL
│   │   │   ├── pt-BR
│   │   │   ├── pt-PT
│   │   │   ├── qps-ploc
│   │   │   ├── Resources
│   │   │   ├── ro-RO
│   │   │   ├── ru-RU
│   │   │   ├── sk-SK
│   │   │   ├── sl-SI
│   │   │   ├── sr-Latn-RS
│   │   │   ├── sv-SE
│   │   │   ├── tr-TR
│   │   │   ├── uk-UA
│   │   │   ├── winsipolicy.p7b
│   │   │   ├── zh-CN
│   │   │   └── zh-TW
│   │   └── Recovery
│   │       ├── BCD
│   │       ├── BCD.LOG
│   │       ├── BCD.LOG1
│   │       └── BCD.LOG2
│   └── systemd
│       └── systemd-bootx64.efi
├── initramfs-linux-fallback.img
├── initramfs-linux.img
├── intel-ucode.img
├── loader
│   ├── entries
│   │   └── arch.conf
│   ├── loader.conf
│   └── random-seed
├── System Volume Information
│   ├── AadRecoveryPasswordDelete
│   └── ClientRecoveryPasswordRotation
└── vmlinuz-linux

答案1

我对此不是 100% 确定,但似乎将 Windows 启动项的备份放回去确实有效。但它最初并没有出现,可能是因为主板引导加载程序没有重新加载/重新扫描可用的启动项。不确定是什么原因导致它重新加载/重新扫描,但几次重启后,该条目出现了。

还设法在 Windows 磁盘上创建一个新的启动分区,专门用于通过 Windows 10 磁盘映像启动 Windows。

> diskpart 
DISKPART> sel disk WINDOWS_DISK
DISKPART> sel part WINDOWS_MAIN_PARTITION
DISKPART> shrink desired=512 
DISKPART> create partition efi size=512
DISKPART> format quick fs=fat32
DISKPART> assign letter=s
DISKPART> exit

> bcdboot X:\windows /s S:
where X is the windows volume letter

更多详情请点击此处https://www.tenforums.com/installation-upgrade/52837-moving-recreating-efi-partition-post698505.html#post698505

相关内容