起因
自己在公司一台主機上安裝了幾個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中選擇電源-重新啟動客戶機,
成功!