如何从EFI / UEFI引导Ubuntu?


20

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

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

我认为这是由于EFI。

回归:

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

如何在装有EFI的计算机上安装Ubuntu?-或者,由于可能已经安装了Ubuntu:如何使它启动Ubuntu?


2
由于已经“成功”安装了Ubuntu,因此您只需要重新安装grub-efi。那正是我昨天要做的:superuser.com/q/372962/37511看看。
Maxime R.

我尝试按照superuser.com帖子中的说明进行操作。它没有使Ubuntu启动:(
ervingsb 2011年

您能否提供有关线程ubuntuforums.org/showthread.php?t=1901748的一些详细信息?什么工作,什么都没有,任何错误信息等
马克西姆R.

Answers:


11

这是nerasezi在Ubuntu论坛中修改的帖子

UEFI的主要来源是Ubuntu UEFI指南

以下是他执行的步骤:

  1. 使用与UEFI体系结构匹配的实时CD。主要是x86-64。启动实时CD(xubuntu或lubuntu。它们是轻量级的台式机,但它也应与Ubuntu和kubuntu一起使用)。

    确保实时系统以UEFI模式启动。您可以在UEFI设置上检查它,可能在“启动”选项或类似选项下。就我而言,只需在设备名称之前添加“ UEFI”前缀。

  2. 实时系统运行后,通过终端通过键入以下内容来设置root密码:
    sudo passwd root

    然后从默认的live cd用户注销,并以gui模式以root用户身份登录。插入硬盘驱动器。我使用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要求安装以下程序(构建依赖项):

    野牛autoconf automake flex autogen python(2.x系列)(如果从bzr回购构建则用于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

    efibootmgr已添加到您需要安装的软件中,因为稍后将需要它。

    对于64位(U)EFI:

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

如果您使用的是32位体系结构,请查看我在顶部提供的链接中的在线文档。

在(U)EFI系统中安装GRUB2

确定您的EFI系统分区。(如果在第二个hd上设置,则应为/ 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访问启动管理器变量。最初,如果在BIOS模式下安装了grub2-efi,则用户需要从固件控制台本身手动启动“ 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,我将其设置为默认启动选项。


是否可以在非EFI安装上安装efibootmgr?从源代码编译grub2还是真的有必要吗?引导修复是另一种选择,但是由于不同厂商实施UEFI规范的方式不同,因此修复成功率也有所不同。这也意味着某些机器可能无法实现“将固件启动默认为GRUB2(U)EFI”。
geezanansa

哇,这是个老答案。我想问一下您在一个新问题中提到的内容,因为此后发生了很多变化,而在我处理过的某些情况下,有关不同供应商实现的部分已失控。
Luis Alvarado

如果在这里找不到所需的答案,那么(和您一样,这就是OP)就不是骗子了,因为我假设您尚未找到所需的答案。除此之外,还有许多与此类似的问题,实际上在如何解决我们在过去6到12个月中看到的整个EFI问题方面,存在着一种或另一种不同的问题。
Luis Alvarado

1
可以肯定的是-共同点= GRUB
geezanansa

那么如何从非uefi系统将启用UEFI的grub安装到USB记忆棒上?
trusktr

5

为了帮助确认您的计算机是否支持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+)在rodsbooks上(该链接用于rEFInd,它是使用Grub2的替代方法)。rodsbooks网页会定期更新,并且是非常可靠的信息来源。作者是UEFI教授,至少可以说是一个天才!

参照这个rodsbooks 显示,Ubuntu的11.10使得ESP的使用FAT16文件系统,其中一些UEFI固件需要一个ESP与FAT32文件系统。如果您执行Ctrl+ F并在本段链接的页面中搜索Fedora,则将找到完整的说明。(在“查找栏”中单击“下一步”,直接转到所引用的信息)。
考虑到安全启动所需的UEFI规范=> UEFI 2.2,并且预装Windows 8的计算机将使用UEFI 2.3.1。
所有这些都证明Ubuntu 11.10不具有安全启动功能,因此安全启动不是问题。

使用UEFI后可以安装Windows,而Windows仅在使用UEFI时才能使用GPT。由于安装程序缺陷,Ubuntu使用BIOS /旧版设置进行安装。例如,Ubuntu可以使用BIOS或UEFI都安装到GPT,这导致需要切换固件设置才能启动每个OS。

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

一种简单的解决方案是运行Boot-repair-disk(与使用完整的Ubuntu.iso相比,下载cd .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)。

它强制将常规GRUB安装在2个预制分区上,并将GParted安装在USB记忆棒上。参加者是:

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

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

这样,不会触摸Windows“系统保留”分区和PQSERVICE Acer隐藏分区。


谢谢。我拒绝遵循路易斯·阿尔瓦拉多(Luis Alvarado)的步骤,这种简单的方法为我做到了。我并不是说Luis的答案是不正确的,但是,如果要让Ubuntu启动就不得不麻烦很多,我宁愿使用Windows。是的,我说了。因此,在尝试从头开始几乎构建自己的linux之前,请尝试此操作。这可能使您不必将UEFI板和Ubuntu USB密钥踢出mf窗口。
加百利

链接的第一句话“这仅适用于Windows不在EFI模式下运行的系统” ... hmmmm。
geezanansa

2

您可以制作可与EFI系统一起使用的USB可引导驱动器,但我不像其他一些人那么老练,因此我想出了一种简单且可行的方法:)

在具有EFI BIOS的机器上,插入具有Parted Magic的CD / DVD(我将其放在HIREN Boot CD上,而不是USB上制成了HIREN Boot CD)从该CD / DVD启动。

进入Parted Magic后,插入一个空的USB跳转驱动器,该驱动器至少具有2GB的内存。打开Parted Magic中包含的Unetbooten实用程序。运行程序,然后选择要加载到跳转驱动器上的任何发行版。按照说明进行操作,等待其完成。

该USB驱动器现在应该在任何EFI系统上启动。至少对我有用:oP


Unetbootin是创建USB安装介质的好方法。我还可以推荐包含通用USB安装程序的pendrivelinux实用程序(pendrivelinux.com/universal-usb-installer-easy-as-1-2-3)这些工具只是为.iso和格式化驱动器(FAT32)提供了GUI,就像反复练习后,使用CLI可以轻松实现。但是,这仍然不是让Ubuntu安装程序使用U / EFI运行的解决方案。也就是说,无论使用哪种媒体(DVD或USB),iso都是相同的。安装程序是问题所在,而不是用于安装它的介质。
geezanansa

1

您需要弄清楚如何获取BIOS以EFI模式而非BIOS模式引导安装CD。您将知道它正在efi模式下启动,因为您将获得一个grub菜单,而不是通常的syslinux菜单。


我认为它已经在EFI模式下启动。我得到一个GRUB菜单。不是带有Ubuntu徽标的通常的半图形菜单。仅有一个带有三个选项的黑白GRUB菜单:-安装前尝试ubuntu-安装ubuntu-检查是否存在缺陷。
ervingsb 2011年

@ervingsb,然后假定您告诉安装程序使用整个磁盘,而不是手动分区,则应该这样做。
psusi 2012年

1
好吧,它没有。我放弃了通过USB进行安装。Ubuntu论坛上有人建议我从CDROM而不是USB安装。这使它起作用。
ervingsb 2012年

1

我遇到了这样的问题,即在Lenovo ThinkCentre M91p上安装Ubuntu 14.04的问题,并且有一个快速/简便的解决方案:

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

这对我一直有效。

可以肯定它可以工作,因为Ubuntu安装程序在决定要安装哪个引导加载程序时会检测BIOS是否支持EFI。通过将BIOS设置为旧版,Ubuntu最终安装了可与这些Lenovo机器一起使用的旧引导程序。


1

在BIOS设置中,将硬盘模式更改为IDE,然后从USB闪存驱动器启动。它将以非UEFI模式安装,并且在安装后启动也可以正常工作。

对于在最新版BIOS上运行的Lenovo ThinkCentre Edge 71上的Ubuntu 16.04,此特定方法非常适合我。


1
欢迎顶级askubuntu!感谢您的帮助!由于该帖子已有好几年历史了,并且该问题涉及一个不再受支持且有多个答案的版本,如果您可以将精力集中在[here] askubuntu.com/unanswered),我相信社区将不胜感激
怪胎长老

感谢您的想法-但是,我遇到了这篇文章,因为我遇到的问题是最新的受支持版本,请按照我提供的步骤进行纠正。如果您可以提出描述相同问题的较新帖子,我也很乐意在此发布。
Gregg B.

如果您在当前发行版中遇到了此问题,请编辑您的答案以指明您正在运行的版本,以帮助那些遇到相同问题的人,并通过发行版来找到您的答案。谢谢!
年长者怪胎

那就是我的OP的“ 16.04”已经引用的:最新的LTS版本。您还要我编辑什么?
Gregg B.

对不起,我错过了。+1
极客长老

0

我也遇到过类似的问题。

我所经历的是带有EFI的计算机也配备了BIOS。我疯狂地向F2发送垃圾邮件,发生的事情是我可以选择使用EFI或Standard BIOS。

但是请注意,如果您使用BIOS,计算机将引导至消息:“找不到操作系统”。

因此,您可以从那里格式化计算机,使其像普通PC一样启动。


0

我遇到了同样的问题...我在台式机上买了这款新的Lenovo野兽,遇到了同样的问题,无论如何我都不希望使用WIN 8.1,(从Red Hat 6.1开始就一直在使用Linux)但是我并不熟悉与UEFI / EFI完全兼容。PC甚至无法启动liveCD。在此博客上找到tru信息后,我发现您必须在UEFI / EFI / BIOS中进行一些更改,首先是禁用CSM,然后在启动启动选项中选择“仅旧版”。重新启动并繁荣!我是在 。安装了Ubuntu 12.04,我很高兴。后来我发现将相同的设置更改回“仅UEFI”错误“未找到操作系统”后,将无法启动12.04。据我所知,Ubuntu在12.10开始支持此UEFI,我将其升级到13.04,更改了相同的设置,启用仅限CSM和UEFI,瞧!我从UEFI启动,发现机器运行得更好!您不必从UEFI进行全新安装,只需将其升级到13.04 / 10,然后又更改回UEFI,它就对我有用。...等一下,看看Linux使用此相当新的功能UEFI / EFI是做什么的,这里有些


请编辑您的答案,并通过在其主体内添加段落来使其更具可读性。而且,有两个参考文献会很棒。
Danatela 2014年

0

我解决了这个问题,我使用Ubuntu 16.04和Windows 10,但无法自动启动到我的Ubuntu。我的EFI分区是FAT32

确保您的ubuntu分区首先启动,

$ sudo su
# cd /boot/efi/EFI/Boot
# mv bootx64.efi bootx64_.efi
# cp ../ubuntu/shimx64.efi bootx64.efi
# cp ../ubuntu/grubx64.efi grubx64.efi
# update-grub
# reboot

-2

这里同样的问题。我已经通过从我的SuperGrub CD永久启动来“解决”它。我不介意这样做。我将其视为安全功能;我的SuperGrub CD是我的附加钥匙。在Ubuntu中检查硬盘时,我可以看到Ubuntu-HDD是非MBR磁盘。看起来像重新分区该磁盘,添加MBR可以解决问题,但是我懒得经历所有这些麻烦。


该问题隐式询问“如何使用U / EFI引导Ubuntu?” 您可能会发现MBR与MSDOS驱动器关联,而U / EFI使用GPT驱动器。当使用grub_bios分区时,Ubuntu可以使用GPT,这意味着不使用UEFI模式引导,而是使用GPT驱动器上的BIOS /旧模式。Windows只会使用UEFI引导到GPT驱动器。这意味着在使用Windows的UEFI和Ubuntu的bios_grub(MBR)的双启动系统上,这意味着Windows可以启动,但不能启动Ubuntu,因为固件设置需要关闭UEFI才能启动Ubuntu。正如OP所描述的
。...– geezanansa
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.