我有一台 Linux 机器(Ubuntu 16.04),其启动盘使用 MBR 分区。我该如何将其转换为 GPT+UEFI?
答案1
开始之前,请确保您有备份,并确保 Linux Live Boot 已准备好来拯救您的系统。这很容易搞砸!
使用 gdisk 将分区表转换为 GPT。
gdisk /dev/sda
创建 GRUB 所需的“BIOS 启动”分区。
n
创建新分区。需要大约 1MB。您可能可以从扇区 34-2047 中挤入。使用L
或l
查找“BIOS 启动”的代码 (ef02)。写入新的分区表。
w
重新加载分区表。
partprobe /dev/sda
使用新的分区方案重新安装 GRUB 引导加载程序。
grub-install /dev/sda
可选择重新启动以验证其是否正常工作。如果您只需要 GPT 而不需要 UEFI,则可以在此处停止。
使用 gdisk 添加“EFI 系统”分区 (ESP)。官方规定应该是 100-500MB,但我只使用了 130kB。可以位于磁盘上的任何位置,因此如果您使用不可调整大小的介质(如物理磁盘),请考虑将其放在末尾。
gdisk /dev/sda
并使用n
创建分区。为 ESP 赋予一个没有空格的独特标签,例如
EFI-system
,因为我们将在 fstab 中引用分区标签。c
设置标签。写入分区表。
w
重新加载分区表。
partprobe /dev/sda
为 ESP 构建文件系统。
mkfs -t vfat -v /dev/disk/by-partlabel/EFI-system
创建 ESP 挂载点。
mkdir /boot/efi
将 ESP 添加到
/etc/fstab
。它应该看起来像这样:/dev/disk/by-partlabel/EFI-system /boot/efi vfat 默认值 0 2
安装 ESP。
mount /boot/efi
在 Ubuntu/Debian 上安装 EFI 包。
apt install grub-efi-amd64
安装 GRUB EFI 引导加载程序。
grub-install --target=x86_64-efi /dev/sda
重启。
将 BIOS 从 BIOS 启动更改为 UEFI 启动。
使用一次性启动菜单强制启动磁盘。您可能需要导航到磁盘(从文件启动)->
EFI
->ubuntu
->grubx64.efi
。重新安装 GRUB 的 EFI 引导加载程序以更新 UEFI 引导选择器。
grub-install
资源:
- 作者
gdisk
有一个MBR、GPT 和 UEFI 的详细描述。 - Clonezilla 将 MBR 磁盘恢复为 4TB 磁盘(转换为 GPT)--LINUX(不是 Windows!)涵盖该过程的第一部分。
答案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 指南,但我如何或按什么顺序执行它们有关系吗?谢谢!