linux uefi无法启动文件,解决UEFI安装无法启动的问题

前言

我们产品是支持UEFI安装的,在很多款机器上都正常的安装。今日在浪潮服务器和技嘉服务器上都遇到一次,可以安装,但是无法正常启动。

所以我们必须要解决此问题,来支持更多的硬件。

基础知识

EFI的全称是,Extensible Firmware Interface , UEFI是Unified EFI。

我们以安装好的Linux系统为例,如何查看我们机器使用的是UEFI还是Legacy呢?

答案是查看如下文件是否存在:

/sys/firmware/efi

下面的输出分别是以Legacy和UEFI模式的情况下,各自的输出情况。

# 没有efi 目录,Legacy模式

root@node243:/sys/firmware# ll

total 0

drwxr-xr-x 4 root root 0 Jul 2 11:16 ./

dr-xr-xr-x 12 root root 0 Jul 2 11:15 ../

drwxr-xr-x 5 root root 0 Jul 2 16:43 acpi/

drwxr-xr-x 12 root root 0 Jul 2 16:43 memmap/

# 有efi 目录, UEFI模式

root@node245:/sys/firmware# ll

total 0

drwxr-xr-x 5 root root 0 Jul 2 16:33 ./

dr-xr-xr-x 12 root root 0 Jul 2 11:29 ../

drwxr-xr-x 5 root root 0 Jul 2 16:43 acpi/

drwxr-xr-x 5 root root 0 Jul 2 16:33 efi/

drwxr-xr-x 16 root root 0 Jul 2 16:43 memmap/

在我们的系统盘上,有单独的一个分区,是boot 分区:

root@node245:/sys/firmware# parted /dev/sda print

Model: AVAGO MR9361-8i (scsi)

Disk /dev/sda: 16.0TB

Sector size (logical/physical): 512B/4096B

Partition Table: gpt

Disk Flags:

Number Start End Size File system Name Flags

1 262kB 538MB 538MB fat32 EFI boot, esp

2 538MB 103GB 102GB ext4

3 103GB 131GB 27.6GB linux-swap(v1)

4 131GB 16.0TB 15.9TB

在fstab中也会有相应的条目:

root@node245:/sys/firmware# cat /etc/fstab

# /etc/fstab: static file system information.

#

# Use 'blkid' to print the universally unique identifier for a

# device; this may be used with UUID= as a more robust way to name devices

# that works even if disks are added and removed. See fstab(5).

#

#

# / was on /dev/sda2 during installation

UUID=efc5dbbf-8eb5-45ba-94b0-ce5253ed5d8d / ext4 errors=remount-ro 0 1

# /boot/efi was on /dev/sda1 during installation

UUID=92A1-DB43 /boot/efi vfat defaults 0 1

# swap was on /dev/sda3 during installation

UUID=59a84533-d365-4e06-8a55-a2fa63b7e82e none swap sw 0 0

如何查看我们的引导项呢:

02cc2ed9ecb363192ac69deb83b8f001.png

这个efibootmgr我们系统默认自带,如果安装模式是EFI的话。其中该命令会自动的显示当前所有启动项,包括启动顺序。

BootCurrent表示我们当前的系统是哪个启动项。因此我们当前的系统是:

Boot0000* grubHD(1,200,100600,3a92c3e7-adc5-4fcc-8197-ac21b84b601d)File(\EFI\grub\grubx64.efi)

对于我们的系统来讲,EFI分区占据sda的第一个分区:

root@node245:/sys/firmware# lsblk

NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT

sda 8:0 0 14.6T 0 disk

├─sda1 8:1 0 512.8M 0 part /boot/efi

├─sda2 8:2 0 95.4G 0 part /

├─sda3 8:3 0 25.7G 0 part [SWAP]

└─sda4 8:4 0 14.4T 0 part

其中 HD(1,200,100600, 3a92c3e7-adc5-4fcc-8197-ac21b84b601d)

1 : partition number

200 : partition offset

100600 : partition size

3a92c3e7-adc5-4fcc-8197-ac21b84b601d : partition GUID:

root@node245:/sys/firmware# ll /dev/disk/by-partlabel/

total 0

drwxr-xr-x 2 root root 180 Jul 2 17:35 ./

drwxr-xr-x 9 root root 180 Jul 2 11:29 ../

lrwxrwxrwx 1 root root 10 Jul 2 11:29 EFI -> ../../sda1

....

root@node245:/sys/firmware# ll /dev/disk/by-partuuid

...

lrwxrwxrwx 1 root root 10 Jul 2 11:29 3a92c3e7-adc5-4fcc-8197-ac21b84b601d -> ../../sda1

....

紧接着的是如下内容

File(\EFI\grub\grubx64.efi)

这指定了我们的OS bootloader 这个文件的类型如下:

root@node245:/boot/efi/EFI/grub# file grubx64.efi

grubx64.efi: PE32+ executable (EFI application) x86-64 (stripped to external PDB), forMS Windows

一般来讲,正常安装好的系统,某个启动条目后面都有File指定某个文件,我们本次探索技嘉设备,安装好了之后并不能正确的启动,我们发现,启动条目后面并没有指定对应的File:

gigabyte_uefi_items.png

我们看到,上面输出中,并没有指定File,我们怀疑这也是为什么技嘉设备不能正常启动的原因,尽管我们在/boot/efi/EFI/grub/存在 grubx64.efi文件。

Fallback Path (回退路径)

debian帮助文档中提到,一些机器的EFI可能存在bug:

Weak EFI implementation only recognizes the fallback bootloader

某些比较脆弱的EFI实现,并不能认识我们的bootloader,导致启动的时候,他会查找默认的回退路径。

UEFI 规范定义了一种“回退”路径 (Fallback path),用于启动此类启动管理器项,其工作原理类似于 BIOS 驱动器启动:它会在标准位置查找某些启动装载程序代码。但是其中的细节和 BIOS 不同。

当尝试以这种方式启动时,固件真正执行的操作相当简单。固件会遍历磁盘上的每个 EFI 系统分区(按照磁盘上的分区顺序)。在 ESP 内,固件将查找位于特定位置的具有特定名称的文件。在 x86-64 PC 上,固件会查找文件 \EFI\BOOT\BOOTx64.EFI。固件实际查找的是 \EFI\BOOT\BOOT{计算机类型简称}.EFI,其中,“x64”是 x86-64 PC 的“计算机类型简称”。文件名还有可能是 BOOTIA32.EFI (x86-32)、BOOTIA64.EFI (Itanium)、BOOTARM.EFI(AArch32,即32位ARM)和 BOOTAA64.EFI(AArch64,即64位ARM)。然后,固件将执行找到的第一个有效文件(当然,文件需要符合UEFI规范中定义的可执行格式)。

回到我们的情况,技嘉的机器可能只认 /boot/efi/EFI/BOOT/BOOTx64.EFI 这个回退路径,因此昨晚我和胜国,将我们自己的文件 /boot/efi/EFI/grub/grubx64.efi 拷贝到了 回退路径,这样,之前不能启动的路径就可以自如的启动了。

所以对于我们的问题,比较正确的处理方法是,grub-install执行完毕后, efibootmgr -v

grep grubx64.efi ,如果可以找到我们的File,那么什么也不做,如果找不到,则执行紧急补救不错,即cp我们的文件到回退路径。

efibootmgr

这个工具非常有用,可以创建新的启动项:

创建新的启动项

–create (-c) 表示要创建条目

–part (-p) 用于提供ESP所在的分区号

–disk (-d) 用于提供ESP所在的磁盘名称

–label (-L) 用于提供条目名称

–loader (-l) 用于提供要加载的EFI image

a702805988ccbf36075a1501149da866.png

删除某启动项

可以使用-B参数删除某个启动项:

-b | --bootnum XXXX

Modify BootXXXX (hex)

-B | --delete-bootnum

Delete bootnum

de322f0d9ad1a5499cbe358e34856cf1.png

改变启动顺序

-o | --bootorder XXXX,YYYY,ZZZZ

Explicitly set BootOrder (hex). Any value from 0 to FFFF is accepted so long as it corresponds to an existing Boot#### variable, and zero padding is not required.

出现在前面的启动项,启动优先级要高。

启用禁用启动项:

efibootmgr -a -b X ==> 启用标号为X的启动项

efibootmgr -A -b X ==> 禁用标号为X的启动项

参考文献

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552355.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何连接Linux上的服务器 网络编程,Linux 网络编程 一

一、网络编程基础网络编程本身是一门很大的学问,涉及到的东西也很多,尤其是各种协议。先看图:正如上图所示,网络编程中包含五大层面(也有区分六个层面),从应用层到物理层可以明显看出 越往下越接近计算机硬件。自己并不…

电脑练习打字软件_Type Fu for Mac 4.5.7 共享版 – 优秀的键盘打字练习软件

下载地址:图片中有地址系统兼容性:OS X 10.10或更高版本,64位处理器Type Fu 教您如何在不看键盘的情况下加快打字速度,从而提高您的打字技巧。Type Fu 功能特点:通用。该应用程序适合所有年龄段和技能水平。您可以是初…

access如何保存小数点后_如何把示波器当记录仪用

波形记录仪能长时间的采集信号,并将数据保存到设备的硬盘中,采集的时间长度取决于采样率以及硬盘容量,但和示波器相比,它不具备实时分析的功能,而这正好是示波器的强项。示波器能在长时间采集波形的同时,对…

完全相同的4个小矩形如图所示放置_分享 | 你想知道的100个桥梁知识点!

1、组合梁桥composite beam bridge指以梁式桥跨作为基本结构的组合结构桥,既两种以上体系重叠后,整体结构的反力性质仍与以受弯作用负载的梁的特点相同。这类桥的特点主要表现在设计计算工作繁重,构造细节及内力复杂。2、空腹拱桥open spandr…

4am永远 鼠标按键设置_4AM碾压性夺冠创PCL历史!韦神赛后采访彰显霸气

《绝地求生》PCL秋季赛的战斗已经全部落下帷幕了,Team Razer 雷蛇战队成员,国内最具人气的4AM战队凭借着在季后赛的出色发挥,以316分的高分碾压全场,成功斩获本次PCL秋季赛的冠军,成为PCL联赛首个双冠队伍。随着金色的…

angular项目打包_vue项目部署的最佳实践

作者:沉末_https://juejin.im/post/5eb2243e51882555d8457833前 言 使用vue、react、angular等技术开发过程中,我们都会遇到以下问题:首屏加载慢;每一次更新都需要清除浏览器缓存才能看到效果(经常被测试吐槽)。这两个问题可以从很…

run as date怎么用_熟词僻义 | date是一种什么水果?

今天小站来和各位聊聊date这个熟词。说起date,这可是工作生活中一个极其常用的单词。无论是为下次工作会议定个日期,还是为即将举行的婚礼定个日子,都可以用“fix/set a date for sth”来表示。在沃尔玛等超市购物,经常可以看到食…

Macbook Pro 201 装Win10 声卡_苹果电脑真那么耐用吗?我拿五年前的Mac试了试-苹果,MacBook ——快科技(驱动之家旗下媒体)-...

平时对电脑关注比较多的小伙伴们应该知道,一直以来,同样硬件配置下的苹果电脑通常会比其它品牌的笔记本电脑要贵上不少。别问( 为什么 ),问就是它做工优秀、经久耐用。话虽然是这么说没错,但托尼仔细想想网上这个说法好像又有点问…

linux一个vlan配置多个端口映射,Linux 设置 多ip,多vlan

引:在Linux下有时候需要给一个网卡绑定多个IP,本文介绍在Redhat系列(redhat,Fedora Core,Centos)中的实现方法和一种在Gentoo等其他Linux中普遍适用的方法。在Linux下有时候需要给一个网卡绑定多个IP,本文介绍在Redhat系列(redhat,Fedora Core,Centos)中…

teamviewer一直验证账户_苹果手机下载软件一直需要验证

用过苹果手机的朋友可能都会遇到一种情况,那就是在App Store下载应用的时候,偶尔会弹出需要验证手机的窗口,但是我们按照系统要求给绑定的手机号发送了短信以后却没有任何反应了,遇到这种情况应该如何解决呢?接下来我就…

200 switching to ascii mode_【图片】15005377957 三轮车载式液压打井机XYC-200A 型深水井钻机游走乡【地勘吧】...

巨匠集团长期坚持以客户为基本,不断采纳客户所提出的意见和建议,不断更新自己的产品,让您用到质量过硬,操作简单的产品。巨匠集团,坚持做您身边的钻机帮手。一、XYC-200A三轮车载水井钻机适应范围地质普查勘探&#xf…

c++用一级运算比较大小_16.初中数学:怎么比较a、b、c、d的大小?幂的运算,基础常见考题...

欢迎您来到方老师数学课堂,请点击上方蓝色字体,关注方老师数学课堂。所有的视频内容,全部免费,请大家放心关注,放心订阅。初中数学:怎么比较a、b、c、d的大小?幂的运算,基础常见考题…

php 谷歌翻译api_武汉武昌区地质勘测翻译公司-译嘉合翻译

Angie就结合自己的经验来给大家谈谈如何构建自己的翻译领域吧,相信不管是刚入门急于寻找翻译赛道的新手,还是希望在原有基础上拓宽翻译领域、获得更多合作机会的译员都能带来帮助。地质勘测翻译公司" />鉴于你非英语或翻译专业,要直接…

建立a8 linux开发环境,Fedora 14下建立 omap3530 开发环境 - 交叉编译器

主机升级到Fedora 14,下载了crosstool-ng-1.10.0,编译目标为 arm-cortex_a8编译步骤:1、直接拷贝 crosstool-ng-1.10.0/samples/arm-cortex_a8-linux-gnueabi/crosstool.config 到目标目录中的 .config2、执行 ct-ng menuconfig 查看和校验编…

arm b bl 地址无关码_32位和64位下的arm_pwn初探

32位和64位下的arm_pwn初探前言:pwn的学习之路一直在进行,今天看了arm_pwn,搞环境就搞了半天,琢磨工具使用到做题,这里总结下,希望能帮助到大家,少走一点弯路,后期有机会继续更新。一…

如何用unit test测试controller_如何用电缆故障测试仪冲闪测试确定故障点?

原标题:如何用电缆故障测试仪冲闪测试确定故障点?当我们中试控股在使用电缆故障测试仪检测电缆故障时,遇到故障点二次击穿放电时,其波形要如何分析?首先我们要知道仪器在遇到故障点二次击穿时的表现是怎样的。显示故障…

linux下qt环境的运行,在Linux下使用QT环境来安装和运行WebKit

Installing and Running WebKit in Linux Using QtI’mcoming to appreciate more and more all of the hard work softwaredevelopers perform. I wouldn’t consider myself an open source elitist,but there’s something special about the associated ideologies. When a…

button 样式_缩减 SCSS 50%样式代码的 14 条实战经验

原标题:缩减 SCSS 50%样式代码的 14 条实战经验作者:feishi123前言Sass是CSS3语言的扩展,它能帮你更省事地写出更好的样式表,使你摆脱重复劳动,使工作更有创造性。因为你能更快地拥抱变化,你也将敢于在设计…

神舟电脑装linux双系统,个人windows10和Ubuntu18.04游戏笔记本uefi双磁盘双系统安装过程...

此文章为记录自己的Ubuntu的安装和使用过程本人电脑是128G固态500G机械。固态中装的是windows10,这次决定在机械中安装Ubuntu。虽然网上教程很多,但是我仍然是在参考了多个教程后才动手安装,于是记录自己的安装过程。该机器是神舟Z6-sl7d1,系…

请解释自动装配模式的区别?_如何从齿条优化方面有效节约机床装配时间

齿条:螺纹连接的设计和计算是否正确?如果我们真的想要节约装配成本和时间的话,那么我们首先就需要去选择设计正确的齿条螺钉。那么这时候就紧接着产生了第二个问题:我们应该如何评估并优化这种设计。当我们去观察比较齿轮和齿条这…