将 Ubuntu 引导从 Legacy 转换为 UEFI
最近突然心血来潮,想用 UEFI
装 Windows 10 玩玩,搞定了安装 U 盘后发现之前的 Ubuntu 一直使用 Legacy
作为引导方式。秉着人不折腾就会死的精神,弄了差不多一整天,终于将 Ubuntu 的引导方式从 Legacy
转为了 UEFI
,并成功地实现了 Ubuntu 与 Win10 双系统引导。为了方便各位作死,特在此分享出来。
注意:本文需要计算机引导的基本知识以及一定的动手能力,若不熟悉 Linux 命令行,虽可完成所有步骤,但不建议尝试。本文所述 Ubuntu 包含所有 Ubuntu 分支,例如 Lubuntu 和 Xubuntu 。
Ubuntu Legacy
转 UEFI
Step 1. 建立 ESP 分区
首先进入任何一个 EFI 启动 的、基于 Ubuntu 的 Live System ,使用 GParted
在硬盘首 2.2 TB 内分出 100MB 以上(推荐 200MB )的空间,格式化成 FAT32 后 Manage flags
勾选 boot
,像这样:
图片消失在了卡塞尔
Step 2. 迁移 Ubuntu 引导文件
反复确认网络没问题 ,然后打开终端,用以下命令安装 Boot Repair
:
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt update
sudo apt install boot-repair
或者,你也可以使用 Boot Repair CD
,基于 Lubuntu 。总之,在一切完成后,启动 Boot Repair
。
图片消失在了圣芙蕾雅学院
等待数据收集完毕,在 Advanced options
选择 GRUB location
,如果原来是使用 Legacy
引导,那么勾选 Seperate /boot/efi partition
,选择刚刚在 GParted
中分好的区(这里是 /dev/sda1
)。
图片消失在了八重村
点击 Apply
,然后跟着 Boot Repair
的指示做,并静等完成。
Step 3. 试试看!
reboot
Step 4. 跌进大坑?
如果这里直接启动已经没问题,那么这一部分就到此为止了。如果有问题……
关掉 Legacy
支持
在 BIOS 的设置页面中,一般能找到类似于「启用 Legacy
支持」的选项。把它关掉 我们还能做朋友 即可仅使用 UEFI
来引导启动。当然如果已经爆炸这也没什么用处,可能也就只是确定确实是 UEFI
的问题而不是系统仍然在尝试走 Legacy
。
尝试用命令行重新安装 GRUB
进入 Live System , 确保网络通畅 ,用 GParted
记下原系统所在的分区(比如说我的是 /dev/sda2
),然后打开终端,键入:
sudo mount /dev/sda1 /mnt
sudo mkdir -p /mnt/boot/efi
sudo mount /dev/sda3 /mnt/boot/efi
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /run /mnt/run
modprobe efivars
sudo chroot /mnt
这时,这个终端已经切换 root 到了原系统并可以用最高权限进行一些操作,随后我们便需要在原系统上重新安装支持 UEFI
引导的 GRUB ,即 grub-efi-amd64
。
apt install grub-efi-amd64
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --no-floppy --debug
现在再重启试试看?
将分区表从 MBR
转换成 GPT
虽然 MBR(Master Boot Record)
并不影响 UEFI
的正常引导,但 Windows 却拒绝使用,转而要求用户切换到 GPT(GUID Partition Table)
。 Legacy
只能通过 MBR
引导,因此通常执行完上述操作之后分区表仍然采用 MBR
,强烈推荐更换到 GPT
。
要从 MBR
切换到 GPT
,操作也不是很困难,需要使用 gdisk
。首先在 Live System 中安装并以系统所在硬盘为对象运行:
sudo apt install gdisk
sudo gdisk /dev/sda
在 gdisk
启动后,目前的分区表情况会显示在屏幕中。为了将 MBR
转换为 GPT
,首先需要按 r
,进入 Recovery/Transformation
模式,接着 f
启动转换,若需要确认操作则输入 Y
,一切后用 w
保存并退出。此时,分区表就从 MBR
被转换为了 GPT
。重新进入 gdisk
可看到,原有的 MBR
分区表变成了 Protective
,而 GPT
变成了 Present
。
此时建议重新使用命令行安装 GRUB 或者重新运行一遍 Boot Repair
,虽然不确定不重新安装是否会影响正常启动。此外,按道理来讲是否转换并不会干涉 UEFI
下 Ubuntu 的启动, 但奇幻的是本人的问题在转换完后消失掉了……
UEFI 引导 Windows 安装
Step 1. 安装 Windows 10
傻瓜式的操作步骤应该没有问题(吧)……
Step 2. 使用 GRUB 引导 Windows 10
这个也不难……请翻出 Boot Repair
进行一次 Recommended Repair
,然后应该就啥问题没有能够正常引导 Windows 10 了。
Step 3. Enjoy it!
reboot
References:
- UEFI - Ubuntu Documentation
- Which commands to convert a Ubuntu BIOS install to EFI/UEFI without boot-repair on single boot hardware? - Ask Ubuntu
- How to change ubuntu install from Legacy to UEFI - Ask Ubuntu
- How to reinstall GRUB2 EFI? - Super User
- Does the UEFI partition either “MUST” or “SHOULD” be first for some reason? If so why? - Ask Ubuntu
- Steps to Convert MBR to GPT Ubuntu / Debian with images - LinuxTopic
- WindowsDualBoot - Ubuntu Documentation