如何使用 UEFI 将我的 Linux 磁盘从 MBR 转换为 GPT?

如何使用 UEFI 将我的 Linux 磁盘从 MBR 转换为 GPT?

我有一台 Linux 机器(Ubuntu 16.04),其启动盘使用 MBR 分区。我该如何将其转换为 GPT+UEFI?

答案1

开始之前,请确保您有备份,并确保 Linux Live Boot 已准备好来拯救您的系统。这很容易搞砸!

  1. 使用 gdisk 将分区表转换为 GPT。

    gdisk /dev/sda

  2. 创建 GRUB 所需的“BIOS 启动”分区。

    n创建新分区。需要大约 1MB。您可能可以从扇区 34-2047 中挤入。使用Ll查找“BIOS 启动”的代码 (ef02)。

  3. 写入新的分区表。

    w

  4. 重新加载分区表。

    partprobe /dev/sda

  5. 使用新的分区方案重新安装 GRUB 引导加载程序。

    grub-install /dev/sda

    可选择重新启动以验证其是否正常工作。如果您只需要 GPT 而不需要 UEFI,则可以在此处停止。

  6. 使用 gdisk 添加“EFI 系统”分区 (ESP)。官方规定应该是 100-500MB,但我只使用了 130kB。可以位于磁盘上的任何位置,因此如果您使用不可调整大小的介质(如物理磁盘),请考虑将其放在末尾。

    gdisk /dev/sda并使用n创建分区。

  7. 为 ESP 赋予一个没有空格的独特标签,例如EFI-system,因为我们将在 fstab 中引用分区标签。

    c设置标签。

  8. 写入分区表。

    w

  9. 重新加载分区表。

    partprobe /dev/sda

  10. 为 ESP 构建文件系统。

    mkfs -t vfat -v /dev/disk/by-partlabel/EFI-system

  11. 创建 ESP 挂载点。

    mkdir /boot/efi

  12. 将 ESP 添加到/etc/fstab。它应该看起来像这样:

    /dev/disk/by-partlabel/EFI-system /boot/efi vfat 默认值 0 2

  13. 安装 ESP。

    mount /boot/efi

  14. 在 Ubuntu/Debian 上安装 EFI 包。

    apt install grub-efi-amd64

  15. 安装 GRUB EFI 引导加载程序。

    grub-install --target=x86_64-efi /dev/sda

  16. 重启。

  17. 将 BIOS 从 BIOS 启动更改为 UEFI 启动。

  18. 使用一次性启动菜单强制启动磁盘。您可能需要导航到磁盘(从文件启动)-> EFI-> ubuntu-> grubx64.efi

  19. 重新安装 GRUB 的 EFI 引导加载程序以更新 UEFI 引导选择器。

    grub-install

资源:

答案2

我正在将 BIOS/MBR 系统硬盘转换为 UEFI/GPT,且没有数据丢失

我使用 MBR 启动盘以 BIOS 传统模式启动。

如上所述,我缩小了最后一个分区,为新分区腾出了空间电喷系统分区分区并将其格式化为FAT32。

然后与磁盘分区添加此新分区并将 MBR 启动盘转换为 GPT,没有数据丢失(两个根分区和一个主分区):

Number  Start (sector)    End (sector)  Size       Code  Name
1            2048        40003583   19.1 GiB    8300  Linux filesystem
2       956772352       976771071   9.5 GiB     8200  Linux swap
3        40003584       893857099   407.1 GiB   8300  Linux filesystem
4       894054400       956465151   29.8 GiB    8300  Linux filesystem
5       956465152       956772351   150.0 MiB   EF00  EFI System

我将此分区挂载为(未进行任何 fstab 修改):

 sudo  mount /dev/sda5  /boot/efi

然后安装GRUB-EFI:

 sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi /dev/sda

我启动了传统 BIOS当然没有有效品种,因此出现错误...

但在我重新启动电脑,将启动模式改为 UEFI Native 后,我很疑惑为什么我的电脑可以正常启动……尽管 EFI 变量有错误,但 GRUB UEFI 还是安装成功了

我再次执行 grub-install,这次一切顺利。

答案3

首先抱歉,我已经有一段时间没来这里了,我只能“回答”?我想就同一主题再问一个问题。我目前正在尝试将所有内容转换为 GPT/EUFI,以便我可以使用安全启动,这样我就可以最终将我的 Windows 10 升级到 11(有了新硬件)。那么,具体来说,首先转换的顺序是什么?Windows 还是 Linux?我记得几年前安装此设置时,我必须确保先安装 Windows。此外,如果它们位于不同的驱动器上怎么办?我在 sda 上安装了 Ubuntu 22 和 grub,在 sdc 上安装了 Windows 10(sdb 只是一个旧的存储驱动器),在我的主板/CPU/内存更改后,一切都启动并运行良好,但目前安全启动已禁用,传统启动(csm 或它的名称?)已打开。我有这个指南和 Windows 指南,但我如何或按什么顺序执行它们有关系吗?谢谢!

相关内容