linux救援模式
修改/etc/fstab, /etc/rc.d/rc.sysinit等系統開機檔案時誤操作就會造成linux無法進入,有rescue盤可以容易修複,這個方法適合於沒有rescue盤時修複系統。
grub菜單中選擇linux,按e,e,進入編輯模式,
kernel (hd0,0)/vmlinuz root=/dev/hda2.....這一行最後加上
init=/bin/bash,修改好後按enter,b引導
修改後的引導資訊類似如下:
kernel (hd0,0)/vmlinuz root=/dev/hda2 init=/bin/bash
這樣引導系統能夠得到一個bash shell
進入的系統會是read-only的,首先先使用fsck檢查系統
fsck -a /dev/hdaX 處理根分區 X是根分區號 比如hda2
fsck -R -A -a 處理其他分區
假如系統在上次重啟,是正常重啟的,文檔系統是正常卸載的,
能夠不用fsck檢查直接把系統掛載成read-write的
mount /proc
mount / -o remount,rw
swapon -a 開啟任何的交換分區
source /etc/profile 載入使用者環境
在修複好系統後將系統重新掛載成ro的,就能夠安全重啟了。
mount / -o remount,ro
Linux救援模式應用
當系統連單一使用者模式都無法進入時或出現GRUB命令列也不能解決的引導問題,我們就需要使用Linux救援模式來進行故障排除了。步驟如下:
1、將Linux安裝光碟片(如果使用CD光碟片,則放入第一張引導光碟片)放入光碟機,設定韌體CMOS/BIOS為光碟片引導,當Linux安裝畫面出現後,在“boot:”提示符後輸入“linux rescue”斷行符號進入救援模式。(想瞭解救援模式詳細資料,還可以按F5鍵查看)
2、系統會檢測硬體,引導光碟片上的Linux環境,依次提示你選擇救援模式下使用的語言(建議選擇預設的英文即可,根據筆者測試,部分Linux系統選擇中文會出現亂碼);鍵盤設定用預設的“us”就好;網路設定可以根據需要,大部分損毀修復不需要網路連接,可不進行此項設定,選擇“No”。
3、接下來系統將試圖尋找根分區。
預設在救援模式,硬碟的根分區將掛載到光碟片 Linux環境的/mnt/sysimage目錄下,預設選項“continue”表示掛載許可權為讀寫; “Read-only”為唯讀,如果出現檢測失敗可以選擇“skip”跳過。此處,因為要對系統進行修複,所以需要有讀寫權限,一般選擇預設選項 “continue”。進入下一步後,系統提示執行“chroot /mnt/sysimage”命令,可以將根目錄掛載到我們硬碟系統的根目錄中去。
案例一:雙系統啟動修復
當我們安裝雙系統內容,先安裝Linux再安裝Windows;或者已經安裝好雙系統內容的Windows損壞,在重新安裝Windows後,儲存 GRUB的MBR(Master Boot Record,主引導記錄)會被Windows系統的自舉程式NTLDR所覆蓋,造成Linux系統無法引導。
1、如果要恢複雙系統引導,首先用上述方法進入救援模式,執行chroot命令如下:
sh-3.1# chroot /mnt/sysimage
2、將根目錄切換到硬碟系統的根目錄中,然後執行grub-install命令重新安裝GRUB:
sh-3.1# grub-install /dev/hda
“/dev/hda”為硬碟名稱,如使用SCSI硬碟或Linux安裝在第二塊IDE硬碟,此項設定要做相應調整。
3、然後依次執行exit命令,退出chroot模式及救援模式(執行兩次exit命令):
sh-3.1# exit
sh-3.1# exit
系統重啟後,將恢複GRUB引導的雙系統啟動。
案例二:系統設定檔丟失修複
系統在引導期間,很重要的一個過程就是init進程讀取其設定檔/etc/inittab,啟動系統基本服務程式及預設運行層級的服務程式完成系統引導,如果/etc/inittab誤刪除或修改錯誤,Linux將無法正常啟動。此時,只有通過救援模式才可以解決此類問題。
1、有備份檔案的恢複辦法
進入救援模式,執行chroot命令後, 如果有此檔案的備份(強烈建議系統中的重要資料目錄,如/etc、/boot等要進行備份),直接將備份檔案拷貝回去,退出重啟即可。如果是設定檔修改 錯誤,如比較典型的/boot/grub/grub.conf及/etc/passwd的檔案修改錯誤,也可以直接修正恢複。假設有備份檔案/etc /inittab.bak,則在救援模式下執行:
sh-3.1# chroot /mnt/sysimage
sh-3.1# cp /etc/inittab.bak /etc/inittab
2、沒有備份檔案的恢複辦法
如果一些設定檔丟失或軟體誤刪除,且無備份,可以通過重新安裝軟體包來恢複,首先尋找到/etc/inittab屬於哪一個RPM包(即便檔案丟失,因為存在RPM資料庫,一樣可以尋找到結果):
sh-3.1# chroot /mnt/sysimage
sh-3.1# rpm -qf /etc/inittab
initscripts-8.45.3-1
退出chroot模式:
sh-3.1# exit
掛載存放RPM包的安裝光碟片(在救援模式下,光碟片通常掛載在/mnt/source目錄下):
sh-3.1# mount /dev/hdc /mnt/source
Fedora系統的RPM包存放在光碟片Fedora/RPMS目錄下,其 他Linux存放位置大同小異,這裡不一一列舉;另外,因為要修複的硬碟系統的根目錄在/mnt/sysimage下,需要使用--root選項指定其位 置。覆蓋安裝/etc/inittab檔案所在的RPM包:
sh-3.1# rpm -ivh --replacepkgs --root /mnt/sysimage /mnt/source/Fedora/RPMS/ initscripts-8.45.3-1.i386.rpm
其中的rpm命令選項“--replacepkgs”表示覆蓋安裝,執行完成後,即已經恢複了此檔案。
如果想只提取RPM包中的/etc/inittab檔案進行恢複,可以在進入救援模式後,執行命令:
sh-3.1# rpm2cpio /mnt/source/Fedora/RPMS/initscripts-8.45.3-1.i386.rpm
| cpio -idv ./etc/inittab
sh-3.1# cp etc/inittab /mnt/sysimage/etc
注意此命令執行時不能將檔案直接恢複至/etc目錄,只能提取到目前的目錄下,且恢複的檔案名稱所在路徑要寫完整的絕對路徑。提取檔案成功後,將其複製到根分區所在的/mnt/sysimage目錄下相應位置即可。
救援模式是維護Linux的有力武器,本文以上述兩個例子講解了它的應用方法,希望能夠給讀者一點啟示。解決Linux系統啟動的故障,必須充分理解Linux的引導過程,才能夠對故障進行有效判斷和處理。