将具有 UEFI 启动的 MBR 磁盘转换为 GPT

将具有 UEFI 启动的 MBR 磁盘转换为 GPT

我有一个 MBR 磁盘,我想将其转换为 GPT,但不丢失数据和操作系统(ubuntu 和 Manjaro)(我的启动是 UEFI 而不是 BIOS)

这是我的fdisk -l /dev/sdb输出:

Disk /dev/sdb: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: TOSHIBA DT01ACA1
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: 0x0ec008e9

Device     Boot      Start        End   Sectors   Size Id Type
/dev/sdb1  *          2048    1026047   1024000   500M  b W95 FAT32
/dev/sdb2        204802048 1031114751 826312704   394G  7 HPFS/NTFS/exFAT
/dev/sdb3       1031116798 1418209279 387092482 184.6G  5 Extended
/dev/sdb4       1418209280 1953520064 535310785 255.3G 83 Linux
/dev/sdb5       1031116800 1206896639 175779840  83.8G 83 Linux
/dev/sdb6       1206898688 1222897663  15998976   7.6G 82 Linux swap / Solaris
/dev/sdb7       1222899712 1418209279 195309568  93.1G 83 Linux

Partition 3 does not start on physical sector boundary.
Partition table entries are not in disk order.

sdb1 是我的 ESP 分区

sdb3 是我的扩展分区,包含 sdb5 sdb6 和 sdb7(ubuntu 根、交换和主分区)

sdb4 是我的 Manjaro OS 分区


我该怎么做?

答案1

初步说明:我是 GPT fdisk () 的作者gdisk,因此我非常了解它的作用。

首先,在进行这种级别的任何维护时,备份至关重要!在做其他任何事情之前,你应该创建备份,以便在情况变得非常糟糕时能够重新创建系统,因为在某些情况下,事情情况会变得非常糟糕。通常来说,保留备份是个好主意,如果你要做一些有风险的事情,备份是必不可少的。

其次,你的问题没有说明你为什么要这样做。这个问题的答案很重要。俗话说,“如果它没坏,就不要修理它。”如果你从 MBR 磁盘启动只是冒犯了你的理智,那么它可能不值得冒险。即使有足够的备份,如果出现问题,恢复所有内容也会比学会忍受你的理智受到冒犯要麻烦得多。另一方面,如果你遇到了某种问题,那么可能的将 MBR 磁盘转换为 GPT 磁盘可以解决问题;但不知道您遇到了什么问题,我无法判断这是否真的有帮助,或者是否有更简单的方法来解决问题。

第三,该gdisk命令将执行实际的 MBR 到 GPT 转换;参见关于这种转换的文档有关详细信息。由于您已经在 EFI 模式下启动,因此您的引导加载程序/dev/sdb1将保持不变;但是:

  • 指向这些引导加载程序的 NVRAM 驻留引导加载程序定义可能需要更改,因此系统可能会停止启动,直到您更改它们。另一方面,如果您已将 Linux 后备加载程序安装为EFI\BOOT\bootx64.efi,则恢复可能是自动的,具体取决于 EFI 如何响应。另一方面,您可能需要准备启动修复磁盘、USB 闪存驱动器上的 rEFInd 或其他一些紧急恢复计划。
  • 根据您/etc/fstab的引导加载程序的配置,您可能需要调整配置。文件系统名称和 UUID 将保持不变,但分割名称和 GUID 将会改变。(从技术上讲,MBR 不支持分区名称或分区 GUID,但有些工具会尝试创建这些值的替代值。)据我所知,Ubuntu 的设置/etc/fstab方式默认不需要更改,但我不知道 GRUB 配置;可能需要在更改后进行修复。当然,如果您对引导加载程序进行了任何非标准更改/etc/fstab,则可能需要进行更改。
  • 您的类型代码/dev/sdb1当前为 0x0b,gdisk将转换为 0700。从技术上讲,这对于 ESP 来说是不正确的,因此您可能需要将其更改为 EF00。(就此而言,0x0b 对于 MBR 磁盘上的 ESP 是不正确的。理论上,如果您使用 MBR 保留磁盘,则应将其更改为 0xef。事实上,根据您想要更改为 GPT 的原因,更改类型代码/dev/sdb1可能是您需要做的全部工作。)

第四,我看到您在 上有一个很大的 Windows NTFS 分区/dev/sdb。如果您当前正在从 GPT 上的分区启动 Windows /dev/sda,那么我猜想 上的 NTFS 分区/dev/sdb是数据分区。如果是这样,那么在进行此更改后它应该可以继续在 Windows 中工作。但是,Windows 通常将其分区表类型与其启动模式绑定在一起,因此如果您正在执行其他操作(例如,如果您以 BIOS/CSM/旧模式启动 Windows)/dev/sdb2,那么从 MBR 更改/dev/sdb为 GPT 可能会导致 Windows 无法启动。

相关内容