在 CentOS 系统的生命周期中,无论是系统管理员还是普通用户,都可能遇到需要与 GRUB(GRand Unified Bootloader)直接交互的场景,GRUB 是系统启动过程中第一个加载的软件程序,它负责加载内核并初始化操作系统,掌握如何进入并操作 GRUB 界面,是进行系统故障排查、内核参数调试、密码重置等高级运维任务的基础技能,本文将详细阐述在 CentOS 环境下进入 GRUB 界面的多种方法、界面基本操作以及一个重要的实际应用案例。
为什么要进入 GRUB 界面?
在深入了解操作方法之前,明确我们为何需要进入 GRUB 界面至关重要,触发此操作的需求源于以下几个方面:
- 系统故障排查:当 CentOS 因内核更新失败、驱动程序冲突或文件系统损坏而无法正常启动时,进入 GRUB 界面可以选择恢复模式或之前的稳定内核版本进行启动,从而为修复系统创造条件。
- 多重启动环境:如果服务器或个人计算机上安装了多个操作系统(如 Windows 与 CentOS 双系统,或多个版本的 Linux),GRUB 菜单是选择启动哪个操作系统的唯一入口。
- 内核参数调试:开发者或系统管理员有时需要临时修改内核启动参数,例如禁用某个特定模块、指定
systemd.unit
进入救援模式或单用户模式,这些都需要在 GRUB 界面中编辑启动项。 - 忘记 root 密码:这是最经典的应用场景之一,通过进入 GRUB 并引导至单用户模式或救援模式,可以绕过常规的身份验证,从而重置丢失的 root 密码。
如何进入 GRUB 界面:进入方法详解
进入 GRUB 界面的时机至关重要,它发生在 BIOS/UEFI 自检完成后,操作系统内核加载之前,以下是几种主流的进入方法。
开机中断法(最常用)
这是最直接、最普遍的方法,核心在于在系统启动的特定时间窗口内按下特定按键,中断自动启动流程,从而显示 GRUB 菜单。
- 重启或开启计算机。
- 把握时机:仔细观察屏幕,在主板品牌 Logo 画面消失后,CentOS 的启动进度条或动画出现之前,有一个非常短暂的停留窗口,通常只有几秒钟。
- 按下中断键:在这个窗口期内,快速、连续地按下以下表格中列出的某个键,直到屏幕出现 GRUB 菜单。
触发按键 | 适用场景 | 说明 |
---|---|---|
Esc 键 | 大多数 BIOS 系统和部分 UEFI 系统 | 最通用的中断键,成功率最高。 |
Shift 键 | 部分 UEFI 系统 | 需要持续按住 Shift 键,直到 GRUB 菜单出现。 |
F2, F10, F12 | 部分品牌服务器或主板 | 这些键有时被定义为进入 BIOS 或启动菜单的快捷键,也可能中断 GRUB 自动启动。 |
如果系统配置的 GRUB_TIMEOUT
参数为 0,菜单可能不会自动显示,此时开机中断法是强制其显现的唯一途径。
已登录系统配置法(高级)
如果系统目前可以正常登录,但您希望下次重启时直接进入特定的 GRUB 菜单项(例如救援模式),可以使用命令行工具进行预设。
查看所有可用的 GRUB 菜单项:
grep "^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2
此命令会列出所有启动项的名称,
CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
和CentOS Linux (Rescue Mode)
。设置下次重启的默认启动项:
使用grub2-reboot
命令,后跟上一步中查看到的菜单项完整名称。sudo grub2-reboot "CentOS Linux (Rescue Mode)"
执行此命令后,系统会将该设置写入一个临时环境变量,下次重启时,GRUB 将自动加载并高亮显示这个指定的菜单项,但不会立即启动,会等待您按回车确认,这种方式仅对“下一次”重启有效,之后会恢复为默认设置。
紧急救援模式
当系统损坏严重,甚至无法显示 GRUB 菜单时,就需要借助外部介质,使用 CentOS 的安装光盘或 U 盘启动盘,在启动选项中选择 Rescue
或 Troubleshooting
模式,这会引导一个最小化的救援环境,并自动将原系统的硬盘挂载到 /mnt/sysimage
目录下,从而可以进行底层修复。
进入 GRUB 后的基本操作
成功进入 GRUB 界面后,您会看到一个类似文本菜单的界面,列出了可用的内核版本和高级选项,键盘是唯一的交互工具。
- 方向键(↑ ↓):用于在菜单项之间上下移动光标。
e
键:编辑当前选中的启动项,按下后会进入一个编辑界面,可以看到启动参数的具体配置。c
键:进入 GRUB 命令行界面,这是一个强大的交互式 shell,允许用户手动输入 GRUB 命令来启动系统,适用于专家级故障排查。F10
或Ctrl + X
:启动当前选中的(或编辑后的)菜单项。F2
或Esc
:返回主菜单(在编辑界面或子菜单中时)。
常见应用场景:单用户模式与密码重置
忘记 root 密码是进入 GRUB 最常见的理由,以下是通过编辑 GRUB 启动项进入单用户模式并重置密码的步骤:
- 在开机时使用方法一进入 GRUB 菜单。
- 用方向键选中您要启动的内核版本(通常是第一个),然后按
e
键进入编辑界面。 - 使用方向键找到以
linux
、linux16
或linuxefi
开头的那一行,这一行很长,包含了内核路径和众多启动参数。 - 定位到参数中的
ro
(表示 read-only,只读),将其修改为rw
(表示 read-write,读写)。 - 在该行的末尾,添加一个空格,然后输入
init=/bin/bash
或者systemd.unit=rescue.target
,前者更直接,后者是 systemd 推荐的方式。 - 修改完成后,按
Ctrl + X
组合键,系统将使用修改后的参数启动,并直接进入一个只有 root 权限的 bash shell。 - 文件系统已经以读写模式挂载,输入
passwd
命令来重置 root 密码,按照提示输入新密码即可。 - 重要步骤:如果您的系统启用了 SELinux(CentOS 默认启用),直接重启后可能会因安全上下文问题导致无法登录,必须执行以下命令来让系统在下次启动时自动重新标记文件:
touch /.autorelabel
- 执行
exec /sbin/init
或reboot -f
命令重启系统,系统重启时可能会因为 relabeling 过程而稍慢,这是正常现象,之后即可使用新密码登录。
相关问答 FAQs
为什么我每次开机狂按按键,就是无法进入 GRUB 菜单,系统总是直接启动了?
解答: 这种情况最常见的原因是 GRUB 的配置文件 /etc/default/grub
中 GRUB_TIMEOUT
的值被设置为了 0,这个参数定义了 GRUB 菜单显示的等待时间(秒),当它为 0 时,系统将不会显示菜单,而是直接启动默认的内核项,要解决这个问题,您需要编辑这个文件(sudo vi /etc/default/grub
),将 GRUB_TIMEOUT=0
修改为一个大于 0 的值,5
,保存后运行 sudo grub2-mkconfig -o /boot/grub2/grub.cfg
命令使配置生效,之后重启,GRUB 菜单就会等待 5 秒,让您有充足的时间进行选择。
如何永久修改 GRUB 的默认启动项?
解答: 永久修改默认启动项,意味着每次开机 GRUB 都会默认高亮您选择的条目,使用 grep "^menuentry" /boot/grub2/grub.cfg | cut -d "'" -f2
命令查看所有菜单项的名称和顺序,编辑 /etc/default/grub
文件,找到 GRUB_DEFAULT=saved
这一行,将其中的 saved
替换为您想设为默认的菜单项的索引号(从 0 开始计数)或完整的菜单项名称,要默认启动菜单中的第二个选项,可以设置为 GRUB_DEFAULT=1
,修改后,同样需要运行 sudo grub2-mkconfig -o /boot/grub2/grub.cfg
来更新 GRUB 的主配置文件,这样设置就会永久生效。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复