我的目标是在 Windows 11 中访问 6TB 外置硬盘上的 NTFS 分区,该分区在 Linux 中创建了有效的 GPT。问题是 Windows 11 使用 MBR 安装驱动器。

Windows 磁盘管理和我正在使用的实用程序 Disk Genius 都将 HDD 视为 MBR

我尝试将 MBR 转换为 GPT,但它似乎正在尝试创建一个全新的 GPT,而 Disk Genius 报告没有空间来创建 GPT。

在继续之前,我可以简单地让 Windows 11 读取并使用Linux 创建的现有GPT 吗?

我读了很多关于将 MBR 转换为 GPT 的文章,意识到这不是我想要做的 – 我只想使用已经存在的。我不需要创建新的 GPT。

为了完整起见,以下是 GPT 在 Linux 中的样子(我想在 Windows 11 中使用的 120GB 分区是 /dev/sdc14):

# fdisk -l /dev/sdc
Disk /dev/sdc: 5.46 TiB, 6001175126016 bytes, 11721045168 sectors
Disk model: USB 3.0 Destop H
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 4FBB78E0-201B-4A5B-A745-C0E797DF98D9

Device           Start         End    Sectors   Size Type
/dev/sdc1         2048     2099199    2097152     1G EFI System
/dev/sdc2      2099200    63326207   61227008  29.2G Linux filesystem
/dev/sdc3    105269248   149309439   44040192    21G Linux filesystem
/dev/sdc4    168183808   210126847   41943040    20G Linux filesystem
/dev/sdc5     63326208   105269247   41943040    20G Linux filesystem
/dev/sdc6    449202176   465979391   16777216     8G Microsoft basic data
/dev/sdc7    465979392  5860855807 5394876416   2.5T Linux filesystem
/dev/sdc8   5860855808  5860857855       2048     1M Microsoft basic data
/dev/sdc9   5860858456  5938983447   78124992  37.3G Apple APFS
/dev/sdc10  5939245592  9767921663 3828676072   1.8T Apple HFS/HFS+
/dev/sdc11  9768183808 10002558807  234375000 111.8G Apple APFS
/dev/sdc12 10002558808 10393183807  390625000 186.3G Apple APFS
/dev/sdc13 10393184256 11064272895  671088640   320G Linux filesystem
/dev/sdc14 11064272896 11315931135  251658240   120G Microsoft basic data

以下是同一磁盘的 MBR:

# fdisk -t dos -l /dev/sdc
Disk /dev/sdc: 5.46 TiB, 6001175126016 bytes, 11721045168 sectors
Disk model: USB 3.0 Destop H
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x8a9e2113

Device     Boot     Start       End  Sectors  Size Id Type
/dev/sdc1               1   2099199  2099199    1G ee GPT
/dev/sdc2  *      2099200  63326207 61227008 29.2G 83 Linux
/dev/sdc3       105269248 149309439 44040192   21G 83 Linux
/dev/sdc4       168183808 210126847 41943040   20G da Non-FS data

Partition 1 does not start on physical sector boundary.

2

  • 磁盘一直是外部的吗?Linuxfdisk -t dos -l对此磁盘的显示是什么?它与 Disk Genius 一致吗?还是它显示了正确的Id: eeGPT 保护分区?


    – 

  • 磁盘一直是外部的。我在问题中添加了 MBR 输出,并看到了 GPT 分区。我不再需要使用 EFI 从此磁盘启动 – 我们可以简单地删除 MBR 并保留 GPT 分区吗?我假设 UEFI 启动在 GPT 上也可以正常工作?(即使我不能,我也很乐意将此 HDD 用作 Windows 和 Linux 的数据磁盘)


    – 



最佳答案
1

出于兼容性原因,每个GPT 磁盘也具有 MBR 分区表,尽管通常这种磁盘的 MBR 应该只有一个覆盖整个磁盘(或者 MBR 可以覆盖的磁盘空间)的“GPT 保护”分区(类型代码 0xEE),并且只告诉旧软件磁盘非空;现代操作系统会忽略它,只查看 GPT。

但是您的磁盘似乎具有“混合”分区,其中两个分区表都具有有效(且冲突)的信息 – 非常奇怪的是,保护分区存在但已缩小以在其旁边添加内容 – 所以很有可能在这种情况下Windows和Disk Genius都优先考虑MBR而不是GPT。

(仔细观察后发现,MBR 似乎是 GPT 的旧副本,其中仅包含前四个分区,而奇怪的保护分区则代表 EFI 系统分区。要么是有人弄错了分区类型(ESP 的类型为 0xEF,而不是 0xEE),要么是故意伪装 ESP,以便固件忽略它?)

将此 MBR 转换为 GPT 会适得其反,因为它会用从过时的 MBR 转换而来的无用分区替换有效的 GPT 分区,所以幸运的是它没有成功。(尽管您可以从帖子中的列表中手动恢复它们。)

相反,由于 MBR 目前包含无用信息,您应该将其替换为标准“保护性​​”MBR。最简单的方法是使用gdiskLinux 中的(又名“gptfdisk”)工具:

  1. gdisk /dev/sdc
  2. 主菜单:x进入“专家”菜单;
  3. 专家菜单:(可选)o查看当前的MBR;
  4. 专家菜单:n生成新的保护MBR;
  5. 专家菜单:(可选)o查看新生成的MBR;
  6. 专家菜单:(可选)p确保 GPT 没有去任何地方;
  7. 专家菜单:w将新的分区表写入磁盘。

(这可以通过 fdisk 实现,但需要更多步骤并且需要更加小心。)

最终结果应该看起来完全像这样 – 即只有一个尽可能大的分区:

# fdisk -t dos -l
Device     Boot Start        End    Sectors Size Id Type
/dev/sdc1           1 4294967295 4294967295   2T ee GPT
#

2

  • 2
    哇,这真的有效而且非常简单!(我必须重新启动 Ubuntu Server 才能访问gdisk,之前基于 busybox 的发行版需要我绕很长的路才能完成)启动 Disk Genius,Windows 磁盘管理可以看到 NTFS 分区并完美管理它。是时候卸载大量应用程序了 – 再次感谢!🙏


    – 


  • 1
    ps. 昨晚克隆了sfdisk -d磁盘sgdisk --backup– 我走错了路(例如,在混淆分区之前没有备份太多次,以免造成不必要的压力,哈哈))


    –