譯者:Nica < nicaliu at gmail dot com >



系統出問題的時侯可以試試本文介紹的幾個方法。

不過在使用這些方法時你必須對系統有一定的瞭解,這裡會談到怎麼開機進入 rescue mode、single-user mode 還有緊急模式。進入後請用你的知識去修復系統。

需要進入這些模式可能有幾個理由:

.無法正常開機進入系統 (runlevel 3 或 5 )

.軟、硬體有問題,你必須進入系統取幾個重要的檔案

.忘記 root 密碼



一、無法開機進入系統

通常發生在安裝完 Linux,又裝了其它作業系統的情況下。有些作業系統會假設這台電腦裡沒有其它作業系統。它們會覆寫 MBR (Master Boot Record) - 也就是存放 GRUB boot loader 的地方。若 boot loader 被覆寫,就無法開機進入 Linux,除非進入 rescue mode 重新組態 boot loader。



另一種常見的情況就是在安裝完成後,使用重新分割系統的工具,調整分割區大小或從沒有使用到的空間建立新的分割區,這些動作會改變分割區的順序。若 / 分割區的編號改變,boot loader 就會找不到它,無法執行掛載分割區的動作。要修復此問題,需開機進入 rescue mode  並修改 /boot/grub/grub.conf 這個檔。



二、軟、硬體問題

這個範疇涵蓋極廣。有可能是硬碟壞了,也可能是在 boot loader 組態檔裡指定了無效的 root 裝置或 kernel。無論是哪一個,你都無法重開 Linux。不過若可以開機至其中一種修復模式,可能就能解決這個問題,或至少取得重要檔案的備份。



三、root 密碼

忘了 root 密碼該怎麼辦 ? 要重設一個不一樣的密碼,請開機進入 rescue mode 或 single-user mode,再使用 passwd 命令重設 root 密碼。



【開機進入 rescue mode】

rescue mode 提供的是自 cd-rom 載入開機的小型、完整 Linux 環境功能,也可以利用其它方式【Nica註:不見得是 cd-rom】開機,取代從系統硬碟開機的方式。



顧名其義,rescue mode 提供的就是救援系統的模式。正常操作下,Linux 使用在系統硬碟裡的檔案執行程式、儲存檔案,等等。



不過有時可能會出現無法令 Linux 完整運作,存取系統硬碟裡的檔案的時侯。用 rescue mode,就可以取得存放在系統硬碟裡的檔案 - 即使是在 Linux 無法正確由硬碟啟動執行的情況下。



要開機在 rescue 模式下,必須使用下列方式之一啟動系統:



.從可開機的安裝光碟開機啟動系統

.透過其它可開機的安裝媒體啟動系統 - 例如 USB 隨身碟

.透過 Linux 光碟 一 (例:Red Hat Enterprise Linux CD-ROM #1)啟動系統。



一旦使用上述方式之一開機成功,就可以在 kernel 參數後面加入 rescue 的關鍵字。就 x86 系統而言,只要在開機提示符號後面加入以下指令即可:



linux rescue



這裡會需要回答幾個基本問題,包括使用的語言等等,也會要你選擇有效的 rescue image 位置 - 選擇是自 本機 cd-rom、硬碟、NFS image、FTP 或 HTTP 等。選擇的位置必須包含有效的安裝目錄樹,且安裝目錄樹必須為與你所啟動之系統的 Linux 相同版本。若你使用開機光碟或其它媒體啟動 rescue mode,安裝目錄樹必須由來自媒體的相同目錄樹所建立。卻瞭解更多目錄樹設定資訊,可參考前幾章的文件。

【Nica 註:完整安裝文件參考網址:http://www.centos.org/docs/5/html/5.2/Installation_Guide/index.html】



若選擇的 rescue image 不需用到網路連結,它會詢問你是否要建立網路連線。若需要將檔案備份到其它電腦,或需要自其它共享網路位置取得一些 RPM 套件進行安裝,網路連線的功能就很有用了。



出現下列訊息時:



The rescue environment will now attempt to find your Linux installation and mount it under the directory /mnt/sysimage. You can then make any changes required to your system. If you want to proceed with this step choose 'Continue'. You can also choose to mount your file systems read-only instead of read-write by choosing 'Read-only'. If for some reason this process fails you can choose 'Skip' and this step will be skipped and you will go directly to a command shell.



若你選擇 Continue,它會試圖在 /mnt/sysimage/ 目錄下掛載檔案系統。若掛載分割區失敗,也會通知。若選擇 Read-Only,它會試在 /mnt/sysimage/ 目錄下,以唯讀模式掛載檔案系統。若選擇 Skip,則不掛載檔案系統。若你認為檔案系統有問題,請選擇 Skip。



進入 rescue mode 後,可在提示符號下:



sh-3.00b#



用 Ctrl-Alt-F1 與 Ctrl-Alt-F2 作 VC (virtual console) 1 與 VC2 的切換。



若選擇 Continue 自動掛載分割區,且掛載成功,你就進入了 single-user mode。



即便檔案系統已為掛載狀態,在 rescue mode 下,預設的 root 分割區亦為暫時的 root 分割區,並非正常使用下 (runlevel 3 或 5) 的檔案系統 root 分割。若選擇掛載檔案系統且掛載成功,就可以變更 rescue mode 環境下的 root 分割區,改成你檔案系統的 root 分割區,命令如下:



chroot /mnt/sysimage



若你需要執行例如 rpm 這樣的命令 - 這必須是 root 分割區掛載為 / 的狀態下才能執行,上述動作就很有用了。欲結束 chroot 環境,請在提示符號下輸入 exit。



若選擇了 Skip,仍可試著在 rescue mode 下,手動掛載分割區或 LVM2 logical volume,方式就是建立一個像 /foo 這樣的目錄,指令如下:



mount -t ext3 /dev/mapper/VolGroup00-LogVol02 /foo



就這個指令來說,/foo 指必須建立的目錄,而 /dev/mapper/VolGroup00-LogVol02 即為要掛載的 LVM2 logical volume。若分割區為 ext2 的型態,就將 ext3 改成 ext2 就好。



若不知道所有實體分割區名稱,可使用下面指令把它們列出來:



fdisk -l



(列出所有分割區清單)



若你不知道所有 LVM2 physical volumes 、volume group 或 logical volume 的名稱,可使用下面指令列出來:



pvdisplay

vgdisplay

lvdisplay



【Nica 註:pvdisplay- physical volumes;vgdisplay -volume group;lvdisplay -logical volume】



在提示符號下,有很多好用的指令可以運用,例如:

.在網路功能啟動下,可使用 ssh, scp 與 ping

.使用者可透過 dump 與 restore 處理磁帶機裝置

.用 parted 與 fdisk 管理分割區

.用 rpm 安裝或升級軟體

.joe 可用來編輯組態檔



注意:當你試著啟動其它著名編輯器,像是 emacs, pico 或 vi 時,joe 編輯器就會被啟動。



【重新安裝 boot loader】

很多情況下都可能讓 GRUB boot loader 發生錯誤,它可能被刪、有訛誤、或被其它作業系統置換。

以下幾個步驟說明的就是如何將 GRUB 重新安裝於 MBR:

.以安裝的開機媒體 (VCD 或 DVD 等等) 啟動系統

.在安裝提示符號下輸入 linux rescue 進入 rescue 環境

.輸入 chroot /mnt/sysimage 掛載開機分割區

.輸入 /sbin/grub-install /dev/hda 重新安裝 GRUB boot loader - 其中 /dev/hda 指的是開機分割區

.檢查 /boot/grub/grub.conf 檔,看是否要加入一些必要資料,以控制額外的作業系統

.重開機



【開機進入 single user mode】

single user mode 的優勢之一就是不必用到開機光碟;不過它也無法讓你將檔案掛載為唯讀,或是統統不要掛載。

若系統可開機,但開機後不讓你登入,就可以試試 single user mode。

在此模式下,電腦是開機在 runlevel 1。本機檔案系統皆已掛載,但網路是不能用的。你擁有的是一個可應用的系統修復 shell 介面。不同於 rescue mode 的是:single user mode 會嘗試自動掛載檔案系統。『如果你的檔案系統無法順利掛載,請不要使用 single user mode』。如系統的 runlevel 1 組態有問題,亦無法使用 single user mode。



在 x86 系統下使用 GRUB,可透過以下步驟開機進入 single user mode:

1. 在開機時的 GRUB splash 畫面按任意鍵進入 GRUB 互動表單。

2. 在 Kernel 版本裡選擇 Red Hat Enterprise Linux 的版本後,按 a 鍵 【Nica 註:表示 append 要在該行加入組態設定之意】

3. 至該行最後輸入 single (記得先按空白鍵再輸入 single) 後,按 Enter 鍵結束編輯模式

【Nica 註:之後按 b 即可 boot - 開機】



【開機進入 Emergency mode】

在 emergency mode 下,開機進入的是最基本的環境。root 檔案系統是以唯讀的方式掛載,幾乎什麼都沒有設定。這個模式最主要優於 single-user mode 的地方是:init 檔未載入。若 init 有錯或不能運作,你仍能掛載檔案系統,救回那些重新安裝後就會不見的資料。



開機進入 emergency mode 的方式同於 single user mode 所述,只不過將 single 這個字換成 emergency。



【Nica 註:就系統管理來說直接稱 single user mode、rescue mode 與 emergency mode 是最容易瞭解的,硬要用中文,則依序為單一使用者模式救援模式緊急模式。



原文出處/參考網站:

Cent OS 5.2 Chapter 26. Basic System Recovery
創作者介紹
創作者 nicaliu 的頭像
nicaliu

尼卡.Nica

nicaliu 發表在 痞客邦 留言(0) 人氣()