hello大家好😊
解决方法分析 ❗
我们可以让从initramfs 运行的脚本在某些点暂停,提供root shell,然后在该shell 存在的情况下继续。这主要是为了进行调试,但也可以使用该方法来重置丢失的 root 密码。
initramfs 在系统启动过程中的作用是为了提供一个临时的根文件系统,其中包含了启动所需的基本工具和驱动程序。它帮助系统进行硬件检测、加载必要的模块,并准备好实际的根文件系统。此外,它还可以提供救援功能,用于排除启动问题和执行维护任务
要访问 root shell ,按照以下步骤操作:
- 重新启动系统
- 按任意键 (Enter 除外) 中断启动加载器倒计时
- 将光标移至要启动的内核条目
- 按 e编辑选定的条目
- 将光标移到内核命令行 (以linux 开头的行)
- 附加
rd.break
。利用该选项,就在系统从 initramfs 向实际系统移交控制权前,系统将会中断。 - 按 ctrl+x使用这些更改进行启动。
示例:
此时,系统会显示 root shell,且磁盘上的实际根文件系统会在 /sysroot 中以只读方式挂载。由于进行故障排除经常要求修改根文件系统,因此我们需要将根文件系统更改为读/写。
在 switch_root 提示符中,使用命令mount -o remount,rw /sysroot
以读/写形式重新挂载 /sysroot 文件系统,然后使用 chroot /sysroot
命令进入 /sysroot 中的 chroot 存放位置。
示例:
然后使用passwd root
命令更改root密码
示例:
使用touch /.autorelabel
命令将系统配置为在启动后自动执行完整 SELinux 重新标记。由于 passwd 命令重新创建了不带SELinux上下文的 /etc/shadow 文件,因此这很有必要
示例:
最后键入exit
两次,以继续正常启动系统。系统将会运行 SELinux 重新标记,然后再次自行进行重新启动。系统启动后,我们在控制台以新密码登录root用户以验证
示例:
总结 💯
以上就是如何从boot loader(启动加载器)重置root密码的过程。大家可以自己试一下,注意不要写错命令🎈
感谢 💖
好啦,这次的分享就到这里,感谢大家看到这里🤞