TL; DR如何从头开始创建 EFI 系统分区?创建后如何将 EFI 固件放入其中?
长版本
我有一台东芝 T430 笔记本电脑。我收到它时安装了 Windows 7(但我认为它最初附带的是 Windows 8)。我在上面安装了 Ubuntu,但删除了磁盘上的一些分区,结果 Windows 被删除了,只剩下 Ubuntu。删除的分区中有 EFI 系统分区。我发现 Ubuntu 现在以传统模式(而不是 UEFI)启动。我正在尝试跟进本指南将介绍如何将我的 Ubuntu 安装从 Legacy 转换为 UEFI。问题是 - 由于没有 EFI 分区,每当我从 BIOS 选择使用 UEFI 启动时,我都无法启动。这不仅适用于硬盘,还适用于 USB 和 DVD。我认为这是合乎逻辑的 - 它需要一个 EFI 分区,但由于找不到它,它无法继续启动,无论是从 HDD 还是 DVD。那么我该如何重新创建 EFI 分区?
上面的指南说:
创建 EFI 分区
如果您在 Ubuntu 安装程序中手动对磁盘进行分区,则需要确保已设置 EFI 分区。
如果您的磁盘已包含 EFI 分区(例如,如果您的计算机已预装 Windows8),它也可以用于 Ubuntu。不要格式化它。强烈建议每个磁盘只有 1 个 EFI 分区。
可以通过较新版本的 GParted 创建 EFI 分区(12.04 磁盘中包含的 Gparted 版本就可以),并且必须具有以下属性:
挂载点:/boot/efi(备注:使用手动分区时无需设置此挂载点,Ubuntu 安装程序会自动检测)
大小:最小 100MiB。建议 200MiB。
类型:FAT32
其他:需要“启动”标志。
我在创建此分区时遇到了一些问题:
- 我从实时 Ubuntu DVD 启动,打开 GParted,创建一个 200MB 分区并将其格式化为 FAT32。
- 在 GParted 中,我无法设置挂载点,因此无法设置引导标志。
- 我没有设置挂载点,
/etc/fstab
因为它是一张实时 CD,而且与正常启动相比,fstab 看起来与我预期的完全不同。无论如何,我只是不知道要设置什么值。
我再次通过 Live DVD 启动,然后选择安装 Ubuntu。然后我按照上述标准创建了一个分区 - 挂载点、200MB、FAT32、启动标志。
但是,我仍然遇到这个问题,我想这是因为该分区上没有 EFI 固件,它只是一个空分区,适合安装 EFI 固件。
那么,我该如何创建一个包含 EFI 软件的 EFI 分区,以便笔记本电脑可以再次以 UEFI 模式启动?
解决方案谢谢你们的回答。我所做的是从头开始安装 Windows 8.1,方法是格式化整个磁盘,然后在其旁边安装(这次正确)Ubuntu。这些是我现在的分区:
在 Win 8 安装期间,一旦我删除所有现有分区并让 Windows 重新格式化磁盘,它就会在主安装分区之外自动创建三个附加分区,即 1、2、3。现在,在我拥有正确的 ESP 后,我可以在 UEFI 模式下从 HDD 或 DVD 启动。
您说 ESP 默认不存储任何信息,但我猜想当操作系统安装时,它会将一些信息放在那里。所以我想我的情况是这样的:我把它抹掉了,尽管我重新创建了它,但它没有任何信息,因为 ESP 的创建是在操作系统安装后完成的。我丢失了 Ubuntu 安装(没什么大不了的,反正它是一个全新安装),但我想为了保存它,我应该遵循重力的建议。虽然没有时间,但令人高兴的是现在一切都很好。
答案1
首先,您没有在 GParted 中设置挂载点;这是通过命令手动(临时)完成的,mount
或者通过编辑永久完成的/etc/fstab
。因此,您对这个问题的担心是没有根据的。
其次,EFI 系统分区 (ESP) 只是一个设置了特定类型代码(即 GPT 磁盘上的 C12A7328-F81F-11D2-BA4B-00A0C93EC93B)的 FAT 分区。请注意,中的挂载点/etc/fstab
不是 ESP 定义的一部分;在 Linux 中,通过将 挂载在 来访问 ESP 只是常规做法(但不是必需的)/boot/efi
,通常通过/etc/fstab
条目进行。设置类型代码的方式因程序而异:
- 在中
gdisk
,将类型代码设置为 EF00。(gdisk
使用扩展到磁盘上的实际类型代码的双字节类型代码;“EF00”只是“C12A7328-F81F-11D2-BA4B-00A0C93EC93B”的助记符。) - 在 GParted 或 中
parted
,您可以设置“启动标志”。但请注意,这有效仅有的在 GPT 磁盘上;您无法使用这些程序在 MBR 磁盘上设置 ESP 类型代码。(这通常不是什么大问题,因为基于 EFI 的计算机通常从 GPT 磁盘启动。) - 在 Ubuntu 安装程序中,您将该分区标识为“EFI 启动分区”。然后它会设置类型代码和将适当设置
/etc/fstab
。 - 在较新版本的 Linux 中
fdisk
,您可以通过分区编号(GPT 磁盘上“EFI 系统”为 1,MBR 磁盘上为 0xEF)或者在 GPT 磁盘上输入完整类型代码来设置分区类型。
第三,ESP 不保存固件——顾名思义,固件存储在主板上的芯片中。因此,您在 ESP 上安装 EFI 固件的努力是徒劳的。(这条规则有两个例外。首先,您可能在 ESP 上存储固件文件,以便更新计算机上的固件。但这只是一个临时保存区域。其次,二重唱或者三叶草引导加载程序,EFI 被加载为常规程序,通常来自 ESP。不过,这些工具是 BIOS 引导加载程序,使仅使用 BIOS 的计算机能够像 EFI 机器一样启动;它们是不是通常用于带有 EFI 固件的计算机,您声称您的计算机有这种固件。从技术上讲,DUET 和 Clover 都不是固件;它们是 BIOS 引导加载程序,其功能与 EFI 相同。)
最后,我可以想到导致您问题的一些可能原因,但如果没有更多信息,我需要写半本书才能涵盖所有原因。我建议您运行启动信息脚本在计算机上。这将生成一个名为的文件RESULTS.txt
。将其发布到pastebin 网站并回发文档的 URL。这将提供有关配置的硬数据,从而大大减少导致问题的可能原因范围。
答案2
EFI 分区不保留固件(存储在主板上的芯片中);它保留引导加载程序对于已安装的操作系统。它基本上是 EFI 的替代方案,将引导加载程序放在磁盘的第 0 个扇区中,就像 BIOS PC 的情况一样。
这意味着,一旦你有了这样的分区,当你安装操作系统时,它应该会自动填充。(尽管安装光盘本身也必须在 EFI 模式下启动,否则它就不会费心设置 UEFI 启动……事实上,设置的某些部分甚至无法从 BIOS 模式完成。)
如果您已经安装了 Ubuntu,则需要:
安装UEFI版本的GRUB;我认为它在
grub-efi-amd64-signed
包裹里。grub-install --target=x86_64-efi-signed
(对于未签名的
grub-efi-amd64
版本,它是x86_64-efi
。)确保 GRUB 已安装
\EFI\Boot\bootx64.efi
在 EFI 系统分区中。(我在这里使用 EFI 路径语法;如果您在 Linux 上安装分区/boot
,则它将是/boot/EFI/Boot/bootx64.efi
。)如果还没有,请
grubx64.efi
手动复制到该位置。这是必要的,因为
grub-install
除非系统具有已经在 EFI 模式下启动。(在 BIOS 模式下无法访问“EFI 变量”。)因此,启动 GRUB 的唯一方法是将其放在“后备引导加载程序”位置。重启。尝试在固件的启动菜单中选择某种 EFI 模式(EFI 固件有自己的启动菜单,甚至在 GRUB 之前)。
检查是否
dmesg | grep "efi:"
显示任何内容,以确认您处于 EFI 模式。
答案3
使用记事本创建两个文件并将它们保存到您的 USB Windows 安装驱动器。
另存为:CreatePartitions-UEFI.txt
select disk 0
clean
convert gpt
rem == 1. System Partition =====================
create partition efi size=210
format fs=fat32 quick label="SYSTEM"
active
rem == 2. Microsoft Reserved (MSR) partition ======
create partition msr size=16
rem == 3. Windows partition ===================
create partition primary size=xxxxxx
format fs=ntfs quick label="Windows"
assign letter="W"
rem == 4. Recovery tools partition ================
create partition primary size=460
format fs=ntfs quick label="Recovery"
assign letter="R"
list volume
使用记事本创建另一个文本文件:
SaveAs:diskpart-UEFI.txt
diskpart /s D:\CreatePartitions-UEFI.txt
REM where D:/ is the usb drive. This command runs the text file to install the partitions.
如果您使用 MBR,命令将是转换 mbr。
要获取 Windows 分区的大小,请将您的硬盘大小乘以 1024,100 GB 硬盘乘以 1024 等于 102400 减去 210(efi 大小)减去 16(msr 大小)减去 460(保留大小)等于您将放入 Windows 分区大小的大小。(xxxxxx)
您可以从终端(命令提示符)更改分区大小 cd /d D: > notepad CreatePartitions-UEFI.txt
当您在 USB 驱动器中时,使用记事本打开 diskpart-UEFI.txt 并保持打开状态或记下命令,这样您就不会犯错误。将分区大小更改为您喜欢的大小后,关闭它,然后 cd /dx:/Sources,然后运行 diskpart /s D:\CreatePartitions-URFI.txt。
列出卷,因为最后一个命令会显示分区,如果满意,请退出 > 关闭计算机 > 重新启动 > 安装
答案4
使用 gnome-disks,包“gnome-disk-utility”,它非常方便。