我从闪存驱动器全新安装了 13.04,但重新启动后,我唯一的 uefi 启动选项是基本 efi shell 条目和闪存驱动器 - 根本没有 13.04 的条目。
所以我做的第一件事就是用闪存驱动器启动实时环境,chroot 到 13.04 安装,然后使用 grub-efi 和 efibootmgr 解决问题。
我注意到的第一件事是,复制 resolv.conf 似乎并不能让我在 chroot 环境中获得 wifi 访问权限。
第二件事,尝试创建一个新的 efibootmgr 条目没有任何作用 - 我尝试了一些虚假条目,但验证总是只显示默认的 efi shell 条目。
所以我的主要问题是:他们是否对 efibootmgr 做了任何更改?还有人设法让 13.04 使用 uefi 启动吗?
答案1
我听说某些版本的错误efibootmgr
可能会导致此问题。您可以尝试efibootmgr
在旧版本的 Ubuntu 或救援系统中使用,例如系统救援光盘如果这是导致该错误的原因,则绕过它。
如果这不起作用,您可以尝试将EFI/ubuntu/grubx64.efi
ESP 上的文件复制到EFI/BOOT/bootx64.efi
。如果没有安装其他操作系统,这应该可以让它工作。引导修复工具将自动执行这些操作,甚至更多;即使安装了 Windows,它也应该可以工作。
如果您已安装 Windows,另一个选项是在 Windows 中使用bcdedit
:启动管理员命令提示符,然后键入bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
。 (如果您已激活安全启动,则需要激活shim.efi
或shimx64.efi
[我不确定它在 Ubuntu 中叫什么,随便说说] 而不是grubx64.efi
。)
答案2
3.8 系列内核中的一个错误阻止了 EFI 变量的创建(至少在许多华硕和技嘉主板上),因此 efibootmgr 无法创建任何启动选项(该实用程序本身只是静默退出而不显示任何消息,但您可以在 dmesg 中或通过 strace efibootmgr 找到此错误)。
不幸的是,尽管 Canonical 已经知道这个问题,但它并没有在发布之前修复它,而且它似乎仍然没有发布一个可以工作的内核或可以打印正确错误消息的 efibootmgr。我希望这个问题能尽快得到解决。否则,我的建议是使用旧版本,例如 3.5 系列内核可以在 13.04 上运行,或者您可以使用 12.10 LiveUSB。
造成此问题的上游内核补丁: http://lkml.indiana.edu/hypermail/linux/kernel/1303.0/00887.html
我不确定上游是否也已修复该问题,但肯定已对此进行讨论。
Ubuntu 仍然有问题,相关错误报告: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1167622