根本原因是未先执行mount -o remount,rw /sysroot和chroot /sysroot,导致passwd在只读或initramfs环境中操作失败;还需touch /.autorelabel修复selinux上下文。

rd.break中断后提示switch_root:/#,但passwd root报错
这是最常卡住的地方:你确实进到了紧急模式,passwd root却直接失败。常见报错包括 Authentication token manipulation error、Read-only file system 或 Operation not permitted。根本原因不是命令写错了,而是 /sysroot 还没被重新挂载为可写,或者没切换到真实根环境。
必须按顺序执行这两步:
-
mount -o remount,rw /sysroot—— 先让只读的真根文件系统变成可写 -
chroot /sysroot—— 再切入真实系统,此时/etc/shadow才能被正常修改
漏掉任意一步,passwd 都会失败。别跳过 chroot 直接在 initramfs 环境下改 /sysroot/etc/shadow,那只是徒劳。
为什么改完密码还是登不上?SELinux上下文丢了
CentOS 7 默认启用 SELinux(Enforcing 模式),而 rd.break 环境里 SELinux 是关闭的。你用 passwd 修改了 /etc/shadow,但它的安全上下文(security context)没被自动更新,导致登录服务(login 或 sshd)拒绝读取该文件。
解决方法很简单,但极易被忽略:
- 在
chroot /sysroot后、exit前,执行touch /.autorelabel - 这个空文件是给 SELinux 的“重启标记”,系统下次启动时会自动扫描并重打全部文件的安全标签
- 不加这步,哪怕密码正确,也会卡在“Authentication failure”或黑屏返回登录界面
注意:/.autorelabel 必须建在真实根目录(即 chroot 后的 /)下,不是 initramfs 的 /。
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
GRUB编辑时加错参数或按错键,根本进不了rd.break
进不了 rd.break 不是运气问题,基本就三种硬伤:
- 在
linux16行末尾没加空格就直接贴rd.break,导致内核把整个字符串当做一个参数解析失败 - 误删了
root=UUID=xxx或rd.lvm.lv=...这类关键参数,系统找不到根设备,直接卡死在 initramfs - 云平台或某些虚拟机控制台不响应键盘事件(比如 VNC 无焦点、Ctrl+X 无效),这时得换用
init=/sysroot/bin/bash替代方案
验证是否成功:进 rd.break 后提示符一定是 switch_root:/#,而不是 sh-4.2# 或其他 bash 提示;如果看到 dracut: 开头的日志滚动,说明参数已生效。
重启后等待时间异常长,别慌——SELinux正在重打标签
touch /.autorelabel 后重启,系统会在 GRUB 菜单消失后黑屏很久(可能 2–5 分钟),光标不动、无任何输出。这不是卡死,是 SELinux 在后台逐个重写所有文件的安全上下文。
你可以观察:
- 硬盘灯持续闪烁,说明 I/O 正在进行
- 不要强行断电或重启,否则
/.autorelabel文件会被清空,下次还得重来 - 等它自己完成,登录界面出现后,再试新密码
这个阶段没法跳过,也没法加速——它是 SELinux Enforcing 模式下的必经之路,也是很多人以为“重置失败”的真正原因。










