传统 BIOS 模式下的 Bootcamp Windows 10 将外部纯 GPT 磁盘报告为 MBR。为什么?

传统 BIOS 模式下的 Bootcamp Windows 10 将外部纯 GPT 磁盘报告为 MBR。为什么?

我的印象是,Windows 在 BIOS 模式下启动时只要求其启动的驱动器为 MBR,因此 Bootcamp 在我的 Macbook Air 2012 上创建了混合 MBR 设置(此型号不正式支持 UEFI)。这可以解释为什么 Windows 将系统驱动器视为 MBR。

事实证明,即使是纯 GPT 的 USB 驱动器也会被检测为 MBR,这让我很惊讶。以传统模式启动不会阻止操作系统读取和检测 GPT 吗?但看起来就是这样。

我确信该驱动器具有保护性 MBR,因为我刚刚在gdisk启动 Windows 之前生成了一个。

奇怪的是,尽管 Windows 自己的分区管理器和 EaseUS Partition Master 都告诉我驱动器是 MBR(尽管 EaseUS 告诉我它们不支持 Bootcamp 或没有在 Bootcamp 上测试),但它们都检测并列出了实际的 GPT 分区。我也可以在 Explorer 中正常使用这些分区。如果他们真的将驱动器视为 MBR,他们就会触及保护性 MBR,并且只向我显示一个大分区。我觉得这有点令人困惑和矛盾。

有人能解释一下发生了什么事吗?


更新

所以,我最初有外部驱动器A(混合 MBR)和(MBR)。我通过gdisk生成保护性 MBR 和直接执行仪式将它们转换为纯 GPT w。这是在 Ubuntu 中完成的。然而,Windows 仍然将它们都视为 MBR,这导致了这个问题。

我现在已gdisk在 Windows 上检查过,可以确认该驱动器A已恢复为混合 MBR,并且驱动器现在也有了混合MBR。

我再次使用 Ubuntu 中的 gdisk 为驱动器生成了一个新的保护 MBR,启动到 Windows 并确认更改现已生效。

我对此唯一的解释是,在第一次转换为 GPT 后,我用 Gparted 更改了驱动器上的分区名称。由于 Gparted 显示了驱动器的“名称”列(该列仅存在于 GPT 驱动器中),因此,我认为这是 Gparted 确实从驱动器读取了新的 GPT 分区表的明确信号。毕竟,驱动器转换之前是纯 MBR,因此 Gparted 没有其他方法可以判断它现在是 GPT。

由于某种原因,Gparted 必须用磁盘旧 MBR 的缓存版本覆盖保护性 MBR,这有点没意义,因为显然 Gparted 知道它是一个 GPT 驱动器。

如果 Gparted 是混合 MBR 的来源,那么我错误地认为编辑 GPT 独占字段(“名称”)不会影响保护性 MBR。

答案1

使用混合 MBR 启动 Windows 并不妨碍使用仅 GPT 的外部驱动器。

无论是系统、内置还是外置驱动器,Windows 都会将混合 MBR 显示为 MBR,将 GPT 仅显示为 GPT。保护性 MBR(EE 类型)并不是区别性特征(GPT 始终具有该特征),而是混合 MBR 的存在。

传统 GPT 磁盘包含一个保护性 MBR,其中定义了一个类型为 0xEE (EFI GPT) 的分区。此分区跨越整个磁盘大小或 2 TiB(以较小者为准)。目的是防止不支持 GPT 的操作系统和实用程序尝试修改磁盘。混合 MBR 是普通保护性 MBR 的变体。

混合 MBR 包含一个类型 0xEE 分区,但它还包含最多三个额外的主分区,这些分区指向由最多三个 GPT 分区标记的同一空间。

钓竿书更多细节。

例如,这是一个 bootcamp 安装。使用磁盘分区在 Windows 中,您可以使用 r、o、p 选项查看 MBR 和 GPT 分区表。

例如,这里有 5 个 GPT 分区,前 4 个与 MBR 匹配,最后一个被忽略。

PS C:\> .\gdisk64.exe \\.\physicaldrive0
GPT fdisk (gdisk) version 1.0.3

Partition table scan:
  MBR: hybrid
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with hybrid MBR; using GPT.

Command (? for help): r

Recovery/transformation command (? for help): p
Disk \\.\physicaldrive0: 250069680 sectors, 119.2 GiB
Sector size (logical): 512 bytes
Disk identifier (GUID): 569B72DC-B014-4DD3-B28A-A95CA047CBEE
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 250069646
Partitions will be aligned on 8-sector boundaries
Total free space is 263550 sectors (128.7 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1              40          409639   200.0 MiB   EF00  EFI System
   2          409640       172376718   82.0 GiB    0700  MacWindows
   3       172378112       180766719   4.0 GiB     2700  Recovery
   4       180766720       222709759   20.0 GiB    8300  Linux
   5       222709760       249807495   12.9 GiB    AF00  macOS

Recovery/transformation command (? for help): o

Disk size is 250069680 sectors (119.2 GiB)
MBR disk identifier: 0xEBD711AE
MBR partitions:

Number  Boot  Start Sector   End Sector   Status      Code
   1                     1       409639   primary     0xEE
   2      *         409640    172376718   primary     0x07
   3             172378112    180766719   primary     0x27
   4             180766720    222709759   primary     0x83

Recovery/transformation command (? for help):q

如您所见,它是从分区 2 启动,该分区在 MBR 分区表下标记为活动分区。

因此让我们使用 GPT 格式化 USB:

PS C:\> diskpart

Microsoft DiskPart version 10.0.17763.1

Copyright (C) Microsoft Corporation.
On computer: MACWINDOWS

DISKPART> list disk

  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online          119 GB      0 B
* Disk 1    Online         1927 MB      0 B 

如您所见,磁盘 1 不是 GPT。

DISKPART> select disk 1

Disk 1 is now the selected disk. 

DISKPART> clean

DiskPart succeeded in cleaning the disk.

DISKPART> convert gpt

DiskPart successfully converted the selected disk to GPT format.

DISKPART> create partition primary

DiskPart succeeded in creating the specified partition.

DISKPART> format quick fs=ntfs

  100 percent completed

DiskPart successfully formatted the volume.

DISKPART> list disk

  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online          119 GB      0 B
* Disk 1    Online         1927 MB      0 B        *

现在它被格式化为 GPT,并且被 Windows 视为 GPT - GPT 标题下有一个 *。然后使用 gdisk 再次检查此磁盘:

PS C:\> .\gdisk64.exe \\.\physicaldrive1
GPT fdisk (gdisk) version 1.0.3

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help): r

Recovery/transformation command (? for help): o

Disk size is 3948543 sectors (1.9 GiB)
MBR disk identifier: 0x00000000
MBR partitions:

Number  Boot  Start Sector   End Sector   Status      Code
   1                     1      3948542   primary     0xEE

Recovery/transformation command (? for help): p
Disk \\.\physicaldrive1: 3948543 sectors, 1.9 GiB
Sector size (logical): 512 bytes
Disk identifier (GUID): C78677AE-1DC1-49AA-BCC1-26DE8F72BCF6
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 3948509
Partitions will be aligned on 128-sector boundaries
Total free space is 188 sectors (94.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1             128         3948415   1.9 GiB     0700  Basic data partition

所以这很好 - 从磁盘的开始到结束都有一个保护成员。但是如果我们制作一个混合成员怎么办?在 gdisk 中使用选项“h”

Recovery/transformation command (? for help): h

WARNING! Hybrid MBRs are flaky and dangerous! If you decide not to use one,
just hit the Enter key at the below prompt and your MBR partition table will
be untouched.

Type from one to three GPT partition numbers, separated by spaces, to be
added to the hybrid MBR, in sequence: 1
Place EFI GPT (0xEE) partition first in MBR (good for GRUB)? (Y/N): n

Creating entry for GPT partition #1 (MBR partition #1)
Enter an MBR hex code (default 07):
Set the bootable flag? (Y/N): n

Unused partition space(s) found. Use one to protect more partitions? (Y/N): n

Recovery/transformation command (? for help): p
Disk \\.\physicaldrive1: 3948543 sectors, 1.9 GiB
Sector size (logical): 512 bytes
Disk identifier (GUID): C78677AE-1DC1-49AA-BCC1-26DE8F72BCF6
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 3948509
Partitions will be aligned on 128-sector boundaries
Total free space is 188 sectors (94.0 KiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1             128         3948415   1.9 GiB     0700  Basic data partition

Recovery/transformation command (? for help): o

Disk size is 3948543 sectors (1.9 GiB)
MBR disk identifier: 0x4C7FBBF6
MBR partitions:

Number  Boot  Start Sector   End Sector   Status      Code
   1                   128      3948415   primary     0x07
   2                     1          127   primary     0xEE

Recovery/transformation command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to \\.\physicaldrive1.
Disk synchronization succeeded! The computer should now use the new
partition table.
The operation has completed successfully.
PS C:\>     

现在,如果我们在 Windows 中重新检查,因为它具有混合 MBR,所以它不再被视为 GPT,即使那里仍然有一个保护性 MBR - 没有注意到 * 已经消失:

DISKPART> rescan

Please wait while DiskPart scans your configuration...

DiskPart has finished scanning your configuration.

DISKPART> list disk

  Disk ###  Status         Size     Free     Dyn  Gpt
  --------  -------------  -------  -------  ---  ---
  Disk 0    Online          119 GB      0 B
* Disk 1    Online         1927 MB      0 B

所以您可以看到,并不是因为存在保护性 MBR(EE 类型),Windows 才会将驱动器视为 GPT,而是因为缺少混合 MBR。

相关内容