![双重启动:“无效分区表”并且无法再启动 Windows 10](https://linux22.com/image/1590336/%E5%8F%8C%E9%87%8D%E5%90%AF%E5%8A%A8%EF%BC%9A%E2%80%9C%E6%97%A0%E6%95%88%E5%88%86%E5%8C%BA%E8%A1%A8%E2%80%9D%E5%B9%B6%E4%B8%94%E6%97%A0%E6%B3%95%E5%86%8D%E5%90%AF%E5%8A%A8%20Windows%2010.png)
我最近重新设置了我的系统,使用了两个独立的 SSD,因为如果 Linux 安装位于同一个物理磁盘上,Windows 通常会试图破坏 Linux 的安装。
HDD 布局
HDD0 | nvme0n1 | Samsung SSD 970 PRO 512GB | Antergos 19.4 (LUKS)
HDD1 | sda | Samsung SSD 850 EVO 500GB | Windows 10 (non-BitLocker)
问题
我的问题是,我无法再启动 Windows(从启动选择屏幕中选择 Windows 启动管理器默认为 Antergos GRUB),并且我无法再在 BIOS 中看到 HDD1 来选择.efi
要设置为安全启动选项的文件(“选择一个受信任的 UEFI 文件进行执行”)。
此外,Windows 启动管理器指向错误的硬盘(在启动选择中:“Windows 启动管理器(三星 SSD 970 PRO 512GB)”)——或者至少我是这样认为的,我在最初设置 Windows 系统时并没有注意到这一点……
以下是我目前所做的:
Windows 安装
首先,我在 HDD1 上安装并配置了 Windows,使用了默认分区等。一切顺利,经过几次重启和更新循环后,我仍然能够启动到 Windows 分区。
Arch/Antergos 安装
然后我在 HDD0/nvme0n1 上安装了 Antergos(因此arch-linux
有标签,希望没问题。19.4 ISO,如果这很重要的话),使用 LUKS 加密,GRUB 也在 nvme0n1 上。但是,Antergos 安装似乎存在一个已知问题,我按照以下方法修复了这个问题博客文章描述了一个几乎相同的问题按照以下步骤修复启动问题:
cryptsetup luksOpen /dev/nvme0n1p3 luks
vgscan
vgchange -ay
lvscan
mount /dev/mapper/AntergosVG-AntergosRoot /mnt/
mount /dev/nvme0n1p2 /mnt/boot/
mount /dev/nvme0n1p1 /mnt/boot/efi
arch-chroot /mnt/
grub-mkconfig -o /boot/grub/grub.cfg
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Antergos-grub
reboot now
并且在 BIOS 中,我添加了HDD0/Antergos-grub/...../something.efi
启动项。
在此之后,我能够启动 Antergos,但在某个地方,我显然搞砸了我的 Windows 启动设置。
尝试启动 Windows
如上所述,Windows 启动管理器失败,系统默认使用 Antergos 的 GRUB。
快速file -sL /dev/sda*
显示“无效的分区表”,/dev/sda
我尝试用 进行修复dd if=/usr/lib/syslinux/bios/mbr.bin of=/dev/sda
。
这似乎修复了“无效分区表”问题,现在报告如下:
/dev/sda: DOS/MBR boot sector; partition 1 : ID=0xee, start-CHS (0x0,0,2), end-CHS (0x3ff,255,63), startsector 1, 4294967295 sectors
/dev/sda1: data
/dev/sda2: DOS/MBR boot sector, code offset 0x52+2, OEM-ID "NTFS ", sectors/cluster 8, Media descriptor 0xf8, sectors/track 63, heads 255, hidden sectors 34816, dos < 4.0 BootSector (0x80), FAT (1Y bit by descriptor); NTFS, sectors/track 63, sectors 974999354, $MFT start cluster 786432, $MFTMirror start cluster 2, bytes/RecordSegment 2^(-1*246), clusters/index block 1, serial number XXXXXXXXXX
/dev/sda3: DOS/MBR boot sector, code offset 0x52+2, OEM-ID "NTFS ", sectors/cluster 8, Media descriptor 0xf8, sectors/track 63, heads 255, hidden sectors 975034368, dos < 4.0 BootSector (0x80), FAT (1Y bit by descriptor); NTFS, sectors/track 63, sectors 1736703, $MFT start cluster 72362, $MFTMirror start cluster 2, bytes/RecordSegment 2^(-1*246), clusters/index block 1, serial number XXXXXXXXXY
但是,最初的问题仍然存在。我仍然无法启动 Windows,也无法在 BIOS 中看到 HDD0 来选择.efi
。好消息是:我可以/dev/sda2
从 Antergos 中毫无问题地访问 Windows 数据分区 ()。
有什么办法可以修复这个问题吗?或者至少有人可以找出我搞砸的部分吗?
顺便说一句:os-prober
不会再回来任何值(ntfs-3g
已安装)
fdisk -l
Disk /dev/nvme0n1: 477 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: Samsung SSD 970 PRO 512GB
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: 0F772FB5-4DA6-446D-8F16-4DBFBA125765
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 1050623 1048576 512M EFI System
/dev/nvme0n1p2 1050624 2099199 1048576 512M Linux filesystem
/dev/nvme0n1p3 2099200 1000214527 998115328 476G Linux LVM
Disk /dev/sda: 465,8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: Samsung SSD 850
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: DA0363ED-80AB-4644-8238-E84A34DB7B8B
Device Start End Sectors Size Type
/dev/sda1 2048 34815 32768 16M Microsoft reserved
/dev/sda2 34816 975034170 974999355 464,9G Microsoft basic data
/dev/sda3 975034368 976771071 1736704 848M Windows recovery environment
缺少 Windows“修复”,包括输出
(如上面链接的博客文章所述)
$ sudo su
# os-prober
# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...
Found theme: /boot/grub/themes/Antergos-Default/theme.txt
Found Intel Microcode image
Found linux image: /boot/vmlinuz-linux
Found initrd image: /boot/initramfs-linux.img
Found fallback initramfs image: /boot/initramfs-linux-fallback.img
Found linux image: /boot/vmlinuz-linux-lts
Found initrd image: /boot/initramfs-linux-lts.img
Found fallback initramfs image: /boot/initramfs-linux-lts-fallback.img
done
# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Antergos-grub
Installing for x86_64-efi platform.
Installation finished. No error reported.
.efi
HDD0 上的可用(非 Antergos)文件
HDD0/BOOT/BOOTX64.efi/grubx64.efi
HDD0/Microsoft/Boot/bootmgfw.efi/grubx64.efi
顺便说一句:添加其中任何一个.efi
都会导致FILE is exist
错误......