Linux | 单用户模式启动 / root 密码重置 / 修复
注:本文为 “Linux 启动单用户模式” 相关文章合辑。
略作重排,未去重。
以单用户模式启动 Linux 的三种方法
作者: Magesh Maruthamuthu
译者: LCTT Xiaobin.Liu
2020-05-03 23:01
单用户模式,也被称为维护模式,在此模式下超级用户能够恢复或修复系统问题。
通常情况下,此类问题在多用户环境中无法修复,例如系统能够启动但功能无法正常运行,或者无法登录系统。
在基于 Red Hat(RHEL)7/8 的系统中,可使用 runlevel1.target
或 rescue.target
来实现单用户模式。
在此模式下,系统会挂载所有的本地文件系统,但不会开启网络接口。
系统仅启动特定的几个服务以及修复系统所必需的尽可能少的功能。
当需要运行文件系统一致性检查以修复损坏的文件系统,或忘记 root 密码后重置密码,又或要修复系统上的一个挂载点问题时,此方法十分有用。
可以使用以下三种方法以单用户模式启动 CentOS/RHEL 7/8 系统:
- 方法 1:通过向内核添加
rd.break
参数来以单用户模式启动 CentOS/RHEL 7/8 系统; - 方法 2:通过用
init=/bin/bash
或init=/bin/sh
替换内核中的rhgb quiet
语句来以单用户模式启动 CentOS/RHEL 7/8 系统; - 方法 3:通过用
rw init=/sysroot/bin/sh
参数替换内核中的ro
语句以单用户模式启动 CentOS/RHEL 7/8 系统。
方法 1
通过向内核添加 rd.break
参数来以单用户模式启动 CentOS/RHEL 7/8 系统。
重启系统,在 GRUB2 启动界面,按下 e
键来编辑选中的内核。需选中第一行,其中第一个是最新的内核,若希望使用旧的内核启动系统,也可选择其他行。
根据 RHEL/CentOS 版本,找到 linux16
或 linux
语句,按下键盘上的 End
键,跳至行末,按照如下截图所示添加关键词 rd.break
,按下 Ctrl+x
或 F10
以进入单用户模式。
若系统是 RHEL/CentOS 7,需查找 linux16
;若系统是 RHEL/CentOS 8,则需查找 linux
。
此修改会使 root 文件系统以 “只读(ro
)” 模式挂载。可使用以下命令进行验证,以下输出也明确表明当前处于 “紧急模式(Emergency Mode)”。
# mount | grep root
为了修改 sysroot
文件系统,需要以读写模式(rw
)重新挂载它。
# mount -o remount,rw /sysroot
运行以下命令修改环境,这即通常所说的 “监禁目录” 或 “chroot 监狱”。
# chroot /sysroot
此时,单用户模式已完全准备就绪。当修复完问题并要退出单用户模式时,执行以下步骤。
CentOS/RHEL 7/8 默认使用 SELinux,因此需创建以下隐藏文件,该文件会在下一次启动时重新标记所有文件。
# touch /.autorelabel
最后,使用以下命令重启系统,也可输入两次 exit
命令来重启系统。
# reboot