『學了就忘』Linux啟動引導與修復 — 74、Linux系統的修復模式(光碟修復模式)

繁華似錦Fighting發表於2021-12-10

1、光碟修復模式概念

Linux系統的光碟修復模式,也叫光碟救援模式,或者叫光碟安全模式都可以。

Linux系統的最終修復模式就是光碟修復模式(進入光碟下的安全模式啟動系統),光碟修復模式會繞開系統的硬碟啟動,也就是說拿光碟做為啟動盤進行系統的啟動,這樣的話硬碟上所有的內容都沒有被系統載入,最後把硬碟作為資料盤,掛載到光碟系統下,就可以修改系統硬碟上的資料了。通過光碟修復模式登陸到系統後,一些系統上的錯誤,理論上都可以進行修復(理論上)。

注意:

光碟修復模式的前提也是拿到本機,雖然Linux系統有修復模式,但是你最好能不用就別用,我們不應該把寶壓在修復模式上,而是應該壓在完整的操作規範,合理的許可權劃分等這些方面。不要隨意操作,不要想著出現問題再進行修復,只要是修復就代表系統就已經出現問題了。

2、光碟修復模式修復系統問題

(1)準備系統光碟

首先需要有系統光碟,或系統修復光碟。

我們這裡只需要把CentOS 6.8的第一張光碟放入光碟機,在關機的狀態下進行操作。

如下圖所示:

image

(2)進入BIOS

開啟虛擬機器,選擇啟動時進入BIOS。

如下圖所示:

image

(3)修改BIOS的啟動順序

修改BIOS的啟動順序,讓系統從光碟啟動。

1)選擇Boot選項

image

2)游標移動到CD-ROM上

+號,向上移動到第一位。

image

3)選擇Exit介面

選擇第一選項儲存並退出。

image

(4)進入光碟修復模式

1)系統重新啟動後,選擇第三項Rescue installed systen(救援已安裝的系統)

image

稍等一會就會進入到光碟啟動系統的設定中。

2)首先選擇系統語言。

這裡要注意,預設選擇English。

這裡是Linux系統的純字元介面,不能選擇中文,不支援。

image

3)鍵盤預設選擇美式鍵盤。

tab鍵進行切換,按空格或者回車進行確認。

image

4)光碟安全啟動模式是否需要啟動網路。

需要你選擇,光碟安全啟動模式是否需要啟動網路。

啟不啟動都可以,反正光碟修復模式是需要拿到本機進行操作的,選擇不啟動就很好。

image

5)在救援模式下需要進行的操作。

需要你選擇在救援模式下,你需要進行什麼樣的操作。

點選Continue繼續。

  • Continue:可以對系統進行任何所需的更改,如果要繼續此步驟,請選擇“繼續”。
  • Read-Only:以只讀方式掛載檔案系統。
  • Skip:表示跳出光碟安全模式,直接進行系統安裝。
  • Advanced:高階選項。

如下圖所示:

image

選擇OK

image

選擇OK

image

6)選擇通過開啟shell的方式進入安全模式。

image

7)可以看到shell的命令列模式出現了。

image

上圖中可以看到,現在出現的提示符和我們常規的Linux提示符是不一樣的。是因為光碟的修復模式中的環境變數和配置檔案都沒有載入,所以看到bash-4.1#這樣的提示符是正常的。

(5)修復系統

我們是通過光碟啟動的光碟修復模式,所以我們現在所在的根目錄不是真正的系統根目錄,而是光碟的模擬根目錄。系統根目錄被當成外來裝置放在了/mnt/sysimage/目錄中。(重點)

所以,Linux系統真正的根目錄,是自動被掛載在/mnt/sysimage/目錄上,我們此時的目錄是在光碟的模擬根目錄中,我們要切換到/mnt/sysimage/目錄中,來執行我們需要的系統修復工作。

需要執行chroot命令,chroot命令的作用是change root directory改變系統根目錄的意思。把我們現在的所在目錄移動到真正的系統根目錄(換句話說就是把根目錄暫時移動到某個目錄當中。)。

執行命令:bash-4.1 # chroot /mnt/sysimage/

只要該命令執行完,我所在的訪問目錄就是真正的系統盤了。

image

我們可以從上圖中看到,執行完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)總結

在光碟修復模式下,如果你能確認系統到底出現了什麼問題,就把它修復回來就好了。怕的就是你也不知道是什麼原因出現的系統問題,這樣即使你進入了系統的光碟修復模式,也很難進行系統的修復,如果修復不了就只能重灌系統了。

相關文章