随笔记录
目录
1. 背景介绍
因需要覆盖ARM 结构麒麟SP1/SP2 OS,此处随机记录一下,仅供随笔记录
在信创操作系统上使用EFI引导管理器配置工具efibootmgr命令详解的文章。efibootmgr是一个在基于UEFI的系统中管理EFI引导条目的命令行工具,它允许用户查看、添加、删除和修改EFI引导项
2. efibootmgr
2.1 什么是efibootmgr?
efibootmgr是一个用于管理EFI引导条目的命令行工具。
EFI(Extensible Firmware Interface)是BIOS的替代品,广泛用于现代计算机中。
EFI引导项存储在NVRAM中,efibootmgr工具允许用户在操作系统中直接管理这些引导项,而不需要进入BIOS设置界面。
2.2 安装efibootmgr
大多数现代的Linux发行版都预装了efibootmgr工具。
如果您的系统中没有安装,可以通过包管理器进行安装。
1. 在Debian/Ubuntu系统上,使用以下命令安装:
# sudo apt-get update
# sudo apt-get install efibootmgr
2. 在RHEL/CentOS系统上,使用以下命令安装:
# sudo yum install efibootmgr
2.3 使用efibootmgr查看EFI引导项
要查看当前系统的EFI引导项,可以直接运行efibootmgr命令:
# sudo -i
# efibootmgr
[root@localhost ~]# sudo -i
[root@localhost ~]#
[root@localhost ~]# efibootmgr
BootCurrent: 0006
Timeout: 10 seconds
BootOrder: 0006,0007,0002,0003,0004,0005,0001,0000
Boot0000* BootManagerMenuApp
Boot0001* ByoUiApp
Boot0002* UEFI PXEv4 (MAC:A4178BA4B4E0)
Boot0003* UEFI PXEv4 (MAC:A4178BA4B4E1)
Boot0004* UEFI PXEv4 (MAC:A4178BA4B4E2)
Boot0005* UEFI PXEv4 (MAC:A4178BA4B4E3)
Boot0006* Kylin
Boot0007* Kylin
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# cat /etc/os-release
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Tercel)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Tercel)"
ANSI_COLOR="0;31"
[root@localhost ~]#
//******************************* 各行内容解释 *******************************
# BootCurrent: 0006
意味着当前系统是从编号为 0006 的启动项启动的,从后面的 Boot0006* Kylin 可以知道对应的启动项名称是 Kylin,也就是当前系统启动的是名为 Kylin 的启动项(很可能是基于麒麟操作系统相关的启动配置)。
# Timeout: 10 seconds
系统在启动过程中等待用户选择引导项的时间是 10 秒。如果用户在此期间没有选择,引导过程会按照 BootOrder 中的顺序自动继续。
#BootOrder: 0006,0007,0002,0003,0004,0005,0001,0000
这是系统启动时会依次尝试的引导项顺序。系统会从这个列表的第一个引导项开始尝试,如果失败则会尝试下一个(列出了各个启动项的启动顺序优先级,从左到右优先级依次降低)
在这里启动顺序依次是 0006(对应 Kylin)、0007(同样对应 Kylin,可能是不同配置版本之类的情况)、0002(对应 UEFI PXEv4 (MAC:A4178BA4B4E0) 等,
这几个 UEFI PXEv4 相关的启动项可能是和基于 PXE 网络启动相关且带有不同 MAC 地址区分的设置),最后是 0000(对应 BootManagerMenuApp)和 0001(对应 ByoUiApp)。
注意:此系统目前
Boot0006* Kylin -- 麒麟SP1
Boot0007* Kylin -- 麒麟SP2
\
2.4 添加新的EFI引导项
如果您需要添加一个新的EFI引导项,可以使用以下命令:
# root@pdsyw-pc:~# efibootmgr -c -d /dev/nvme0n1 -p 1 -L "Windows10" -l "\EFI\Microsoft\Boot\bootmgfw.efi"
// 参数解释说明
-c:创建新的引导项。
-d /dev/nvme0n1:指定引导项所在的磁盘设备。
-p 1:指定引导项所在的分区号。
-L “Windows10”:为引导项指定一个标签名称。
-l “\EFI\Microsoft\Boot\bootmgfw.efi”:指定引导程序的路径。
2.5 修改EFI引导顺序
# 要修改系统的引导顺序,可以使用-o选项指定新的引导顺序:
# 此命令将引导顺序设置为首先尝试引导项0007,然后依次尝试0006等。
# 注意:
00006: 麒麟SP1
00007: 麒麟SP2
切换系统 麒麟SP1 切换 麒麟SP2:
1. 执行命令 # efibootmgr -o 0007,0006,0002,0003,0005,0004,0001,0000
2. reboot
3. 登录系统即可
切换系统 麒麟SP2 切换 麒麟SP1:
1. 执行命令 # efibootmgr -o 0006,0007,0002,0003,0005,0004,0001,0000
2. reboot
3. 登录系统即可
2.6 删除EFI引导项
如果需要删除某个EFI引导项,可以使用-b选项指定引导项标识符,并使用-B选项删除它:
1. 此命令将删除引导项0007(例如,删除麒麟SP2)。
[root@localhost ~]#efibootmgr
[root@localhost ~]# efibootmgr -b 0007 -B
2. 删除 /boot/efi/EFI/ 目录中文件夹
[root@localhost ~]#
[root@localhost ~]# cd /boot/efi/EFI/
[root@localhost EFI]#
[root@localhost EFI]# ll
total 8
drwx------ 2 root root 4096 Sep 18 2022 BOOT
drwx------ 3 root root 4096 Aug 7 11:44 kylin
[root@localhost EFI]#
[root@localhost EFI]# rm -rf <已删除引导项标识中文件夹>
2.7 更改引导超时时间
# 更改引导时间
# efibootmgr
# efibootmgr -t 15
[root@localhost Kylin]#
[root@localhost Kylin]#
[root@localhost Kylin]# efibootmgr
BootCurrent: 0006
Timeout: 15 seconds # 引导时间已更改
BootOrder: 0006,0007,0002,0003,0004,0005,0001,0000
Boot0000* BootManagerMenuApp
Boot0001* ByoUiApp
Boot0002* UEFI PXEv4 (MAC:A4178BA4B4E0)
Boot0003* UEFI PXEv4 (MAC:A4178BA4B4E1)
Boot0004* UEFI PXEv4 (MAC:A4178BA4B4E2)
Boot0005* UEFI PXEv4 (MAC:A4178BA4B4E3)
Boot0006* Kylin
Boot0007* Kylin
[root@localhost Kylin]#
[root@localhost Kylin]#
[root@localhost Kylin]#
2.8 查看更详细的帮助信息
# 更多使用方法,可以查看帮助文档
# efibootmgr --help
[root@localhost Kylin]#
[root@localhost Kylin]#
[root@localhost Kylin]# efibootmgr --help
efibootmgr version 16
usage: efibootmgr [options]
-a | --active sets bootnum active
-A | --inactive sets bootnum inactive
-b | --bootnum XXXX modify BootXXXX (hex)
-B | --delete-bootnum delete bootnum
-c | --create create new variable bootnum and add to bootorder
-C | --create-only create new variable bootnum and do not add to bootorder
-D | --remove-dups remove duplicate values from BootOrder
-d | --disk disk (defaults to /dev/sda) containing loader
-r | --driver Operate on Driver variables, not Boot Variables.
-e | --edd [1|3|-1] force EDD 1.0 or 3.0 creation variables, or guess
-E | --device num EDD 1.0 device number (defaults to 0x80)
-g | --gpt force disk with invalid PMBR to be treated as GPT
-i | --iface name create a netboot entry for the named interface
-l | --loader name (defaults to "\EFI\kylin\grub.efi")
-L | --label label Boot manager display label (defaults to "Linux")
-m | --mirror-below-4G t|f mirror memory below 4GB
-M | --mirror-above-4G X percentage memory to mirror above 4GB
-n | --bootnext XXXX set BootNext to XXXX (hex)
-N | --delete-bootnext delete BootNext
-o | --bootorder XXXX,YYYY,ZZZZ,... explicitly set BootOrder (hex)
-O | --delete-bootorder delete BootOrder
-p | --part part (defaults to 1) containing loader
-q | --quiet be quiet
-t | --timeout seconds set boot manager timeout waiting for user input.
-T | --delete-timeout delete Timeout.
-u | --unicode | --UCS-2 handle extra args as UCS-2 (default is ASCII)
-v | --verbose print additional information
-V | --version return version and exit
-w | --write-signature write unique sig to MBR if needed
-y | --sysprep Operate on SysPrep variables, not Boot Variables.
-@ | --append-binary-args file append extra args from file (use "-" for stdin)
-h | --help show help/usage
[root@localhost Kylin]#
3. 常见问题收集整理
3.1 找不到EFI分区
确认引导项的分区和设备路径正确无误。
使用lsblk命令查看分区结构,并确保EFI分区已正确挂载。
3.2 引导项无法启动
检查引导程序的路径是否正确。
确认引导项的顺序和设置已正确保存。
3.3 无法删除引导项
使用sudo命令获取超级用户权限后再尝试删除。
确保标识符正确无误,并使用-B选项进行删除。
到此简单介绍efibootmgr 使用已完成