CentOS 系统修复模式

最近在一次调 CentOS 系统分辨率的时候出了意外,造成的结果就是登录后提示Could not apply the stored configuration for monitors,结果上网一搜,原来是我在改分辨率的时候被系统创建了显示器配置文件,等我一登录系统就读取配置文件,发现没有匹配的显示器,结果报错。网上的解决办法是删除那个显示器配置文件,也就是执行如下命令:

rm -f $HOME/.config/monitors.xml

可话虽如此,网上那些人还可以在提示此错误时打开 shell,我这 CentOS 7 系统根本无法打开 shell,就一整个错误提示窗口铺满整个屏幕,连关闭按钮都没有,快捷键也用不了,重启依旧无效。

这时我就想到了在开机时进入 Linux 的修复模式,可开机就俩菜单哪个都不是进入修复模式的。后来我在网上看到有人说可以修改启动菜单项以进入修复模式,于是我就试试,结果还真可以。其实修改起来很简单,当开机进入系统启动菜单选择时,按下e键以编辑该启动菜单,再将光标移动到crashkernel = auto项,将该项的值由auto改为linux single

图 1

然后再按Ctrl-X重启系统就进入了修复模式,输入root用户密码即可以 root 用户登录 shell。

图 2

那么这个linux single是何方神圣呢?其实它就是 linux 的单用户模式,也就是 root 用户模式,在引导项里面指定了这个值就表示让 grub 引导内核启动后以 root 用户模式登录。相应地,我们也可以在/etc/inittab配置文件里面指定系统的运行级别,如果指定为 1 即表示以单用户模式登录。

我们通过在启动菜单里面编辑引导项其实只是临时的,系统重启之后它们又会恢复原值,如果想永久改变它们的某些项,我们可以在 grub 的配置文件里面进行修改,如果不知道 grub 的配置文件在什么地方,可以使用命令whereis grub进行查找。在我的机子上它位于如下位置:

grub: /usr/lib/grub /etc/grub.d /etc/grub2.cfg /usr/share/grub

那么我们可以查看/etc/grub2.cfg文件,结果显示的内容跟我们在编辑启动菜单时看到的内容一样。当然,查看和修改该文件需要超级用户权限。不过,一般不建议修改。