从 MBR 转换为 GPT,无数据丢失,无 Windows

从 MBR 转换为 GPT,无数据丢失,无 Windows

所以我尝试从可启动 USB 安装 Windows 10,不幸的是,我没有读取错误,而是删除了 C 分区,然后出现了这个错误

Windows 无法安装在该磁盘上所选磁盘具有 MBR 分区表,在 EFI 系统上 Windows 只能安装在 GPT 磁盘上`

我已经搜索了两天并尝试了以下解决方案:

  1. 将 USB 刻录为 GPT 或 MBR
  2. 在 USB 上使用 gparted Live(必须删除数据)
  3. 将传统模式更改为 UEFI 模式并禁用安全启动

任何其他解决方案要么需要第三方(因为我没有 Windows,所以无法运行),要么使用命令clean删除整个硬盘。

那么,有没有什么方法可以做到这一点而不丢失其他分区,或者有没有什么方法可以访问并备份它们(不取出硬盘)?

这个答案是否有效? 在 Windows 安装期间将 MBR 转换为 GPT,而无需擦除磁盘 因为输入[w]转换后它会说Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING PARTITIONS!!这在我看来它会删除所有内容

答案1

在任何 Linux 系统(包括 Gparted Live)中,打开终端并gdisk在代表磁盘的设备上运行。例如,如果lsblk -S它是 /dev/sda,请使用gdisk /dev/sda

gdisk 是一种常用的分区工具,类似于 parted/GParted 和 Linux fdisk。唯一的区别是它总是写出 GPT 分区表——当它在 MBR 分区的磁盘上运行时,它会读取现有的 MBR 分区,但会总是改为以 GPT 格式写入表格。

在 gdisk 中,不要执行任何其他操作(不要尝试创建或删除分区),只需直接使用该w命令保存更改即可。(您不需要创建 EF00 分区;Windows 安装程序无论如何都会执行此操作。)

虽然如果你想,您可以用它p来查看实际的分区表并写下每个分区的起始+长度(以扇区为单位) - 如果删除分区但在完全相同的位置重新创建,它仍将包含与之前相同的数据(除非分区工具故意清除它,而 gdisk 通常不会这样做)。

确认写入后,旧的MBR分区表将被删除,并创建包含相同分区的GPT分区表。

(是的,我意识到这与链接的帖子基本相同。)

答案2

因为我没有 Windows

你已在运行 Windows. 信息

“Windows 无法安装在该磁盘上,所选磁盘具有 MBR 分区表,在 EFI 系统上,Windows 只能安装在 GPT 磁盘上”

是运行于 Windows 安装程序的输出Windows PE。它不是功能齐全的 Windows,但仍然是相同的 Windows 内核,具有几乎相同的功能

Windows PE 可以运行普通的 Windows exe 文件,更重要的是包含启动MBR2GPT进行无损转换。因此,在启动安装盘后,只需Shift+F10然后命令提示符将打开,您可以执行任何操作。现在只需运行即可mbr2gpt进行转换,例如下面的命令将磁盘 0 转换为 GPT

MBR2GPT.EXE /convert /disk:0 /allowfullos

只要你的磁盘满足要求,它会将磁盘从 MBR 转换为 GPT无数据丢失

Windows 安装程序中的命令提示符

也可以看看将 MBR 转换为 GPT - 无需任何操作系统

如果转换失败,请参见无法从 MBR 转换为 GPT其他解决方案

有关 Windows PE 的详细信息,请参阅WinPE为什么被称为操作系统呢?

答案3

首先,我建议问得更精确一些。“从可启动 USB”指的是什么?CD-Rom、DVD-Rom、USB 还是硬盘?

“将传统模式更改为 EUFI 模式并禁用安全启动”我不知道“EUFI”是什么意思。我只能猜测这是一个错误。你应该多加小心。

=========================================================

关于你的问题,我的回答如下:

检查 MBR 到 GPT 转换的风险:

当转换不需要移动或缩小分区时,从 MBR 到 GPT 的转换可被视为低风险。

需要移动或缩小分区是因为 GPT 结构位于明确定义的位置。

看看图片 https://en.wikipedia.org/wiki/GUID_Partition_Table

GPT 结构需要磁盘的前 34 个扇区(从扇区 0 到 33)和后 33 个扇区(因为没有位于扇区 0 的保护 MBR 的备份)。

如果您的分区不触及该区域,则可以将 GPT 结构写成仅仅是位于磁盘开头和结尾的定义指针列表,指向磁盘内部分区的开头。

如果您的分区从磁盘开头的 GPT 区域开始,则必须将其向前移动到磁盘末尾(朝向更高的 LBA 编号)。此移动操作是有风险的。想象一下,如果您在执行此操作时断电会发生什么。

如果移动分区会触及磁盘的最后 33 个扇区,则必须通过向后移动一个或几个分区(朝扇区号 0 的方向)来创建可用空间,前提是分区之间仍有可用空间,或者至少必须缩小一个分区。如果要缩小的分区不是磁盘上的最后一个分区,也需要移动。这个过程也可以被视为有风险的。

如果里面的分区不接触前 34 个扇区,您仍然需要查看分区是否接触最后 33 个扇区。这将需要移动和/或收缩以释放最后 33 个扇区。

即使在低风险环境中,也值得保持警惕并记录当前的分区结构。我建议使用 Testdisk。在进行驱动器分析时,您可以将驱动器的分区结构备份到标有“backup.log”的文件中,您可以使用文本编辑器阅读该文件。

检查磁盘开头的可用空间

有了这些信息,您就可以确定操作是否有风险。查看“backup.log”时可以直接看到开始时的可用空间。

检查磁盘末尾的可用空间

要检查磁盘末尾所需的可用区域,您可以查看应打印扇区数的磁盘外壳,或者使用 hdparm 之类的 Linux 工具。

这里有一个链接的示例,重要的是图片上的 LBA48 图形:

https://www.geeksforgeeks.org/hdparm-command-in-linux-with-examples/

计算最后一个分区使用的最后一个扇区,并检查是否还剩余 33 个可用扇区。

结论

如果磁盘开头或结尾的 GPT 区域已被占用,您最好重新安装新磁盘,而不是尝试有风险的转换。

以上所有内容均适用于硬盘接口外部 512 字节的扇区大小。这可能是真正的 512 字节扇区或模拟的 512 字节扇区(通常为内部 4096 字节)。如果所讨论的硬盘外部扇区大小为 4096 字节(1:1 传递内部 4096 字节扇区),扇区编号会发生变化。

相关内容