LILO,LinuxCrashRescueHOW-TO中譯版 作者:AlDev(AlavoorVasudevan)
[email protected] 譯者:黃國偉
[email protected] v6.0,25Dec2000翻譯日期:19Mar2001 -------------------------------------------------------------------------------- 這份文件
LILO, Linux Crash Rescue HOW-TO 中譯版
作者:Al Dev (Alavoor Vasudevan)
[email protected] 譯者:黃國偉
[email protected] v6.0, 25 Dec 2000 翻譯日期:19 Mar 2001
--------------------------------------------------------------------------------
這份文件探討從 Linux 系統失靈中回復的方法。造成 Linux 系統失靈的各種原因可能是 - LILO 毀損、 linux 無法開機、 硬碟主開機記錄 (Master Boot Record, MBR) 損壞、或是安裝其他作業系統例如 Windows NT 而將 LILO 或 MBR 蓋寫掉所造成 linux 無法開機。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
1. 簡介
您無法避免意外的發生;如果意外發生在 linux 系統,這可能會損害到硬碟主開機記錄 (MBR) 或是 LILO (Linux boot Loader)。當 linux 由於硬碟故障而導致無法開機時,意外就會發生。假如您不小心重新劃分磁碟,或是在 linux 系統的電腦上安裝其他作業系統,例如:Windows 98/NT,LILO 也可能會失效。
這份文件給您一些點子、秘訣、和快速的指引來快速回復系統,而不必費心地研讀上百頁有關 LILO 或 Linux 的文件。
1.1 回復系統的快速步驟
循著這些步驟執行,以便從 LILO 或系統失靈中回復。
狀況 1: 假如系統無法開機 -
取得並建立 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/hda2 。再繼續嘗試 hda3 、 hda4 、 hda5 等,直到您找出 root 分割區為止。如在 hda 仍無法找到,請重復以上的步驟在其他裝置上, 例如 hdb, hdc, hdd 等.. 在建立新的 lilo 設定時, /usr、/var、與 /boot 分割區也是需要的。
以我的系統為例,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
--------------------------------------------------------------------------------
以我的系統為例,按照 fstab 所顯示,hda5 是 boot、hda6 是 usr , hda7 是 var、hda8 是 opt、hda9 是 root、hda10 是 home、而 hda11 是 windows95 的目錄
編輯 /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
--------------------------------------------------------------------------------
狀況 2: 如果 LILO 是無效的..
依照狀況 1 的步驟來排除問題。如果無法解決,則參照以下步驟。現在您應該已經掛上 /hda4 且已經編輯好 /etc/fstab 檔案了。
--------------------------------------------------------------------------------
bash# mount -a
bash# chroot /hda4 /sbin/lilo -q
bash# man chroot
bash# chroot /hda4 /sbin/lilo
--------------------------------------------------------------------------------
您也可以選擇使用 /sbin/lilo 以代替 chroot。 lilo 加選項 -r 實際上就和 chroot 的指令是一樣的。 強烈建議您使用 chroot,而不要使用 lilo -r,因為使用 chroot 比較方便,且較容易找出錯誤。
--------------------------------------------------------------------------------
bash# man lilo
bash# /sbin/lilo -r /hda4
--------------------------------------------------------------------------------
狀況 3: 如果 LILO 是無效的..
如果使用狀況 1 和狀況 2 的步驟均無法解決,假如您有使用 'mkbootdisk' 制作過開機片(於安裝時或參考 'man mkbootdisk'自行建立),則使用您的開機磁片來開機並修復分割區。 mkbootdisk 存在於 mkbootdisk*.rpm 的套件,您必須安裝它。 (譯注:隨不同發行套件而有所差異;請洽詢您的發行套件廠商或組織)
狀況 4: 如果以上狀況 1、2、3 的步驟皆無法解決問題,且您也沒有開機磁片
假如您有其他 linux 系統的電腦,以 root 身份登入並且執行 -
--------------------------------------------------------------------------------
bash$ man mkbootdisk
bash# cp /etc/lilo.conf /etc/lilo-original.conf
--------------------------------------------------------------------------------
編輯 /etc/lilo.conf 並將您在 '狀況 1' 所獲得的 root 分割區格式填入;之後插入空白磁碟片並執行 -
--------------------------------------------------------------------------------
bash# mkbootdisk /dev/fd0
--------------------------------------------------------------------------------
mkbootdisk 存在於 mkbootdisk*.rpm 的套件,您必須安裝它。 (譯注:隨不同發行套件而有所差異;請洽詢您的發行套件廠商或組織) 您必須確保將 /etc/lilo-original.conf 更改回原來的檔名 /etc/lilo.conf!! 再以此開機磁片進行狀況 3 的步驟。
狀況 5: 這是最壞的情況,希望您不會走到這個地步。狀況 1 到 4 已包含了絕大多數的案例,但是如果連狀況 1、2、3、和 4 的步驟都無法解決 -
第一步: 使用 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
--------------------------------------------------------------------------------
注意:您必須記得將 lilo-original.conf 復制回 lilo.conf!! 編輯 /etc/lilo.conf 並將您在 '狀況 1' 所獲得的 root 分割區格式填入;之後插入空白磁碟片並執行 -
--------------------------------------------------------------------------------
bash# mkbootdisk /dev/fd0
bash# cp /etc/lilo-original.conf /etc/lilo.conf
--------------------------------------------------------------------------------
測試此開機磁片,檢視其是否能運作,並將第一步中利用 tar 作備分的檔案 /b1/root-hda4.tar 回復。 (譯注:您可使用 tar xvf 來回復。詳見 tar manpage)
1.2 預防性措施
您應當采取下列的預防性措施來處理未來可能發生的問題:
您一定要偶爾制作救援開機磁片,且在您改變分割區時一定要制作。插入空白磁碟片並執行 -
--------------------------------------------------------------------------------
bash$ man mkbootdisk
mkbootdisk 存在於 mkbootdisk*.rpm 的套件,您必須安裝它。
(譯注:隨不同發行套件而有所差異;請洽詢您的發行套件廠商或組織)
bash$ mkbootdisk --help
bash$ mkbootdisk --device /dev/fd0 2.2.12-20
--------------------------------------------------------------------------------
您手邊必須擁有 tomsrtbt 的開機磁片。詳見 http://www.toms.net/rb
您手邊必須擁有 Yard 救援和開機磁片。詳見 http://www.croftj.net/~fawcett/yard
備分 /root 與 /boot 目錄。使用 Tomsrtbt 開機磁片開機,並且執行
--------------------------------------------------------------------------------
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
--------------------------------------------------------------------------------
1.3 移除 LILO
您可以使用 DOS 啟動載入程式(boot loader)載入啟動磁區,並以之取代 LILO。在 MS DOS 提示符號下輸入以下指令:
--------------------------------------------------------------------------------
FDISK /MBR
--------------------------------------------------------------------------------
此處的 MBR 代表 "硬碟主開機記錄(Master Boot Record)"。
請參考 LILO 文件,取得其他移除 LILO 的方法;這些文件通常放在 linux 系統上的 /usr/doc/lilo* (譯注:或者是 /usr/share/doc/lilo*)。也請參考 'man lilo'。
1.4 常犯錯誤
在您更改 /etc/lilo.conf 之後,您必須執行 lilo ,使您的改變生效。忘了執行是 linux 初學者很常犯的錯誤。執行 -
--------------------------------------------------------------------------------
bash# lilo -v -v -v
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
2. 相關連結
請參閱以下位址,可取得 LILO、Linux 救援、當機回復的相關資訊 -
Mini Lilo HOWTO at http://www.linuxdoc.org/HOWTO/mini/LILO.html
Bootdisk-HOWTO at http://www.metalab.unc.edu/LDP/HOWTO/Bootdisk-HOWTO/index.html
Pre-made boot disks at http://www.linuxdoc.org/HOWTO/Bootdisk-HOWTO/
Tomsrtbt boot floppy disk http://www.toms.net/rb
Yard rescue and boot floppy disk http://www.croftj.net/~fawcett/yard
BootPrompt-HOWTO at http://www.linuxdoc.org/HOWTO/BootPrompt-HOWTO.html
Multiboot with LILO mini HOWTO at http://www.linuxdoc.org/HOWTO/mini/Multiboot-with-LILO.html
Linux+WinNT mini HOWTO at http://www.linuxdoc.org/HOWTO/mini/Linux+WinNT.html
Linux goodies main site http://www.aldev.8m.com
Linux goodies mirror site http://aldev.webjump.com
Vim color text editor for C++, C http://metalab.unc.edu/LDP/HOWTO/Vim-HOWTO.html
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
3. 此份文件的其他格式
此份文件是以 11 種不同的格式所發行的 - DVI, Postscript, Latex, Adobe Acrobat PDF, LyX, GNU-info, HTML, RTF(Rich Text Format), Plain-text,
Unix man pages, single HTML file 以及 SGML.
您可以從下列連結得到 HTML、DVI、Postscript、或 SGML 格式的 HOWTO 文件單一 tar ball 檔案 - ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/other-formats/
純文字格式: ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO
其他語言之文件翻譯,像是法文、德文、西班牙文、 中文、日文等是在 ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO 歡迎您幫忙翻譯成其他語言的版本。
此份文件是以 "SGML-Tools" 工具軟體所撰寫的,您可以在下面的連結得到此軟體 - http://www.sgmltools.org 您可使用以下指令組譯原始檔,例如:
sgml2html LILO-crash-rescue-HOWTO.sgml (獲取 html 檔案)
sgml2rtf LILO-crash-rescue-HOWTO.sgml (獲取 RTF 檔案 )
sgml2latex LILO-crash-rescue-HOWTO.sgml (獲取 latex 檔案)
(譯注:中譯版使用者請至 ftp.linux.org.tw/pub/CLDP/src
下載 zh-sgmltools-1.x-x.tar.gz 並安裝之,再以 big5sgml2html、big5sgml2rtf、 big5sgml2latex 指令組譯原始檔。詳見 SGMLtools 中文套件使用說明 http://www.linux.org.tw/CLDP/zh-sgmltools.html)
LaTeX 文件可以使用 sgml2latex 來制作 Postscript,再用 dvips 轉成 PDF 檔,並且使用 Acrobat distill ( http://www.adobe.com) 指令觀看結果。如以下所示:
--------------------------------------------------------------------------------
bash$ man sgml2latex
bash$ sgml2latex filename.sgml
bash$ man dvips
bash$ dvips -o filename.ps filename.dvi
bash$ distill filename.ps
bash$ man ghostscript
bash$ man ps2pdf
bash$ ps2pdf input.ps output.pdf
bash$ acroread output.pdf &
--------------------------------------------------------------------------------
或者您可使用 Ghostscript 的指令 ps2pdf。 ps2pdf 是個與 Adobe's Acrobat Distiller 產品作用相似並擁有其大部分功能的指令:它將 PostScript 檔案轉換成可攜式文件格式(Portable Document Format, PDF)檔案。 ps2pdf是被一個包含在 Ghostscript 的指令稿 (command script) (批次檔 batch file),且選擇一種名叫 pdfwrite 的特殊 "輸出裝置 (output device)" 來執行。為了要使用 ps2pdf,當 Ghostscript 在安裝組譯時,pdfwrite 裝置必須要包含在 makefile 裡。詳見安裝 Ghostscript 的文件。
這份 howto 文件位於 -
http://sunsite.unc.edu/LDP/HOWTO/LILO-crash-rescue-HOWTO.html
您可也以在下列鏡像站找到這份文件 -
http://www.caldera.com/LDP/HOWTO/LILO-crash-rescue-HOWTO.html
http://www.WGS.com/LDP/HOWTO/LILO-crash-rescue-HOWTO.html
http://www.cc.gatech.edu/linux/LDP/HOWTO/LILO-crash-rescue-HOWTO.html
http://www.redhat.com/linux-info/ldp/HOWTO/LILO-crash-rescue-HOWTO.html
其他較靠近您的鏡像站 (網址智慧辨識, network-address-wise) 可以在此找到 http://sunsite.unc.edu/LDP/mirrors.html 選擇一個鏡像站,且進入目錄 /LDP/HOWTO/LILO-crash-rescue-HOWTO.html
要閱讀 dvi 格式的文件,必須使用 xdvi 程式。xdvi 程式在 Redhat Linux 是存在於 tetex-xdvi*.rpm (譯注:隨不同發行套件而有所差異;請洽詢您的發行套件廠商或組織)。您可以從控制面板(ControlPanel) | 應用程式(Applications) | 出版(Publishing) | Tex 的選單按鈕開啟之。要讀取 dvi 格式文件,執行以下指令 -
xdvi -geometry 80x90 howto.dvi
man xdvi
並且使用滑鼠來重新設定視窗大小。使用方向鍵、Page Up、Page Down 來導引,您也可使用 'f', 'd', 'u', 'c', 'l', 'r', 'p', 'n' 字母鍵來上移、下移、置中、至下一頁、回上一頁等。要關閉專家選單,請按 'x'。
您可以使用 'gv' (ghostview) 或 'ghostscript' 來閱讀 postscript 格式的文件。在 Redhat Linux 裡,ghostscript 存在於 ghostscript*.rpm 套件;gv 則存在於 gv*.rpm 套件裡。(譯注:隨不同發行套件而有所差異;請洽詢您的發行套件廠商或組織) 您可以從控制面版(ControlPanel) | 應用程式(Applications) | 美工繪圖(Graphics) 的選單按鈕開啟之。gv 遠比 ghostscript 更人性化。 ghostscript 和 gv 也有其他平台的版本,像是 OS/2、 Windows 95 和 NT,您甚至在那些平台也可以觀看此份文件。
您可從以下網址獲得 Windows 95、OS/2、和所有作業系統平台的 ghostscript http://www.cs.wisc.edu/~ghost
要閱讀 postscript 格式的文件,執行以下指令 -
gv howto.ps
ghostscript howto.ps
您可以使用 Netscape Navigator、Microsoft Internet explorer、 Redhat Baron Web browser 或任何其他的 10 種浏覽器來閱讀 HTML 格式的文件
您可以使用 LyX -- 一種 latex 在 X-Windows 的前端界面,來閱讀 latex 格式的文件。
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
4. 版權 Copyright
版權政策按照 LDP (Linux 文件計劃) 為 GNU/GPL。 LDP 是 GNU/GPL 計劃之一。額外的請求為您在所有的復制文件中保留作者的姓名、電子郵件信箱位址、和此份版權聲明。假如您對這份文件進行修改或增添,那麽請您告知此份文件的所有作者。在這份文件上所烙印的姓名為其各自所有人的所有權
原文 (如中譯有誤,以原文為主)
Copyright policy is GNU/GPL as per LDP (Linux Documentation project). LDP is a GNU/GPL project. Additional requests are that you retain the author's name, email address and this copyright notice on all the copies. If you make any changes or additions to this document then you please intimate all the authors of this document. Brand names mentioned in this document are property of their respective owners.
--------------------------------------------------------------------------------