双重启动:“无效分区表”并且无法再启动 Windows 10

双重启动:“无效分区表”并且无法再启动 Windows 10

我最近重新设置了我的系统,使用了两个独立的 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.

.efiHDD0 上的可用(非 Antergos)文件

HDD0/BOOT/BOOTX64.efi/grubx64.efi
HDD0/Microsoft/Boot/bootmgfw.efi/grubx64.efi

顺便说一句:添加其中任何一个.efi都会导致FILE is exist错误......

相关内容