您無法避免意外的發生;如果意外發生在 linux 系統, 這可能會損害到硬碟主開機記錄 (MBR) 或是 LILO (Linux boot Loader)。 當 linux 由於硬碟故障而導致無法開機時,意外就會發生。 假如您不小心重新劃分磁碟,或是在 linux 系統的電腦上安裝其他作業系統, 例如:Windows 98/NT,LILO 也可能會失效。
這份文件給您一些點子、秘訣、和快速的指引來快速回復系統, 而不必費心地研讀上百頁有關 LILO 或 Linux 的文件。
循著這些步驟執行,以便從 LILO 或系統失靈中回復。
取得並建立 tomsrtbt 開機磁片 http://www.toms.net/rb, 並使用 tomsrtbt 開機磁片開機。 使用 fdisk 指令找出分割區 (partitions)。 試著用以下指令辨識出 root 分割區 -
bash# fdisk /dev/hda bash# mkdir /test bash# mount /dev/hda1 /test bash# ls /test 您應該會看到 root 分割區顯示如下 - bin fd lib mnt proc sbin usr boot dev etc home lost+found opt root tmp var
以我的系統為例,root 分割區是在 /dev/hda4:
bash# mkdir /hda4 bash# mount /dev/hda4 /hda4 bash# cat /hda4/etc/fstab 閱讀 fstab 的內容,並且按照 fstab 檔案掛上 (mount) 分割區。像下面這樣 - bash# mount /dev/hda5 /hda4/boot bash# mount /dev/hda6 /hda4/usr bash# mount /dev/hda7 /hda4/var bash# mount /dev/hda8 /hda4/opt bash# mount /dev/hda9 /hda4/root bash# mount /dev/hda10 /hda4/home
編輯 /etc/fstab (不是 /hda4/etc/fstab)並且加入(以下簡單的程式碼)
/dev/hda4 /hda4 ext2 defaults 1 1 /dev/hda5 /hda4/boot ext2 defaults 1 1 /dev/hda6 /hda4/usr ext2 defaults 1 1 /dev/hda7 /hda4/var ext2 defaults 1 1 /dev/hda8 /hda4/opt ext2 defaults 1 1 /dev/hda9 /hda4/root ext2 defaults 1 1 /dev/hda10 /hda4/home ext2 defaults 1 1 /dev/hda11 /hda4/win95part vfat defaults 1 1 在我的電腦中,hda4 含有 linux 的 root 分割區、hda5 有 boot 分割區、 hda11 則有 windows 95 的 vfat 系統。 bash# mkdir /hda4/win95part bash# mount /hda4/win95part 使用 fsck 或 e2fsck 指令來修復系統。 bash# man fsck bash# man e2fsck
依照狀況 1 的步驟來排除問題。如果無法解決,則參照以下步驟。 現在您應該已經掛上 /hda4 且已經編輯好 /etc/fstab 檔案了。
bash# mount -a bash# chroot /hda4 /sbin/lilo -q bash# man chroot bash# chroot /hda4 /sbin/lilo
bash# man lilo bash# /sbin/lilo -r /hda4
如果使用狀況 1 和狀況 2 的步驟均無法解決, 假如您有使用 'mkbootdisk' 製作過開機片(於安裝時或參考 'man mkbootdisk'自行建立),則使用您的開機磁片來開機並修復分割區。 mkbootdisk 存在於 mkbootdisk*.rpm 的套件,您必須安裝它。 (譯注:隨不同發行套件而有所差異;請洽詢您的發行套件廠商或組織)
假如您有其他 linux 系統的電腦,以 root 身份登入並且執行 -
bash$ man mkbootdisk bash# cp /etc/lilo.conf /etc/lilo-original.conf
bash# mkbootdisk /dev/fd0
第一步: 使用 tomsrtbt 開機磁片開機,掛上分割區, 並且使用以下指令備份 root 分割區至其他還有磁碟空間的分割區 -
編輯 /etc/fstab 並且寫入 (以下簡單的程式碼, 您可能必須按照您的磁碟機實際狀況作改變) - /dev/hda4 /hda4 ext2 defaults 1 1 /dev/hda11 /b1 vfat defaults 1 1 bash$ mkdir /hda4; mount /hda4 bash$ mkdir /b1; mount /b1 bash$ cd / bash$ df 查看 /b1 是否有足夠的磁碟空間,以便使用 tar 來備份 root 分割區。 bash$ tar cvf /b1/root-hda4.tar /hda4
第二步: 放入 Linux 光碟片,重開機並安裝 redhat linux (譯注:或其他 linux 發行套件) 在 /dev/hda4 (但千萬不要安裝任何多餘的套件, 您只需要安裝 root、boot 系統,和 LILO 管理者。 也就是說,選擇最小安裝即可)。 安裝程式也將會安裝 LILO 在您的硬碟裡。 現在重新啟動 linux,以 root 身份登入,並且執行 -
bash$ man mkbootdisk bash# cp /etc/lilo.conf /etc/lilo-original.conf
bash# mkbootdisk /dev/fd0 bash# cp /etc/lilo-original.conf /etc/lilo.conf
您應當採取下列的預防性措施來處理未來可能發生的問題:
bash$ man mkbootdisk mkbootdisk 存在於 mkbootdisk*.rpm 的套件,您必須安裝它。 (譯注:隨不同發行套件而有所差異;請洽詢您的發行套件廠商或組織) bash$ mkbootdisk --help bash$ mkbootdisk --device /dev/fd0 2.2.12-20
bash# vi /etc/fstab 加入以下數行 - /dev/hda1 /a1 vfat defaults 1 1 /dev/hdb1 /b1 vfat defaults 1 1 以我的系統為例, hda1 為 linux 之 root 分割區 '/' bash# cd / bash# tar cvf /b1/linux-root-partition-hda1.tar a1 bash# tar cvf /b1/linux-boot-partition-hda1.tar a1/boot
您可以使用 DOS 啟動載入程式(boot loader)載入啟動磁區,並以之取代 LILO。 在 MS DOS 提示符號下輸入以下指令:
FDISK /MBR
請參考 LILO 文件,取得其他移除 LILO 的方法;這些文件通常放在 linux 系統上的 /usr/doc/lilo* (譯注:或者是 /usr/share/doc/lilo*)。也請參考 'man lilo'。
在您更改 /etc/lilo.conf 之後,您必須執行 lilo ,使您的改變生效。 忘了執行是 linux 初學者很常犯的錯誤。執行 -
bash# lilo -v -v -v