起因
自己在公司一台主机上安装了几个centos7的虚拟机用来给同事练手/测试,前段时间停电的缘故导致机器关机,重启后发现其中一台虚拟机无法启动,进度条很慢,并且进度条满了之后就一直卡在这个界面不能进入系统,今天刚好需要用到就搜了下解决办法。
主要参考了下面文章:
- Linux基础——centos 跳过管理员密码进行登录(单用户模式、救援模式)
- Linux无法登录,显示module is unknown,一闪而过
- 解决“Linux无法登录,显示module is unknown”问题
- Centos 7.2 failed to load SELinux policy freezing
解决
开始各种尝试的步骤就不列出来了,下面是最终解决的过程:
首先重启机器,当出现下图这个界面的时候按任意键(除了回车)停留在当前界面,选中需要启动的项,如图:
在这个界面按“e”进行编辑,如下:
接着将光标移动到如图所示位置,即当前段落的最后,添加init=/bin/sh(后面没有下划线,截图的时候是光标闪烁):
添加完成后使用ctrl+x启动,成功后会出现sh-4.2#,如下:
因为要修改文件,因此输入mount -o remount,rw /赋予读写权限(此时可以直接使用passwd命令修改root用户密码,本次不是忘记密码的问题,因此再描述):
因为在之前尝试修改的时候(类似前面修改init的方式,先后尝试了添加enforcing=0和selinux=0),按修改的顺序遇到了:
- 启动时出现[!!!]failed to load SELinux policy,freezing错误;期间出现登录提示:Login timed out after 60 seconds
- 登录时出现module is unknown错误;
两个问题,下面将分别对两个问题进行描述
首先是第一个,这个错误参考了Centos 7.2 failed to load SELinux policy freezing,这篇博客。
编辑/etc/selinux/config文件(也可以使用vi命令):vim /etc/selinux/config
发现果然是将”SELINUXTYPE“参数错误配置为disabled,按照博客中的参数重新配置并保存,下面截图为正确配置:
修改配置文件时候请务必细心,防止出现类似粗心的错误
修改完成后保存退出。
然后是第二个错误,参考了解决“Linux无法登录,显示module is unknown”问题、Linux无法登录,显示module is unknown,一闪而过,如下:
查看系统日志:vim /var/log/secure
在日志最下面发现类似问题,
然后查看配置文件:vim /etc/pam.d/login
因为安装的虚拟机系统为64位,因此此位置也可能不正确,因此直接注释掉”session required /lib/security/pam_limits.so“这一行。保存退出。
完成后重启系统,输入 exec /sbin/int 或者 exec /sbin/reboot重启,但是我在使用这两个命令的时候会卡住,因此直接在vmware中选择电源-重新启动客户机,
成功!