一、大體流程
- 開機啓動在GRUB2界面“任意鍵”暫停倒計時。
- 選擇要修改的kernel,按“e”進行編輯。
- 在linux16參數這行的最後面追加“rd.break”參數,然後按下Ctrl + X組合鍵來運行修改過的內核程序。
- 進入到系統的緊急救援模式。
- 輸入以下命令破解密碼:
mount -o remount,rw / /sysroot
chroot /sysroot
passwd
touch /.autorelabel
exit
reboot
二、過程解釋
1、啓動倒計時的界面是GRUB2的界面,按“e”鍵進入“編輯模式”(參考上一篇外傳01)
2、一般在實際操作中,不需要在“rd.break”後面加上“consloe=tty0”。當然此處後面可以是“tty1,tty2 . . .”等,只要不是圖形化界面就可以,一般默認是“tty=0”。
3、進入系統,看到switch_root:/#,這個是一個仿真根文件系統中的臨時的根目錄(疑問點1:這個具體是個啥?)
4、輸入“mount”可以查看到根目錄默認是隻讀的,不可以去寫
5、輸入“mount -o remount,rw / /sysroot”, 以讀寫權限重新掛載上硬盤中真實的文件系統
6、sysroot是交叉編譯時指定臨時根目錄的方式,具體形式爲–with-sysroot=/path這樣編譯過程就會把path當成根目錄,確定相對的依賴,編譯後在正常的系統中也就很容易的尋找到依賴了。
7、輸入“chroot /sysroot”改變根
8、修改root密碼
- 方法一
這個方法可以看到密碼不容易出錯
echo redhat | passwd --stdin root - 方法二
passwd
這個方法必需需要輸入2次一樣的密碼纔可以成功
9、如果系統之前啓用了SELinux(什麼是SELinux,等外傳03再說),那麼要輸入“touch /.autorelabel”,意思是在/下創建一個.autorelabel文件,有這個文件存在,系統在重啓時就會對整個文件系統進行relabeling即創建文件安全上下文
10、連續輸入2次“exit”,第一次是退出真實環境,第二次是退出仿真根系統。讓SELinux開始全部重新打標(創建文件安全上下文)
11、打標完成以後自動重啓,重啓以後使用root用戶登錄