HCRM博客

如何在CentOS中配置和使用EFI引导?

CentOS与EFI:全面指南

背景介绍

如何在CentOS中配置和使用EFI引导?-图1
(图片来源网络,侵权删除)

在现代计算机系统中,UEFI(统一可扩展固件接口)已成为替代传统BIOS的固件接口标准,UEFI不仅提供了更丰富的功能和更好的用户体验,而且在启动过程中也扮演着重要角色,本文将详细探讨CentOS在EFI环境下的使用和管理方法,包括其定义、工作原理、常见问题及其解决方法,并附上相关FAQs。

一、EFI简介

EFI(Extensible Firmware Interface)是一种用于计算机系统的固件接口规范,旨在取代传统的BIOS,它提供了一系列现代化的功能,如支持大容量硬盘、更快的启动速度和更安全的启动环境。

1 EFI的主要特性

支持大容量硬盘:EFI突破了传统BIOS对硬盘容量的限制,允许使用超过2TB的硬盘。

更快的启动速度:EFI采用了模块化设计,可以并行处理启动任务,显著提高了启动速度。

图形化界面:EFI提供了更加友好的用户界面,使得用户操作更加简便。

如何在CentOS中配置和使用EFI引导?-图2
(图片来源网络,侵权删除)

安全启动:EFI支持Secure Boot功能,可以在启动时验证引导加载程序的完整性,防止恶意软件的攻击。

二、CentOS与EFI兼容性

CentOS是一种流行的Linux发行版,广泛应用于服务器和桌面系统,CentOS完全支持EFI启动模式,在安装CentOS时,可以选择使用EFI模式进行安装,这将使系统利用EFI的优势进行启动和管理,CentOS 7及更高版本默认以EFI模式进行安装,并且自带了efibootmgr工具,用于管理EFI启动项。

1 CentOS中的EFI系统分区

在EFI模式下安装CentOS时,系统会要求创建一个特定的分区——/boot/efi,这个分区用于存放EFI引导所需的文件,对于x86_64平台,默认的引导文件是\EFI\BOOT\BOOTx64.EFI。

2.1.1 /boot/efi分区的作用

/boot/efi分区是存放UEFI引导文件的特殊分区,它必须格式化为FAT32文件系统,并且通常大小为几百兆字节,该分区包含操作系统的引导加载器和相关的配置文件,确保系统能够正确引导。

如何在CentOS中配置和使用EFI引导?-图3
(图片来源网络,侵权删除)

2.1.2 创建和使用/boot/efi分区的步骤

1、安装CentOS 7或更高版本:在安装过程中,选择EFI模式进行安装。

2、创建/boot/efi分区:按照安装向导的提示,创建一个大小为550MB左右的/boot/efi分区,并将其格式化为FAT32文件系统。

3、完成安装:继续按照安装向导完成系统的安装过程。

三、使用efibootmgr管理EFI启动项

efibootmgr是一个用于管理EFI启动项的命令行工具,通过使用efibootmgr,可以列出现有的EFI启动项、修改启动顺序、创建新的引导项或删除旧的引导项。

1 列出当前的EFI启动项

要列出当前的EFI启动项,可以使用以下命令:

efibootmgr

输出示例:

BootCurrent: 0007
Timeout: 1 seconds
BootOrder: 000A,0009,0004,0007,0008,0006,0000,0001,0002,0003,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

在这个输出中,我们可以看到当前活动的启动项(BootCurrent)、启动菜单的超时时间(Timeout)、启动顺序(BootOrder)以及各个引导条目的详细信息。

2 更改EFI启动顺序

我们可以使用efibootmgr来更改当前的引导顺序,要将Network设为第一个启动项,可以使用以下命令:

efibootmgr o 0003,000A,0009,0004,0007,0008,0006,0000,0001,0002,0003,0005

执行后,输出将显示新的启动顺序:

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

3 创建一条新的EFI引导项

假设我们需要创建一个新的EFI引导项,可以使用以下命令:

efibootmgr c d /dev/sda p 1 "Custom Boot" "\EFI\custom\bootx64.efi"

这里,d /dev/sda指定磁盘设备,p 1指定分区号,"Custom Boot"是新的引导项名称,"\EFI\custom\bootx64.efi"是引导文件的路径。

4 删除多余的EFI启动项

要删除指定的EFI启动项,可以使用以下命令:

efibootmgr b 0000

这将删除编号为0000的引导项。

四、修复EFI引导问题

在使用UEFI启动CentOS时,可能会遇到一些引导问题,如引导文件丢失或损坏,以下是一些常见的问题及其解决方法。

4.1 虚拟机无法启动,提示找不到引导文件

在OpenStack环境中,虚拟机在进行resize操作后可能出现无法启动的问题,错误信息指向`\EFI

eokylin\grubaa64.efi`文件丢失,这是由于虚拟机磁盘文件损坏或引导文件丢失导致的。

解决步骤:

1、挂载虚拟机磁盘:使用libguestfstools将虚拟机磁盘文件挂载到主机系统上。

   yum install y libguestfstools
   guestmount /dev/sdX /mnt  # 将sdX替换为实际的磁盘设备号

2、检查引导文件:确认/boot/efi/EFI/centos目录下是否存在grubaa64.efi文件,如果不存在,从正常虚拟机中复制该文件到相应位置。

   cp /path/to/normal/grubaa64.efi /mnt/boot/efi/EFI/centos/

3、修复引导记录:更新EFI引导记录,确保系统能够识别新的引导文件。

   efibootmgr v

4.2 如何重新安装GRUB2和SHIM引导加载器

在某些情况下,可能需要重新安装GRUB2和SHIM引导加载器,以下是具体步骤:

1、安装必要的软件包

   yum install y grub2efi shim

2、重新生成GRUB配置文件

   grub2mkconfig o /boot/efi/EFI/centos/grub.cfg

3、重启系统

   reboot

五、相关FAQs

Q1: EFI模式和BIOS模式有何区别?

EFI模式提供了更先进的功能,如支持大容量硬盘、更快的启动速度和图形化界面,而BIOS模式则是传统的固件接口,功能相对简单。

Q2: 如何在UEFI模式下安装CentOS?

在UEFI模式下安装CentOS时,需要确保硬盘格式为GPT,并在安装过程中创建一个/boot/efi分区,还需要禁用BIOS中的CSM选项和安全启动选项。

Q3: 如何修改EFI启动顺序?

可以使用efibootmgr工具来修改EFI启动顺序,要将第三个条目设置为默认启动项,可以使用以下命令:

efibootmgr o 0003

Q4: 如何删除多余的EFI启动项?

可以使用efibootmgr b命令删除指定的EFI启动项,要删除Boot0000项,可以使用:

efibootmgr b 0000

Q5: 如何恢复EFI引导记录?

如果EFI引导记录损坏,可以使用正常系统的引导文件进行修复,首先挂载正常系统的EFI分区,然后复制必要的引导文件到故障系统的相应位置,最后使用efibootmgr更新引导记录。

efibootmgr v

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/19507.html

分享:
扫描分享到社交APP
上一篇
下一篇