我有一个 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 无法启动。