root用户密码重置有 rd.break 和 init 两种方法。我这边只有rd.break重置方法是成功的,分别在物理机和虚拟机上尝试init方法,物理机报错i8042 : No Controller Found(没找到键盘有什么问题,也没进BIOS排查原因),虚拟机卡在虚拟磁盘正在写入界面一年了。记录一下rd.break重置的过程,简单实用。
1. 重启系统,在GRUB2界面,按e进入内核参数编辑
选中带有Linux内核版本的开机启动项,按e,进入编辑界面。
2. 修改内核参数,加入rd.break
注意换行符号,下面还有一页,翻到下一页,找的linux16开头的语句,进行修改。
先将ro(read only)只读模式改为rw(read write)读写模式。
再将rhgb(redhat graphics boot)和 quiet两个参数删除,以显示系统信息,并添加rd.break语句。
后按照引导提示,Ctrl+X启动,进入单用户模式。
以下为启动过程中的系统自检
成功进入单用户模式后,键入以下命令,重新挂载文件系统为可读写模式
mount -o remount,rw /sysroot
键入以下命令,修改根目录为/sysroot目录,进入root子系统:
/**
chroot命令用来在指定的根目录下运行指令。chroot,即 change root directory (更改root 目录)。
在 linux 系统中,系统默认的目录结构都是以 / ,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为 / 位置。
/**
chroot /sysroot
键入passwd命令,修改root密码
passwd
输入新的root密码,再重复确认一遍
键入以下命令,强制重置文件系统的上下文
touch /.autorelable
/**
更新password文件会导致SELinux安全上下文文件错误。以上命令可以在下次系统引导前重新标记所有文件
/**
运行两次exit 命令。第一次为退出 chroot 环境,第二次为初始化,完成系统引导并重启系统。