class="22259">
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;;/hda4ext2;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);