以单用户模式启动 Linux 的方法
注:本文为 “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 -f
方法 2
通过用 init=/bin/bash
或 init=/bin/sh
替换内核中的 rhgb quiet
语句来以单用户模式启动 CentOS/RHEL 7/8 系统。
重启系统,在 GRUB2 启动界面,按下 e
键来编辑选中的内核。
找到语句 rhgb quiet
,用 init=/bin/bash
或 init=/bin/sh
替换它,然后按下 Ctrl+x
或 F10
来进入单用户模式。
init=/bin/bash
的截图。
init=/bin/sh
的截图。
默认情况下,上面的操作会以只读(ro
)模式挂载 /
分区,因此需要以读写(rw
)模式重新挂载 /
文件系统,这样才能修改它。
# mount -o remount,rw /
现在可以执行任务了。当结束时,执行下面的命令来开启重启时的 SELinux 重新标记。
# touch /.autorelabel
最后,重启系统。
# exec /sbin/init 6
方法 3
通过用 rw init=/sysroot/bin/sh
参数替换内核中的 ro
单词,以单用户模式启动 CentOS/RHEL 7/8 系统。
为了中断自动启动的过程,重启系统并在 GRUB2 启动界面按下任意键。
现在会展示系统上所有可用的内核,选择最新的内核,按下 e
键来编辑选中的内核参数。
找到以 linux
或 linux16
开头的语句,用 rw init=/sysroot/bin/sh
替换 ro
。替换完后按下 Ctrl+x
或 F10
来进入单用户模式。
运行下面的命令把环境切换为 “chroot 监狱”。
# chroot /sysroot
如果需要,做出必要的修改。修改完后,执行下面的命令来开启重启时的 SELinux 重新标记。
# touch /.autorelabel
最后,重启系统。
# reboot -f
解决centos7修改root密码报错以及无法进入单用户模式
莫闲219 于 2022-03-23 14:00:38 发布
linux 找回 root 密码操作:
1、启动系统,在开机界面按 “e” 进入编辑界面。
2、找到 “Linux16” 开头的内容,在行的最后输入:init=/bin/sh
3、之后按 ctrl+x 进入单用户模式。
4、接着输入 mount -o remount,rw /
5、在新的一行输入 passwd,按回车后输入密码,确认输入密码。
如果现实 passwd… 的样式,则修改成功。
6、接着输入:touch /.autorelabel
,回车
7、之后输入 exec /sbin/init
,等待一段时间,系统自动重启,新密码生成。
切记如果出现 SMBus Host Controller not enabled! 之后 ,也不要进行任何操作,等待片刻,等系统完成修改之后无法对编辑界面进行操作,重启虚拟机即可。如果中途退出虚拟机,会导致 root 的新老密码都无法登陆,且无法在开机界面进入单用户模式,如图
此时需要 linux16 中的 rd.lvm.lv
前加入 rw
,在行末尾输入 init=/bin/sh
即可进入单用户模式。
via:
-
Three Methods Boot CentOS/RHEL 7/8 Systems in Single User Mode
https://www.2daygeek.com/boot-centos-7-8-rhel-7-8-single-user-mode/作者:Magesh Maruthamuthu 选题:lujun9972 译者:lxbwolf 校对:wxy
本文由 LCTT 原创编译,Linux中国 . 荣誉推出 -
解决centos7修改root密码报错以及无法进入单用户模式_centos7重置root密码后无法登陆-CSDN博客]
https://blog.csdn.net/qq_56568435/article/details/123684391 -
RedHat&CentOS救援模式/单用户模式 - 知乎
https://zhuanlan.zhihu.com/p/398478111 -
centos 7 重设密码总是失败_centos7重置密码一直不成功怎么办-CSDN博客
https://wwzzhh.blog.csdn.net/article/details/124092746 -
解决CentOS7.x管理员用户root无法登陆问题_centos7 root无法登录-CSDN博客
https://daxia.blog.csdn.net/article/details/132141925