在CentOS系统中安装UEFI GRUB引导程序是一个涉及多个步骤的过程,需要仔细操作以确保系统正确启动,以下是详细的步骤说明和注意事项,帮助用户顺利完成安装。

准备工作
在开始安装之前,确保系统满足以下条件:确认计算机支持UEFI启动模式,可以通过查看主板BIOS设置或使用efibootmgr命令检查,准备一个可启动的CentOS安装介质,如U盘或DVD,并确保系统已从该介质启动,备份重要数据,以防操作过程中出现意外数据丢失。
分区规划
UEFI系统对分区有特殊要求,需要创建一个EFI系统分区(ESP),建议将ESP分区设置为至少500MB,文件系统类型选择FAT32,还需要创建根分区(/)、交换分区(swap)和/home分区(可选),使用fdisk或parted工具进行分区时,注意将ESP分区的标志设置为"EFI System",分区完成后,使用mkfs命令格式化分区,mkfs.vfat -F32 /dev/sda1格式化ESP分区,mkfs.xfs /dev/sda2格式化根分区。
挂载分区
安装系统前需要将分区挂载到指定目录,ESP分区应挂载到/boot/efi,根分区挂载到/mnt,其他分区根据需要挂载,执行以下命令:mount /dev/sda2 /mnt,mkdir -p /mnt/boot/efi,mount /dev/sda1 /mnt/boot/efi,确保挂载点正确无误后,即可开始安装系统。
安装基础系统
使用dnf或yum包管理器安装基础系统包,执行dnf install @core --installroot=/mnt --releasever=8 --repo=baseos,appstream命令,将CentOS 8的基础系统安装到/mnt目录,安装过程中,确保网络连接正常,以便下载必要的软件包,安装完成后,生成/etc/fstab文件,使用genfstab -U /mnt >> /mnt/etc/fstab命令,确保系统启动时能正确挂载分区。

配置系统环境
进入新安装的系统环境,使用chroot /mnt /bin/bash命令切换到根目录,设置主机名,例如hostnamectl set-hostname centos-uefi,配置网络,编辑/etc/sysconfig/network-scripts/ifcfg-ens33文件,确保网络接口正确配置,安装必要的软件包,如grub2-efi-x64、efibootmgr和shim,使用dnf install grub2-efi-x64 efibootmgr shim命令。
安装和配置GRUB
安装GRUB到ESP分区,执行grub2-install --target=x86_64-efi --efi-directory=/boot/efi --boot-directory=/boot命令,配置GRUB生成配置文件,使用grub2-mkconfig -o /boot/grub2/grub.cfg命令,检查生成的grub.cfg文件,确保包含正确的启动项和内核参数,如果需要自定义启动项,可以编辑/etc/default/grub文件,然后重新生成配置文件。
配置UEFI启动项
使用efibootmgr命令管理UEFI启动项,查看当前启动项列表,执行efibootmgr -v,创建新的启动项,efibootmgr --create --disk /dev/sda --part 1 --label "CentOS" --loader "\\EFI\\centos\\grubx64.efi",将新创建的启动项设置为默认启动项,使用efibootmgr -o 0001命令(假设启动项编号为0001)。
验证安装
重启系统,进入BIOS设置,确认UEFI启动模式已启用,并检查启动项列表是否正确显示CentOS,如果系统正常启动,说明GRUB安装成功,如果无法启动,可以使用CentOS安装介质进入救援模式,检查/boot/efi/EFI/centos目录下的文件是否完整,并重新安装GRUB。

常见问题及解决方法
在安装过程中可能会遇到一些问题,例如GRUB安装失败或启动项丢失,如果出现GRUB安装错误,可以尝试重新执行grub2-install命令,并检查ESP分区是否正确挂载,如果启动项丢失,可以使用efibootmgr命令重新创建启动项,并确保路径正确,确保ESP分区的文件系统类型为FAT32,否则可能导致无法识别。
FAQs
Q1: 如何确认系统是否支持UEFI启动?
A1: 可以通过以下方法确认:进入BIOS设置,查看是否有"UEFI Boot"选项;或者使用efibootmgr命令,如果返回信息中包含EFI变量,则说明支持UEFI。
Q2: 安装GRUB时提示"efibootmgr: error: Invalid or non-existent EFI directory"怎么办?
A2: 这通常是因为ESP分区未正确挂载或路径错误,请检查/boot/efi目录是否存在,并确保ESP分区已挂载到该目录,重新挂载后再次尝试安装GRUB。