在红帽linuex8中,可以使从initramfs运行的脚本在某些点暂停,提供rootshell,然后在该shell存在的情况下继续。这主要是为了调试,但也可以使用该方法来重置丢失的root密码。要访问该rootshell,请按照以下步骤来操作:
- 重新启动系统
- 按任意键(除了enter)终端启动加载倒计时
- 将光标移动要启动的内核条目
- 按e编辑特定的条目
- 将光标移动到内核命令行(以linux开头的行)
- 附加rd.break。利用这些选项,就在系统从initramfs向实际系统移交控制权前。系统将会中断。
- 按ctrl+x使用这些更改进行启动。
此时,系统会显示root shell,而且磁盘上的实际根文件系统会在/sysroot中以只读方式挂载。由于进行故障排除经常要求修改根文件系统,因此需要将根文件系统跟改为 读/写。
要重置root密码,请使用以下步骤:
- 以读/写方式重新挂载/sysroot
switch_root:/# mount -o remount,rw /sysroot
- 切换为chroot存放位置,其中/sysroot被视为文件系统树的根
switch_root:/# chroot /sysroot
- 设置新的root密码
sh-4.4# passwd root
- 确保所有未标记的文件(包括此时/etc/shadow)在启动过程中都会重新获得标记
sh-4.4# touch /.autorelabel
- 键入两次exit。