1、光盤修復模式概念
Linux系統的光盤修復模式,也叫光盤救援模式,或者叫光盤安全模式都可以。
Linux系統的最終修復模式就是光盤修復模式(進入光盤下的安全模式啟動系統),光盤修復模式會繞開系統的硬盤啟動,也就是說拿光盤做為啟動盤進行系統的啟動,這樣的話硬盤上所有的內容都沒有被系統加載,最后把硬盤作為數據盤,掛載到光盤系統下,就可以修改系統硬盤上的數據了。通過光盤修復模式登陸到系統后,一些系統上的錯誤,理論上都可以進行修復(理論上)。
注意:
光盤修復模式的前提也是拿到本機,雖然Linux系統有修復模式,但是你最好能不用就別用,我們不應該把寶壓在修復模式上,而是應該壓在完整的操作規范,合理的權限划分等這些方面。不要隨意操作,不要想着出現問題再進行修復,只要是修復就代表系統就已經出現問題了。
2、光盤修復模式修復系統問題
(1)准備系統光盤
首先需要有系統光盤,或系統修復光盤。
我們這里只需要把CentOS 6.8的第一張光盤放入光驅,在關機的狀態下進行操作。
如下圖所示:
(2)進入BIOS
開啟虛擬機,選擇啟動時進入BIOS。
如下圖所示:
(3)修改BIOS的啟動順序
修改BIOS的啟動順序,讓系統從光盤啟動。
1)選擇Boot選項
2)光標移動到CD-ROM上
按+
號,向上移動到第一位。
3)選擇Exit界面
選擇第一選項保存並退出。
(4)進入光盤修復模式
1)系統重新啟動后,選擇第三項Rescue installed systen
(救援已安裝的系統)
稍等一會就會進入到光盤啟動系統的設置中。
2)首先選擇系統語言。
這里要注意,默認選擇English。
這里是Linux系統的純字符界面,不能選擇中文,不支持。
3)鍵盤默認選擇美式鍵盤。
按tab
鍵進行切換,按空格或者回車進行確認。
4)光盤安全啟動模式是否需要啟動網絡。
需要你選擇,光盤安全啟動模式是否需要啟動網絡。
啟不啟動都可以,反正光盤修復模式是需要拿到本機進行操作的,選擇不啟動就很好。
5)在救援模式下需要進行的操作。
需要你選擇在救援模式下,你需要進行什么樣的操作。
點擊Continue
繼續。
Continue
:可以對系統進行任何所需的更改,如果要繼續此步驟,請選擇“繼續”。Read-Only
:以只讀方式掛載文件系統。Skip
:表示跳出光盤安全模式,直接進行系統安裝。Advanced
:高級選項。
如下圖所示:
選擇OK
選擇OK
6)選擇通過打開shell的方式進入安全模式。
7)可以看到shell的命令行模式出現了。
上圖中可以看到,現在出現的提示符和我們常規的Linux提示符是不一樣的。是因為光盤的修復模式中的環境變量和配置文件都沒有加載,所以看到bash-4.1#
這樣的提示符是正常的。
(5)修復系統
我們是通過光盤啟動的光盤修復模式,所以我們現在所在的根目錄不是真正的系統根目錄,而是光盤的模擬根目錄。系統根目錄被當成外來設備放在了/mnt/sysimage/
目錄中。(重點)
所以,Linux系統真正的根目錄,是自動被掛載在/mnt/sysimage/
目錄上,我們此時的目錄是在光盤的模擬根目錄中,我們要切換到/mnt/sysimage/
目錄中,來執行我們需要的系統修復工作。
需要執行chroot
命令,chroot
命令的作用是change root directory
改變系統根目錄的意思。把我們現在的所在目錄移動到真正的系統根目錄(換句話說就是把根目錄暫時移動到某個目錄當中。)。
執行命令:bash-4.1 # chroot /mnt/sysimage/
只要該命令執行完,我所在的訪問目錄就是真正的系統盤了。
我們可以從上圖中看到,執行完bash-4.1 # chroot /mnt/sysimage/
命令后,系統提示符發生了一些變化,還有就是根目錄中的內容也發生了變化,執行完命令之后看到的目錄中的文件就和我們實際系統中根目錄中的文件就一樣了。
這個時候你就可以修復原Linux系統中出現的問題了,系統有任何錯誤都可以直接修復。
比如重要系統文件丟失,導致系統無法正常啟動。比如如果忘記了密碼,直接執行丟改root用戶密碼就可以。比如如果系統默認的運行級別修改錯了,直接編輯/etc/inittab
文件進行修改就可以了。再比如如果是硬盤信息配置錯誤導致系統啟動不了,修改/etc/fstab
文件就可以。
(6)修復系統實操
我們就拿上邊說的重要系統文件丟失,導致系統無法啟動來進行修復。
假設把/etc/inittab
文件丟失了,我們通過系統啟動過程知道這個文件是定義系統默認運行級別的,如果丟失了這個文件,系統就不能正常啟動。
操作流程如下:
- 改變根目錄
bash-4.1# chroot/mnt/sysimage
- 進入
root
目錄。因為默認進入的是/
目錄,如果不進入root
,提取的inittab
文件是會報錯。
sh-4.1# cd/root
- 查詢
/etc/inittab
文件屬於哪個包。如果系統中文件丟失不能查詢,需要通過其他Linux
系統查詢。sh-4.1# rpm -qf /etc/inittab initscripts-9.03.31-2.el6.centos.1686
- 建立掛載點
sh-4.1# mkdir /mnt/cdrom
- 掛載光盤
sh-4.1# mount /dev/sr0 /mnt/cdrom
- 提取
inittab
文件到當前目錄
sh-4.1# rpm2cpio /mnt/cdrom/Packages/ini tscripts-9.03.31-2.el6.centos.1686.rpm cpio -idv ./etc/inittab
- 復制
inittab
文件到指定位置
sh-4.1# cp etc/inittab /etc/inittab
注意:
此命令執行時不能將文件直接恢復至
/etc
目錄,只能提取到當前目錄下,且恢復的文件名稱所在路徑要寫完整的絕對路徑。提取文件成功后,將其復制到根分區所在的/mnt/sysimage
目錄下相應位置即可。
(7)總結
在光盤修復模式下,如果你能確認系統到底出現了什么問題,就把它修復回來就好了。怕的就是你也不知道是什么原因出現的系統問題,這樣即使你進入了系統的光盤修復模式,也很難進行系統的修復,如果修復不了就只能重裝系統了。