Unix操作系統(tǒng)感染病毒的解決方法
很多的朋友的Unix操作系統(tǒng)都可能不小心染上了引導(dǎo)型病毒,用最新的殺毒軟件殺完后還是不能啟動(dòng),無(wú)奈之下只好重新安裝整個(gè)系統(tǒng):包括操作系統(tǒng)、數(shù)據(jù)庫(kù)系統(tǒng)、應(yīng)用程序,再?gòu)膫浞荽艓Щ謴?fù)數(shù)據(jù),花了半天多的時(shí)間。筆者聽了不由扼腕嘆息,因?yàn)楣P者也曾經(jīng)遇到過類似的事情,但只花不到十分鐘就解決了。還是先從原理 上說起吧。
Unix操作系統(tǒng)分區(qū)結(jié)構(gòu),這里假設(shè)Unix操作系統(tǒng)裝在活動(dòng)的第一分區(qū)。Unix操作系統(tǒng)中把硬件全部當(dāng)做文件來管理,第一個(gè)物理硬盤是/dev/hd00,第二個(gè)物理硬盤是/dev/hd10,依此類推;第一個(gè)物理硬盤的邏輯分區(qū)從/dev/hd01到/dev/hd04,/dev/hd0a特指活動(dòng)分區(qū)。主引導(dǎo)程序、引導(dǎo)0和引導(dǎo)1在Unix操作系統(tǒng)中都有備份,它們分別為/etc/masterboot、/etc/hdboot0和/etc/hdboot1。
安裝Unix操作系統(tǒng)的機(jī)器啟動(dòng)過程大概是這樣的:上電→BIOS檢查硬件→從硬盤物理0扇區(qū)加載主引導(dǎo)程序→從活動(dòng)分區(qū),即Unix操作系統(tǒng)分區(qū)加載boot0→加載boot1→檢查divvy表,找到根文件系統(tǒng)→裝入/boot,顯示引導(dǎo)提示boot: →裝入并執(zhí)行內(nèi)核/Unix操作系統(tǒng)→啟動(dòng)完畢。
了解啟動(dòng)過程后,對(duì)本文開始提出的問題就很好處理了。首先準(zhǔn)備應(yīng)急引導(dǎo)盤,Unix操作系統(tǒng)維護(hù)人員應(yīng)該是常備的,即使沒有也可以立即到其它機(jī)器用mkdev fd命令做一張。用應(yīng)急引導(dǎo)盤啟動(dòng),進(jìn)入軟盤根文件系統(tǒng),連接硬盤根文件系統(tǒng)
# mount /dev/hd0root /mnt
如果提示出錯(cuò),檢查一下根文件系統(tǒng):
# fsck /dev/hd0root
再次連接,接著先恢復(fù)硬盤主引導(dǎo)程序:
# cp /mnt/etc/masterboot /dev/hd00
然后恢復(fù)引導(dǎo)0:
# cp /mnt/etc/hdboot0 /dev/hd0a
重啟:
- # umount /mnt
- # reboot
至此故障解決。順便說一下,如果其它原因造成Unix操作系統(tǒng)不能啟動(dòng),除了上面兩個(gè)步驟外,還可能要恢復(fù)引導(dǎo)1和boot文件。因?yàn)橐龑?dǎo)1在Unix操作系統(tǒng)分區(qū)的1KB偏移處,所以不能直接拷貝,必須用dd命令:
# dd if=/mnt/etc/hdboot1 of=/dev/hd0a seek=1 bs=1k
最后恢復(fù)boot,將根文件軟盤取出,插入應(yīng)急引導(dǎo)盤,執(zhí)行:
- # umount /mnt
- # mount -r /dev/fd0135ds18 /mnt
- # cp /mnt/boot /tmp
- # umount /mnt
- # mount /dev/hd0root /mnt
- # cp /tmp/boot /mnt
對(duì)于SCO Unix操作系統(tǒng),boot已經(jīng)不存放在根文件系統(tǒng)下,而是存放在/boot下,上面的步驟第5行應(yīng)改為:
# mount /dev/boot /mnt
恢復(fù)后執(zhí)行reboot重啟計(jì)算機(jī)即可。這樣,我們就解決了Unix操作系統(tǒng)中的病毒問題。
【編輯推薦】