不論你在運行什麼作業系統,在很多情況下,你會面對災難恢複操作。你的主引導區被覆蓋,你的硬碟不能啟動,或者一個重要的檔案被刪除,或者你的顯示卡啟動時閃爍一下就黑屏了。本文會就這些問題作一些技巧性的討論,協助你在遇到這些問題時,不致於手足無措。
首先需要的是一張應急啟動磁碟片,在安裝 Linux 時,一般會要求建立一張的,所以,你應該有這張磁碟的,如果還沒有建立的話,趕緊去建立一張吧,什嗎?不知道怎麼做?很簡單的,一般的 Linux 系統下使用 mkbootdisk 命令就可以了。後面的那些參數,只要看看協助,應該就明白了。
首先使用
# uname -a
系統提示:
Linux albertxu 2.2.16-2.0 #1 Sun May 20 16:53:41 EST 2001 i586 unknown
來看看系統的核心版本。我們就知道系統的核心版本是 2.2.16-2.0。
然後使用
# mkbootdisk --device /dev/fd0 2.2.16-2.0
系統提示:
Insert a disk in /dev/fd0. Any information on the disk will be lost.
Press to continue or ^C to abort:
插入磁碟,等待一會,直到磁碟建立。這樣,緊急啟動磁碟片就這樣建立了。
除了採用以上的辦法以外,另外一個辦法就是使用 tomsrtbt來建立啟動磁碟片。先介紹 這個程式的安裝步驟:
# gunzip tomsrtbt-1.7.218.tar.gz
# tar -xvf tomsrtbt-1.7.218.tar
# rm tomsrtbt-1.7.218.tar
# cd tomsrtbt-1.7.218/
# ./install.s
按照螢幕的說明,這個軟體採用高密度的壓縮方法把多種 Linux 工具壓縮到單張 1.7 Mb 的磁碟片上。
預設的磁碟包含下面的程式,驅動和核心:
2.0.37 3c589_cs BusLogic DEC_ELCP EEXPRESS EEXPRESS_PRO EL2 EL3 EXT2 FAT FAT32 FD IDE IDECD IDEFLOPPY IDEPCMCIA IDETAPE ISO9660 JOLIET LOOP MATH_EMULATION MINIX MSDOS NE2000 NFS PROC RAM SD SERIAL SLIP SMC SR ST TR ULTRA VFAT VORTEX WD80x3 ah152x_cs aha152x aha1542 aic7xxx ash awk badblocks bdflush bzip2 cardbus cardmgr cat ce ce.help chattr chgrp chmod chown chroot clear cmp cp cpio cut date dd ddate debugfs df dirname dmesg ds du dumpe2fs e2fsck eata echo egrep elvis emacs extend false fdflush fdformat fdisk fdomain filesize find findsuper fmt fsck.ext2 fsck.msdos fstab grep gzip halt head hexedit hostname i82365 ifconfig ifport ile init inittab insmod kill killall5 ksyms length less libc.so.5.4.13 lilo lilo.conf ln loadkeys login losetup ls lsattr mawk md5sum memtest mingetty miterm mkdir mkdosfs mke2fs mkfifo mkfs.minix mklost+found mknod mkswap mnsed more mount mt mv nc ncr53c8xx nmclan_cs ntfs pax pcmcia pcmcia_core pcnet_cs ping plip ppa printf ps pwd qlogic_cs qlogicfas reboot rescuept reset rm rmdir rmmod route rsh rshd script scsi_info seagate sed serial_cs setserial sh slattach sleep slip snarf sort split stty swapoff swapon sync tail tar tcic tee telnet test touch tune2fs umount undeb update vi vi.help wc
最讓人放心的是,tomsrtbt 是一個和發行版本無關的程式,甚至你可以把它用來恢複 Windows 9x 。
丟失了主引導記錄後, Linux 就不能啟動了。使用 Red Hat 的啟動磁碟片十分簡單,只要在啟動以後,用 root 登入,然後運行 lilo 就可以了。
使用 tomsrtbt 的方法是,啟動後用 root 登入,然後拿走磁碟片。
# mount -t ext2 /dev/hda4 /mnt
# chroot /mnt
# /sbin/lilo
Added linux *
Added dos
# exit
# cd /
# umount mnt
在 Red Hat 6.2 之前的版本提供了一個 rescue.img 檔案,能用來建立一個單獨的緊急磁碟,和啟動磁碟片一起使用。在 LILO: 提示符下,鍵入 linux rescue 然後按照提示操作,在 6.2 版本以後,Red Hat 把緊急恢複功能做到了安裝 CD 上,使用 CD 啟動後,鍵入 "rescue" 就可以了。
現在假設你的 /etc/fstab 存在一個輸入錯誤,你把啟動磁碟 /dev/hda4 寫成了 /dev/hda44 ,這樣你的系統就不能啟動了。
用 tomsrtbt 磁碟片啟動,按照以下的辦法修改 /etc/fstab 就可以了。
# mount -t ext2 /dev/hda4 /mnt
# vi /mnt/etc/fstab
# umount /mnt
另外一個常見的問題就是沒有順利關機,可以採用 tomsrtbt 來修複一個損壞的磁碟分割。
# e2fsk -f /dev/hda2
對於一個嚴重損壞的分區,這個命令需要重複好幾次。
如果一個分區不能完整修複,你可以把重要的檔案寫到磁碟上,當 tomsrtbt 啟動時,把這些檔案載入到記憶體,能把磁碟空間用於其他應用。
# fdformat /dev/fd0H1440
# mke2fs /dev/fd0
# mkdir /mnt/image
# mkdir /mnt/floppy
# mount -t ext2 /dev/hda4 /mnt/image
# mount -t ext2 /dev/fd0 /mnt/floppy
# cd /mnt/floppy
# cp /mnt/image/etc/*.conf .
# cp /mnt/image/etc/conf.modules .
# cp /mnt/image/var/named/* .
# cp /mnt/image/home/gwilburn/docs/myrecipes.txt .
# cd /mnt
# umount floppy
# umount image
以上步驟用到了 fdformat, mke2fs, mount, cd 和 cp 命令,這些命令都包含在 tomsrtbt 之中,在這個情形中,我們把 /etc 目錄的設定檔和 DNS 檔案作了備份。
下面的例子是使用 tomsrtbt 來恢複 Windows 的例子。
# mkdir /mnt/win
# mkdir /mnt/floppy
# mount -t vfat /dev/hda1 /mnt/win
# mount -t vfat /dev/fd0 /mnt/floppy
# vi /mnt/win/autoexec.bat
# cd /mnt/floppy
# cp /mnt/win/autoexec.bat .
# cp /mnt/win/config.sys .
# cp "/mnt/win/program files/netscape/bookmarks.htm" .
# cd /mnt
# umount floppy
# umount win
災難並不會頻繁發生,但是做好災難準備的最重要事情就是備份資料。我們討論的所有技巧只是對資料可以恢複的情況下所能採取的一些措施。作為一名專業的系統管理人員,如果沒有做好資料備份,那麼這個所謂的“專業”是名不副實的。