我有 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