CentOS 是一个基于Red Hat Enterprise Linux (RHEL) 的开源操作系统,广泛应用于服务器、云计算和桌面环境,GRUB(Grand Unified Bootloader)是 CentOS 默认使用的引导加载程序,负责在系统启动时加载内核并初始化操作系统,本文将详细解释如何在 CentOS 系统中使用 GRUB 进行启动配置和管理,包括其配置文件、常见操作及常见问题解决方法。
一、GRUB 的基本概念和作用
GRUB 是一个多操作系统引导加载程序,支持多种文件系统和操作系统,其主要功能包括:
1、引导管理:在系统启动时加载内核和初始 RAM 磁盘映像(initrd 或 initramfs),并将控制权交给内核。
2、菜单界面:提供一个用户友好的菜单界面,允许用户选择不同的操作系统或内核版本。
3、高级功能:支持加密、单用户模式、紧急模式等高级功能,增强系统的安全性和可维护性。
二、GRUB 配置文件
GRUB 的配置文件主要有两个:/etc/default/grub
和/etc/grub.d/
。
1、/etc/default/grub:该文件包含 GRUB 的全局配置选项,例如超时时间、默认启动项和命令行参数等。
示例内容:
GRUB_TIMEOUT=5 GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet" GRUB_DISABLE_RECOVERY="true"
GRUB_TIMEOUT:设置菜单显示的时间(以秒为单位)。
GRUB_DEFAULT:指定默认启动的项目,如果设置为saved
,则保存用户的最后一次选择。
GRUB_DISABLE_SUBMENU:禁用子菜单。
GRUB_TERMINAL_OUTPUT:设置终端输出类型。
GRUB_CMDLINE_LINUX:传递给内核的命令行参数。
GRUB_DISABLE_RECOVERY:禁用恢复模式。
2、/etc/grub.d/:该目录下包含多个脚本文件,每个文件定义一个菜单项,这些脚本文件通常以数字开头,表示执行顺序。
40_custom:用户可以自定义的菜单项脚本,编辑此文件可以添加自定义的启动项。
三、更新 GRUB 配置
修改 GRUB 配置文件后,需要重新生成 GRUB 配置文件并更新启动项,使用以下命令:
sudo grub2mkconfig o /boot/grub2/grub.cfg
对于 UEFI 系统,命令为:
sudo grub2mkconfig o /boot/efi/EFI/centos/grub.cfg
四、常见 GRUB 操作
1、查看当前启动项:
awk F\' '$1=="menuentry " {print i++ " : " $2}' /boot/grub2/grub.cfg
或者:
grep "^menuentry" /boot/grub2/grub.cfg | cut d "'" f2
2、设置默认启动项:通过修改/etc/default/grub
文件中的GRUB_DEFAULT
行来设置默认启动项,将默认启动项设置为第一个菜单项:
GRUB_DEFAULT=0
3、进入单用户模式:在 GRUB 菜单中按e
键编辑选中的启动项,在内核行末尾添加single
或systemd.unit=emergency.target
,然后按Ctrl+X
启动。
4、进入紧急模式:在 GRUB 菜单中按e
键编辑选中的启动项,在内核行末尾添加systemd.unit=emergency.target
,然后按Ctrl+X
启动。
五、修复 GRUB 问题
1、修复丢失的 GRUB 配置文件:如果删除了/boot/grub2/grub.cfg
文件,可以通过以下步骤修复:
使用 CentOS 安装介质启动系统。
挂载系统的根文件系统和/boot
分区。
切换到 chroot 环境。
重新生成 GRUB 配置文件。
退出 chroot 环境并重启系统。
示例命令:
linux /vmlinuz4.14.0115.el7a.x86_64 root=/dev/sda3 initrd /initramfs4.14.0115.el7a.x86_64.img boot
2、恢复损坏的 GRUB:GRUB 本身损坏,可以使用 CentOS 安装介质启动系统,并重新安装 GRUB。
六、常见问题解答(FAQs)
1、Q: 如果删除了/boot/grub2/grub.cfg
文件,如何恢复?
A: 使用 CentOS 安装介质启动系统,挂载根文件系统和/boot
分区,切换到 chroot 环境,重新生成 GRUB 配置文件,退出 chroot 环境并重启系统。
2、Q: 如何更改默认启动项?
A: 修改/etc/default/grub
文件中的GRUB_DEFAULT
行,然后重新生成 GRUB 配置文件并更新启动项。
通过以上步骤和配置,用户可以有效地管理和配置 CentOS 系统中的 GRUB 启动加载程序,确保系统的稳定启动和灵活管理。