如何从 EFI/UEFI 启动 Ubuntu?

如何从 EFI/UEFI 启动 Ubuntu?

我在新买的联想 ThinkCentre Edge 71(型号:1577-G3G)上安装了 Ubuntu 11.10,并启用了 EFI 启动。我选择了使用整个磁盘选项。尽管安装过程没有任何问题/错误,但重新启动时它现在只给我:

没有可启动的操作系统。插入可启动磁盘并按任意键...

我认为这是因为 EFI。

回归:

  • 我已经检查了系统设置(POST 期间按 F1)以找到用于禁用 EFI/UEFI 启动的 BIOS 选项,但是,此机器没有这样的选项。
  • 这可能是由 BIOS 中的“安全启动”功能引起的。
  • 硬件供应商不知道 BIOS 中是否存在任何会阻止 Linux 启动的“安全启动”设置。
  • 联想支持人员对 BIOS 设置“安全启动”一无所知。他们也不知道会有什么限制阻止 Linux 启动。
  • ThinkCentre 1577 BIOS 手册没有提到 EFI、UEFI 或安全启动。

如何在具有 EFI 的机器上安装 Ubuntu? - 或者,由于 Ubuntu 可能已经安装:如何让它启动 Ubuntu?

答案1

这是 nerasezi 在Ubuntu 论坛

UEFI 的主要来源是Ubuntu UEFI 指南

以下是他执行的步骤:

  1. 使用与 UEFI 架构匹配的 Live CD。主要是 x86-64。启动 Live CD(xubuntu 或 lubuntu。它们是轻量级桌面,但也应该适用于 Ubuntu 和 kubuntu)。

    确保您的实时系统以 UEFI 模式启动。您可以在 UEFI 设置中检查它,可能在启动选项或类似选项下。在我的情况下,它只是在设备名称前加上“UEFI”前缀。

  2. 一旦实时系统运行,通过终端输入以下命令设置 root 密码
    sudo passwd root

    然后从默认的 live cd 用户注销并以 root 身份在 gui 模式下登录。插入硬盘。我使用 USB3 便携式硬盘,但在大多数情况下,硬盘是 SATA 内置驱动器。无论如何,请确保您已备份所有数据,因为该过程将清除驱动器上的所有内容。启动 Gparted(gui 工具比文本工具容易得多)并选择您要安装系统的驱动器。(一定要选择正确的!)指向顶部菜单并选择设备>创建分区表... 弹出一条警告消息。单击高级并选择“gpt”。说好 已创建新的 GPT 磁盘布局。现在您需要在其上创建分区。创建第一个和主分区、FAT32 卷非常重要,您需要为其分配标签 EFI。创建分区后,右键单击它并选择“管理标志”。检查“启动”标志并说好。继续创建 / 分区(您可能希望将 /home 和 /boot 分开。照常进行。就我而言,我刚刚创建了 / 分区)和交换区域。始终优先使用主分区,因为使用 GPT 后,4 个主分区的限制已被消除。关闭 Gparted。

  3. 将系统安装到硬盘“/”分区,并记得在此处指定要安装的引导加载程序 (GRUB 1.99)。如果您创建了单独的“/boot”分区,则必须选择该分区来安装引导加载程序。

  4. 以下是 UEFIBooting 指南的部分内容:

    构建 GRUB2 (U)EFI

    下载最新的 grub2 源代码 ZIP 文件。ftp://ftp.gnu.org/gnu/grub/

    构建 grub2 需要安装以下程序(构建依赖项):

    bison autoconf automake flex autogen python (2.x 系列) (如果从 bzr repo 构建,则用于 autogen.sh) texinfo help2man gettext (NLS 支持) device-mapper freetype2 (库)

    sudo apt-get install bison libopts25 libselinux1-dev autogen m4 autoconf help2man libopts25-dev flex libfont-freetype-perl automake autotools-dev freetype2-demos texinfo efibootmgr

    启动管理器已添加到您需要安装的软件中,因为您稍后会需要它。

    对于 64 位 (U)EFI:

export EFI_ARCH=x86_64 ./configure --with-platform=efi --target=${EFI_ARCH} --program-prefix="" make

如果您拥有 32 位架构,请查看我在顶部提供的链接处的在线文档。

在 (U)EFI 系统中安装 GRUB2

确定您的 EFI 系统分区。(如果在第二个硬盘上设置,则应为 /dev/sda1 或 /dev/sdb1)

然后将分区挂载到 /mnt/EFISYS(或您希望的任何挂载点)。以下代码假定 /dev/sda1 为 EFISYS 分区。

sudo mkdir -p /mnt/EFISYS

sudo modprobe dm-mod

sudo mount -t vfat -o rw,users /dev/sda1 /mnt/EFISYS

sudo mkdir -p /mnt/EFISYS/efi/grub

然后,为 GRUB 构建一个 EFI 应用程序并复制它和其他模块:

进入“grub2 编译源/grub-core”目录 - 默认:/usr/lib/grub/{EFI_ARCH}

grub-mkimage -O ${EFI_ARCH}-efi -d . -o grub.efi -p "" part_gpt part_msdos ntfs ntfscomp hfsplus fat ext2 normal chain boot configfile linux multiboot

sudo cp grub.efi *.mod *.lst /mnt/EFISYS/efi/grub

注意:-p“”选项对于创建便携式 grub.efi 应用程序很重要。现在在 /mnt/EFISYS/efi/grub 中创建一个 grub.cfg:

sudo touch /mnt/EFISYS/efi/grub/grub.cfg

使固件默认启动 GRUB2 (U)EFI

对于非 Mac UEFI 系统,efibootmgr 用于修改 UEFI 固件启动管理器。这要求内核在 UEFI 模式下启动,并且内核处理器架构应与固件架构匹配(并且不使用“noefi”),以便加载“efivars”内核模块,并让 efibootmgr 访问启动管理器变量。如果 grub2-efi 是在 BIOS 模式下安装的,则最初用户需要从固件控制台本身手动启动“efi/grub/grub.efi”。然后应运行 efibootmgr 来创建启动项。

sudo modprobe efivars

进入“grub2编译源/grub-core”目录

grub-probe --target=device /boot/efi/efi/grub/grub.efi

假设 grub-probe 的输出为 /dev/sda1

sudo efibootmgr --create --gpt --disk /dev/sda --part 1 --write-signature --label "GRUB2" --loader "\\EFI\\grub\\grub.efi"

在上面的命令中,/boot/efi/efi/grub/grub/efi 可以分成 /boot/efi 和 /efi/grub/grub.efi,也就是 (/dev/sda) -> 分区 1 -> \EFI\grub\grub.efi 。

  1. 打开 Synaptic 并删除所有 grub 包,然后只安装 grub-efi 包(对我来说是 amd64)和所有必要的依赖项。安装完成后,在终端中运行 sudo update-grub。您应该从 /boot/grub 编辑“grub.cfg”,并检查磁盘 UUID 是否与您的磁盘和分区匹配,语音“insmod part_”和“set root='(hd0,”有“gpt”文本行。如果一切正常,请将“grub.cfg”复制到 EFI 系统分区上的“efi/grub”。如果我之前提到的某些内容不匹配,只需编辑 grub.cfg 并手动更改它们的值。然后将文件复制到 Efi 系统分区上的“efi/grub”目录(仍应安装在 /mnt 下)。

    然后,当我重新启动系统时,UEFI 设置下的“启动”选项卡上出现了一个新条目,名为 GRUB2,我将其设置为默认启动选项。

答案2

为了帮助确认您的机器是否支持 U/EFI,只需dmesg | grep EFI在实时桌面会话中从终端运行即可。
为了帮助确认您安装的 Ubuntu 是否已使用 U/EFI 启动,请查看/sys/firmware/efi返回的内容。
一个节省时间的解决方案是确保 Ubuntu 确实已在 UEFI 模式下启动安装时间. 参照较新的Ubuntu UEFI 指南第 2.4 节很好地说明了这一点

确定计算机是否以 EFI 模式启动 CD

警告:即使您的 PC 以 EFI 模式启动 CD,它也可能以传统模式启动 HDD(反之亦然)。

在 64 位 Ubuntu 磁盘上启动时:

  • 如果 BIOS 设置为以 EFI 模式启动 CD,那么您将看到以下屏幕:

UEFI 模式

  • 如果 BIOS 未设置为以 EFI 模式启动 CD,或者磁盘不是 64 位,那么您将看到以下屏幕:

BIOS 模式

请务必使用相同的指南来确保硬盘也使用 UEFI 启动。这可能就像将 SATA 设置为 AHCI 一样简单,但取决于您使用的固件。

一旦进入 grub 屏幕,可以按“c”进入命令行并尝试lsefisystab提供带有 GUID 的 EFI 条目表,这是在安装之前识别是否正在使用 UEFI 的另一种便捷方法。

可以使用它dmesg | grep EFI来识别您的机器是否支持 UEFI。在我的其中一台不支持 U/EFI 的机器上,但这样做会给我带来支持 UEFI 吗?
误导,因为在使用 EFI 启动时,在支持 UEFI 的机器上执行相同的命令会返回更多行(可能超过 50 行),我在以下位置找到了这个简单的提示钓竿书(链接指向 rEFInd,它是使用 Grub2 的替代方案)。rodsbooks 网页定期更新,是一个非常可靠的信息来源。其作者至少可以说是一位 UEFI 教授,即使不是天才!

参考 rodsbooks显示 Ubuntu 11.10 使用 FAT16 文件系统制作 ESP,而一些 UEFI 固件需要使用 FAT32 文件系统的 ESP。如果您按Ctrl+F并在本段中的链接页面上搜索 Fedora,您将找到完整的解释。(在“查找栏”中单击下一步一次可直接转到所引用的信息)。
考虑到安全启动所需的 UEFI 规范是 => UEFI 2.2,而 Windows 8 预装机器将使用 UEFI 2.3.1。
所有这些都证实 Ubuntu 11.10 不具备安全启动功能,因此安全启动不是问题所在。

使用 UEFI 安装 Windows 后(使用 UEFI 时只能使用 GPT),由于安装程序的缺陷,Ubuntu 可能会使用 BIOS/旧设置进行安装。即,Ubuntu 可以使用 BIOS 或 UEFI 安装到 GPT,这导致需要切换固件设置才能启动每个操作系统。

要确定 Windows 是否使用 UEFI,可以使用磁盘管理来确认是否正在使用 GPT。可以使用本指南将 Windows Bios 安装转换为 UEFI将 Windows BIOS 安装转换为 UEFI

一个简单的解决方案是运行 Boot-repair-disk(下载 cd .iso 意味着启动速度会比使用完整的 Ubuntu.iso 然后安装 boot-repair 略快。在运行推荐的修复之前,请检查高级选项,记住您用于启动 boot-repair 的固件设置。Boot-Repair 将安装 grub-efi 并修复固件硬编码问题,以便系统使用 UEFI 并启动 Ubuntu 以及任何其他使用 UEFI 的现有安装。

一个重要的部分(可能是特定于供应商的)是如何在 EFI 模式下启动(即,相同的 Ubuntu 14.04 LTS CD 可以检测两种不同的模式并呈现不同的文本与非文本启动屏幕,如上所示)。

http://forum.hardware.fr/hfr/OrdinateursPortables/portable/resolu-installation-probleme-sujet_67937_1.htm

或这个:

http://rog.asus.com/220572013/rampage-motherboards/rampage-iv-uefi-boot-installation-guide-on-windows-7-or-8/

请注意,在 BIOS 的启动优先级设置中,DVD 通常有两个不同的选项:Px 或 UEFI(或其他词)。其中一个用于 UEFI,另一个用于传统的基于 MBR 的启动。

答案3

解决了我的 ACER 笔记本 5560G 上的 EFI 问题,结果是重命名 Wubi USB 盘上的 EFI 目录和 EFI 文件有效(感谢 immerohnegott)。

它强制在 USB 记忆棒上的 2 个预制分区上安装常规 GRUB,并使用 GParted。分区如下:

  • /boot(100兆)
  • /(70 GB)

重启进入 Windows 7 并安装免费版 EasyBCD。添加一个新条目,Linux -- >> Grub 2它将在所有分区中搜索 GRUB 引导加载程序。

这样,Windows“系统保留”分区和 PQSERVICE Acer 隐藏分区就不会受到影响。

答案4

我在联想 ThinkCentre M91p 上安装 Ubuntu 14.04 时遇到了问题,我有一个快速/简单的解决方案:

  1. 从 Ubuntu 安装磁盘/USB 启动之前,进入 BIOS 并在“启动”选项卡下将“启动模式”从“自动”更改为“传统”。
  2. 安装 Ubuntu。
  3. 如果需要,可以将 BIOS 中的启动模式改回自动。

对于我来说这一直很有效。

确信它可以正常工作,因为 Ubuntu 安装程序在决定安装哪个引导程序时会检测 BIOS 是否支持 EFI。通过将 BIOS 设置为旧版,Ubuntu 最终会安装适用于这些联想机器的旧引导程序。

相关内容