我有一个带有经典 MBR 的磁盘,希望将其转换为使用 GPT 而不会丢失数据。我看过一些或多或少有用的教程,但大多数都在处理与 GRUB、操作系统和磁盘上的多个分区相关的具体问题。就我而言,情况要简单得多 - 我有一个简单的磁盘,用于在单个分区上存储数据。我发现只需运行gdisk
并按下w
即可将 GPT 写入磁盘,之后我可以挂载并使用它而不会出现任何问题。
不过,我担心数据损坏,gdisk
警告我即将执行的操作具有潜在的破坏性,并且我看到了一些图表,其中 GPT 占用了第一个分区通常使用的一些空间。所以我的问题是:
这是将 MBR 转换为 GPT 的好方法吗?
GPT 是否会覆盖原来位于主分区上的一些数据,从而损坏我的文件或文件系统?
答案1
我创建了一个带有一个分区的 MBR 磁盘,用数据填充该分区上的每个字节,创建整个分区的 SHA1 校验和,将其转换为问题中所述的 GPT,创建另一个校验和并将其与原始校验和进行比较。他们是一样的。所以我的结论是这样的: 您可以安全地将磁盘转换为 GPT,而不会损坏数据。
警告:这并不意味着该过程是安全的。它可能会损坏您的分区。使用此方法进行转换之前,请务必进行备份。
答案2
我成功地将 MBR 转换为 GPT,但出于安全原因使用了两个额外的(新)磁盘。请注意,我将 Debian 与GRUB
引导加载程序结合使用。
我的设置只有一个 Linux 分区和一个交换分区,过程大致如下。
首先,进行完整备份:
- 使用第一个额外磁盘对旧磁盘进行完整备份
- 断开(!)原始驱动器并将其放在安全的地方(这保证我们不会意外写入它)
- 连接备份驱动器,以便您可以从它启动(例如主板上的第一个 SATA 连接)
- 还连接第二个额外磁盘
- 从备份磁盘启动
如果您可以启动并且一切正常,这也证明您的备份是正确的。现在让我们真正开始:
gdisk
使用新的 MPT 格式对仍然空的第二个磁盘进行分区- 故意使用与旧磁盘相同的分区大小,以便我们可以轻松迁移
8300
使用Linux 分区和8200
Linux 交换分区的代码。- 还使用
ef02
代码创建一个额外的 2 MiB 分区,记住分区号,我们稍后会需要它。
注意:此 2 MiB 分区用于引导GRUB
,不必位于磁盘本身的开头。
- 用于
dd
将数据从启动盘 Linux 分区复制到新分区 - 激活新创建的交换分区(使用 mkswap 命令)
在此阶段,系统文件和您的数据已复制到新磁盘。唯一剩下的就是让东西可以启动。
运行以下命令:
parted /dev/sdXXX set YYY bios_grub on
其中 XXX 是与我们创建的 2 MiB 分区对应的设备,YYY 是我要求您记住的分区号。运行
grub-install /dev/sdZ
,其中 sdZ 是您要使其可启动的磁盘。断开备份磁盘
- 连接 GPT 磁盘,以便您可以从它启动
- 测试(启动到启用 GPT 的新磁盘)
祝你好运!