阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS7中使用efibootmgr管理UEFI启动项

408次阅读
没有评论

共计 5265 个字符,预计需要花费 14 分钟才能阅读完成。

导读 UEFI 是一种固件接口,在现代机器上已经取代了传统的 BIOS。UEFI 固件的一个特性是能够在持久可编辑的 NVRAM (Non – Volatile RAM,非易失性内存)中保存启动项。在 UEFI 模式下安装 Linux 操作系统时,通常会将相关的引导项写入 NVRAM,在某些情况下,我们可能希望执行手动操作,例如修改启动顺序、创建新的引导或删除旧的启动项。

本文介绍如何在 CentOS7.9 中使用 efibootmgr 工具来管理 EFI 启动项。

安装

CentOS7 默认以 UEFI 模式安装,会自带 >efibootmgr 工具,如没有带可以使用下面命令安装:

[root@localhost ~]# yum -y install efibootmgr
列出 UEFI 启动项条目

在使用 UEFI 固件的系统上,UEFI 启动项存储在 NVRAM 中。要使用 efibootmgr列出现有的启动项,如果需要列出条目就是不带任何选项或参数地调用 efibootmgr。下面就是输出条目的命令:

[root@localhost ~]# efibootmgr
BootCurrent: 0007
Timeout: 1 seconds
BootOrder: 000A,0009,0004,0007,0008,0006,0000,0001,0002,0003,0005Boot0000* debian
Boot0001* CD/DVD Rom
Boot0002* Hard Disk
Boot0003* Network
Boot0004* CentOS
Boot0005* USB Storage
Boot0006* oVirt Node Next
Boot0007* CentOS Linux
Boot0008* proxmox
Boot0009* Linux
Boot000A* Linux
MirrorStatus: Platform does not support address range mirror
DesiredMirroredPercentageAbove4G: 0.00
DesiredMirrorMemoryBelow4GB: false

其中有一些是之前安装系统保存下来的启动项,可以删除。
CentOS7 中使用 efibootmgr 管理 UEFI 启动项
在上面的输出中,我们可以注意到与引导变量对应的一系列信息。首先,我们可以看到BootCurrent: 这个键的值为0007,表示当前启动的项目为 0007 号CentOS Linux

在输出中发现的第二个条目是Timeout: 表示在启动菜单中自动选择条目之后的时间,在本例中是 1 秒。接下来是BootOrder: 这个键的值是由逗号分隔的条目编号,并显示相关条目在 EFI 引导菜单中显示的顺序。

efibootmgr 命令还显示了可用引导条目的列表。每个条目显示其编号和名称。在列表中,激活的条目它们被标记为 ’*符号。

可以添加 -v 或者 –verbose 选项来获取条目的详细信息:

[root@localhost ~]# efibootmgr -v
BootCurrent: 0005
Timeout: 5 seconds
BootOrder: 0006,0005,0004,0000,0001,0002,0003
Boot0000* UiApp FvVol(7cb8bdc9-f8eb-4f34-aaea-3ee4af6516a1)
Boot0001* UEFI VBOX CD-ROM VB2-01700376         ACPI(a0341d0,0)PCI(1,1)ATAPI(1,0,0)N.....YM....R,Y.
Boot0002* UEFI VBOX HARDDISK VB6d6781ff-6793398b        ACPI(a0341d0,0)PCI(d,0)SATA(0,ffff,0)N.....YM....R,Y.
Boot0003* EFI Internal Shell    FvVol(7cb8bdc9-f8eb-4f34-aaea-3ee4af6516a1)
Boot0004* CentOS Linux  HD(1,800,64000,2c1c6263-e2bc-4f35-b341-a9174a199f60)File(\EFI\centos\shim.efi)
Boot0005* Centos7.9-EFI HD(1,800,64000,2c1c6263-e2bc-4f35-b341-a9174a199f60)File(\EFI\centos\grubx64.efi)
Boot0006* centos7.9     HD(1,800,64000,2c1c6263-e2bc-4f35-b341-a9174a199f60)File(\EFI\centos\grubx64.efi)

CentOS7 中使用 efibootmgr 管理 UEFI 启动项

更改 UEFI 启动项顺序

我们可以使用 efibootmgr 来更改当前的引导顺序。使用 -o 或者 --bootorder 选项,后添加想要排列的顺序。当前本机的引导顺序如下:

BootOrder: 000A,0009,0004,0007,0008,0006,0000,0001,0002,0003,0005

CentOS7 中使用 efibootmgr 管理 UEFI 启动项
可以看到上图汇总,首先启动 000A Linux,最后一个条目是0005 USB Storage 设备。假设我们想要交换这些条目,让 0003 Network 成为第一个条目。我们所要做的就是运行以下命令:

[root@localhost ~]# efibootmgr -o 0003,000A,0009,0004,0007,0008,0006,0000,0001,0002,0005
BootCurrent: 0007
Timeout: 1 seconds
BootOrder: 0003,000A,0009,0004,0007,0008,0006,0000,0001,0002,0005
Boot0000* debian
Boot0001* CD/DVD Rom
Boot0002* Hard Disk
Boot0003* Network
Boot0004* CentOS
Boot0005* USB Storage
Boot0006* oVirt Node Next
Boot0007* CentOS Linux
Boot0008* proxmox
Boot0009* Linux
Boot000A* Linux
MirrorStatus: Platform does not support address range mirror
DesiredMirroredPercentageAbove4G: 0.00
DesiredMirrorMemoryBelow4GB: false

CentOS7 中使用 efibootmgr 管理 UEFI 启动项
可以看到顺序已经变了。网卡启动变为第一项了。
CentOS7 中使用 efibootmgr 管理 UEFI 启动项

创建一条引导

可以使用 efibootmgr 在 UEFI 引导管理器中创建新条目。要创建引导项,我们必须知道 EFI 系统分区的位置和要引导的 EFI 映像的路径。

创建新条目时必须使用的选项是 -c 或者 --create。假设 EFI 分区在/dev/sda 磁盘的第一个分区,efi 镜像的引导路径是EFI/centos/grubx64.efi,名称为 centos7.9,我们将运行以下命令:

[root@localhost ~]# efibootmgr -c -d /dev/sda -p 1 -L centos7.9 -l '\EFI\centos\grubx64.efi'
BootCurrent: 0005
Timeout: 0 seconds
BootOrder: 0006,0005,0004,0000,0001,0002,0003
Boot0000* UiApp
Boot0001* UEFI VBOX CD-ROM VB2-01700376
Boot0002* UEFI VBOX HARDDISK VB6d6781ff-6793398b
Boot0003* EFI Internal Shell
Boot0004* CentOS Linux
Boot0005* Centos7.9-EFI
Boot0006* centos7.9

CentOS7 中使用 efibootmgr 管理 UEFI 启动项
使用 -c 选项创建一个新条目。-d (–disk) 来指定 EFI 系统分区所在的磁盘,使用 -p (–part)来指定该磁盘上的哪个分区是 EFI 分区(按照标准,EFI 分区应该总是第一个,分去格式为 FAT32)。

使用 -L (–label) 来提供菜单中条目的名称,最后使用 -l (–loader) 来传递要引导镜像的路径。需要注意的是,路径应该以单引号形式提供。创建的引导条目将自动放在引导顺序列表的顶部。

删除一条引导

我们可以使用 efibootmgr 删除现有的引导项。我们可以删除一个不存在的系统引导条目。我们使用 -b 或者 –bootnum 传递索引作为参数来选择我们想要删除的引导条目,然后使用 -B 或者 –delete-bootnum 来删除它。

例如,要删除索引为 0008 , 我们将运行以下命令:

[root@localhost ~]# efibootmgr -b 8 -B
Timeout: 1 seconds
BootOrder: 0007,0003,000A,0009,0004,0006,0000,0001,0002,0005
Boot0000* debian
Boot0001* CD/DVD Rom
Boot0002* Hard Disk
Boot0003* Network
Boot0004* CentOS
Boot0005* USB Storage
Boot0006* oVirt Node Next
Boot0007* CentOS Linux
Boot0009* Linux
Boot000A* Linux
MirrorStatus: Platform does not support address range mirror
DesiredMirroredPercentageAbove4G: 0.00
DesiredMirrorMemoryBelow4GB: false

CentOS7 中使用 efibootmgr 管理 UEFI 启动项
Tips:在传递引导条目序号时,我们可以不填充前面的 0。

激活、取消激活引导条目

如果不想显示某一个启动项可以使用 -A 或者 –inactive 来取消激活该条目:

[root@localhost ~]# efibootmgr -b 000A -A
Timeout: 1 seconds
BootOrder: 0007,0003,000A,0009,0004,0006,0001,0002,0005
Boot0001* CD/DVD Rom
Boot0002* Hard Disk
Boot0003* Network
Boot0004* CentOS
Boot0005* USB Storage
Boot0006* oVirt Node Next
Boot0007* CentOS Linux
Boot0009* Linux
Boot000A  Linux
MirrorStatus: Platform does not support address range mirror
DesiredMirroredPercentageAbove4G: 0.00
DesiredMirrorMemoryBelow4GB: false

可以看到 Boot000A Linux 这一条前面的 * 消失了,这就代表不显示该条目了。
CentOS7 中使用 efibootmgr 管理 UEFI 启动项
如果想显示某一个启动项可以使用 -a 或者 –active 来激活该条目:

[root@localhost ~]# efibootmgr -b 000A -a
Timeout: 1 seconds
BootOrder: 0007,0003,000A,0009,0004,0006,0001,0002,0005
Boot0001* CD/DVD Rom
Boot0002* Hard Disk
Boot0003* Network
Boot0004* CentOS
Boot0005* USB Storage
Boot0006* oVirt Node Next
Boot0007* CentOS Linux
Boot0009* Linux
Boot000A* Linux
MirrorStatus: Platform does not support address range mirror
DesiredMirroredPercentageAbove4G: 0.00
DesiredMirrorMemoryBelow4GB: false

可以看到 Boot000A Linux 这一条前面的 * 又回来 了。
CentOS7 中使用 efibootmgr 管理 UEFI 启动项

修改 UEFI 引导管理器超时时间

我们可以设置超时间隔,使用 -t 或者 -timeout 选项来设置,在此之后自动选择 EFI 引导管理器中的默认条目。可以看到下图,当前超时为 0 秒,我们可以设置时间长一点:
CentOS7 中使用 efibootmgr 管理 UEFI 启动项

[root@localhost ~]# efibootmgr -t 5
BootCurrent: 0005
Timeout: 5 seconds
BootOrder: 0006,0005,0004,0000,0001,0002,0003
Boot0000* UiApp
Boot0001* UEFI VBOX CD-ROM VB2-01700376
Boot0002* UEFI VBOX HARDDISK VB6d6781ff-6793398b
Boot0003* EFI Internal Shell
Boot0004* CentOS Linux
Boot0005* Centos7.9-EFI

CentOS7 中使用 efibootmgr 管理 UEFI 启动项

总结

支持 UEFI 固件的机器将引导项存储在称为 NVRAM 的非易失性 RAM 中。当我们安装 Linu 操作系统时,EFI 引导管理器菜单中会自动添加一个对应的条目。

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计5265字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19352
评论数
4
阅读量
8086572
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
免费领取huggingface的2核16G云服务器,超简单教程

免费领取huggingface的2核16G云服务器,超简单教程

免费领取 huggingface 的 2 核 16G 云服务器,超简单教程 前言 HuggingFace.co...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...