Ale*_*der 41 bios linux boot partitioning windows-8
TL; DR如何从头开始创建 EFI 系统分区?创建 EFI 固件后,如何将其放在上面?
长版
我有东芝 T430 笔记本电脑。我收到它时安装了 Windows 7(但我认为它最初是随 Windows 8 一起提供的)。我在其上安装了 Ubuntu,但删除了磁盘上的一些分区,因此我最终清除了 Windows,只有 Ubuntu。被删除的分区中有 EFI 系统分区。我发现 Ubuntu 现在以 Legacy 模式(而不是 UEFI)启动。我正在尝试按照本指南将我的 Ubuntu 安装从旧版转换为 UEFI. 问题 - 因为每当我从 BIOS 中选择使用 UEFI 启动时都没有 EFI 分区,所以我无法启动。这不仅适用于硬盘,也适用于 USB 和 DVD。我认为这是合乎逻辑的 - 它需要一个 EFI 分区,但由于找不到它,因此无法继续从 HDD 或 DVD 引导。那么如何重新创建 EFI 分区呢?
上面的指南说:
创建 EFI 分区
如果您在 Ubuntu 安装程序中手动对磁盘进行分区,则需要确保设置了 EFI 分区。
如果您的磁盘已经包含一个 EFI 分区(例如,如果您的计算机预装了 Windows8),它也可以用于 Ubuntu。不要格式化。强烈建议每个磁盘只有 1 个 EFI 分区。
EFI分区可以通过最近版本的GParted来创建(12.04磁盘中包含的Gparted版本就可以了),并且必须具备以下属性:
挂载点:/boot/efi(备注:手动分区时无需设置该挂载点,Ubuntu安装程序会自动检测)
大小:最小 100Mib。推荐 200MiB。
类型:FAT32
其他:需要一个“引导”标志。
我在创建这个分区时遇到了一些麻烦:
/etc/fstab
因为它是一张实时 CD,并且与正常启动相比,fstab 看起来与我预期的完全不同。无论如何,我只是不知道要设置什么值。我通过 live DVD 再次启动,然后选择安装 Ubuntu。然后我创建了一个具有上述标准的分区 - 挂载点、200MB、FAT32、引导标志。
但是,我仍然有这个问题,我想是因为在那个分区上没有EFI固件,它只是一个空分区,适合有EFI固件。
那么,我如何创建一个包含 EFI 软件的 EFI 分区,以便笔记本电脑可以再次以 UEFI 模式启动?
解决方案谢谢两位的回答。我所做的是通过格式化整个磁盘然后在它旁边安装(这次正确)Ubuntu 从头开始安装 Windows 8.1。这些是我现在的分区:
在 Win 8 安装过程中,只要我删除了所有现有分区并让 Windows 重新格式化磁盘,它就会自动创建除了主安装分区之外的三个附加分区,即 1、2、3。现在,在我有了一个合适的 ESP 之后,我可以在 UEFI 模式下从 HDD 或 DVD 启动。
你说ESP默认不存储任何信息,但我猜当操作系统安装时,它会在那里放一些信息。所以我想我的情况如下:我已经把它抹掉了,即使我重新创建了它,它也没有填充任何信息,因为 ESP 的创建是在安装操作系统后完成的。我丢失了 Ubuntu 安装(没什么大不了的,无论如何它都是全新安装),但我想为了保存它,我应该遵循grawity的建议。虽然没有时间,但很高兴现在一切都很好。
Rod*_*ith 46
首先,您不要在 GParted 中设置挂载点;这是通过mount
命令手动(和临时)完成的或通过编辑永久完成的/etc/fstab
。因此,您对这个问题的关注是错误的。
其次,EFI 系统分区 (ESP) 只是具有特定类型代码(即 GPT 磁盘上的 C12A7328-F81F-11D2-BA4B-00A0C93EC93B)集的 FAT 分区。请注意,挂载点 in/etc/fstab
不是 ESP 定义的一部分;在 Linux 中通过将 ESP 挂载到 来访问 ESP 只是常规(但不是必需的)/boot/efi
,通常是通过一个/etc/fstab
条目。设置类型代码的方式因程序而异:
gdisk
,您将类型代码设置为 EF00。(gdisk
使用扩展为磁盘上实际类型代码的两字节类型代码;“EF00”只是“C12A7328-F81F-11D2-BA4B-00A0C93EC93B”的助记符。)parted
,您设置“引导标志”。但是请注意,这仅适用于 GPT 磁盘;您无法使用这些程序在 MBR 磁盘上设置 ESP 类型代码。(这通常不是什么大问题,因为基于 EFI 的计算机通常从 GPT 磁盘启动。)/etc/fstab
适当的设置。fdisk
,您可以通过其编号(GPT 磁盘上的“EFI 系统”为 1 或 MBR 磁盘上的 0xEF)或通过在 GPT 磁盘上输入完整类型代码来设置分区类型。第三,ESP 不保存固件——根据定义,固件存储在主板上的芯片中。因此,您在 ESP 上安装 EFI 固件的努力是徒劳的。(此规则有两个例外。首先,您可以在 ESP 上存储固件文件以更新计算机上的固件。不过,这只是一个临时保存区域。其次,DUET或Clover引导加载程序, EFI 作为常规程序加载,通常来自 ESP。不过,这些工具是 BIOS 引导加载程序,使仅 BIOS 的计算机能够像 EFI 机器一样引导;它们不是通常用于带有 EFI 固件的计算机,您声称您的计算机具有该固件。从技术上讲,DUET 和 Clover 都不是固件;它们是与 EFI 执行相同工作的 BIOS 引导加载程序。)
最后,我可以想到一些可能导致您的问题的原因,但没有更多信息,我需要写半本书来涵盖所有这些。我建议您在计算机上运行引导信息脚本。这将生成一个名为RESULTS.txt
. 将其发布到pastebin 站点,然后将 URL 与您的文档一起发回。这将提供有关您的配置的硬数据,这将大大减少问题的可能原因范围。
use*_*686 12
EFI 分区不保存固件(存储在主板上的芯片中);它保留已安装操作系统的引导加载程序。它基本上是将引导加载程序放在磁盘的第 0 个扇区的 EFI 替代方案,就像 BIOS PC 的情况一样。
这意味着一旦你有了这样一个分区,它应该在你安装操作系统时自动填充。(虽然安装光盘本身很可能也必须在 EFI 模式下启动,否则它不会打扰设置 UEFI 启动......事实上,设置的某些部分甚至无法从 BIOS 模式完成。)
如果您已经安装了 Ubuntu,则需要:
安装UEFI版的GRUB;我认为它在grub-efi-amd64-signed
包装中。
grub-install --target=x86_64-efi-signed
Run Code Online (Sandbox Code Playgroud)
(对于未签名的grub-efi-amd64
版本,它是x86_64-efi
.)
确保 GRUB 已安装\EFI\Boot\bootx64.efi
在 EFI 系统分区中。(我在这里使用 EFI 路径语法;如果您/boot
在 Linux 上挂载分区,它将是/boot/EFI/Boot/bootx64.efi
.)
如果没有,请grubx64.efi
手动复制到该位置。
这是必要的,因为grub-install
除非系统已经在 EFI 模式下引导,否则无法将自身添加到 EFI 引导菜单。(“EFI 变量”无法在 BIOS 模式中访问。)因此,引导 GRUB 的唯一方法是将其放在“回退引导加载程序”位置。
重启。尝试在固件的引导菜单中选择某种 EFI 模式(EFI 固件有自己的引导菜单,甚至在 GRUB 之前)。
检查是否dmesg | grep "efi:"
显示任何内容,以确认您处于 EFI 模式。