SCO UNIX系統在我國的銀行、證券、稅務、鐵路、商業等企事業單位廣泛地使用。在 維護UNIX系統時應規范操作,以確保系統的正常運行,如果系統受損,比如誤刪某個系統文件 致使系統無法啟動,這時如果采取重新安裝系統的方法,勢必造成用戶數據的丟失,而且,重 新安裝UNIX操作系統和應用軟件及調試運行往往要花上好幾個小時的時間。能否有辦法呢 ?筆者通過反復探索和實踐,找到了既能以較快的速度修復損壞的系統又能保證數據完好無 損的方法,即事先制作應急引導軟盤,當系統損壞(比如系統無法正常引導、 超級用戶口令 遺忘等)時,用該軟盤進行修復(已經有同行介紹過通過制作應急引導軟盤修復SCO XENIX系 統的方法,但在UNIX與SCO XENIX下應急引導軟盤的制作及使用有很大的區別),現將該方法 介紹出來,供大家參考。
我們首先來制作UNIX應急引導軟盤, 方法如下:
在超級用戶提示符#下敲入:mkdev fd並回車,屏幕上將出現菜單選項如下:
1.48tpi, double sided, 9 sectors per track
2.96tpi, double sided, 15 sectors per track
3.135tpi, double sided, 9 sectors per track
4.135tpi, double sided, 18 sectors per track
因為我們是用1.44MB軟盤制作應急引導盤, 故選擇4,又因為我們的啟動驅動器為1.44 MB的軟驅(下同), 所以當出現:Do you want to use floppy drive0 or floppy disk 1?時 選擇0, 這時屏幕上出現菜單選項:
1.Filesystem
2.Bootable only (96ds15 and 135ds18 only)
3.Root filesystem only (96ds15 and 135ds18 only)
我們先選擇2制作應急引導盤的可啟動軟盤(以下簡稱Boot盤),當把軟盤插入驅動器後 將提示是否需要格式化軟盤,這裡可按需要進行選擇,然後系統將自動在軟盤上建立文件系 統,並將一些文件拷貝到軟盤上,文件拷貝完後將自動對軟盤上的文件系統進行檢查,無誤後 又將出現上面的菜單選項,我們再選擇3制作應急引導盤的根文件系統軟盤(以下簡稱Root盤 ),同樣我們可按需要選擇是否首先對軟盤進行格式化,然後系統亦首先在軟盤上建立文件系 統,並將一些文件及特別文件拷貝到軟盤上,文件拷貝完後也將自動對軟盤上的文件系統進 行檢查,無誤後仍將又回到上面的菜單選項,至此,UNIX應急引導盤的Boot盤及Root盤制作完 成,我們選擇q退出到超級用戶提示符#下。
由於應急引導盤的Boot盤及Root盤均是通過建立文件系統形成的, 所以我們要查看或 修改上面的內容必須先用命令mount將其安裝到硬盤的某個空目錄(如/mnt)上,待所做的工 作完成後再用命令umount卸下來即可。
在這裡,我們先將後面要用到的命令及意義說明如下:
①安裝已建立文件系統的軟盤到硬盤的空目錄/mnt下
mount /dev/fd0135ds18 /mnt
②卸下已安裝到硬盤的軟盤
cd /
umount /dev/fd0135ds18
③安裝硬盤到已建立文件系統的軟盤的空目錄/mnt下
mount /dev/hd0root /mnt
④卸下已安裝到軟盤的硬盤
cd /
umount /dev/hd0root
⑤檢查與收復可能受到損壞的文件系統
對硬盤的根文件系統, 若是用應急引導盤啟動則為:
fsck /dev/hd0root
對硬盤的根文件系統, 若是由硬盤自身啟動後則為:
fsck /dev/root
對軟盤的文件系統為:
fsck /dev/fd0135ds18
要注意的是, 以上命令中mount及umount 只有在超級用戶提示符下才能執行。下面分 析幾種系統不能正常引導故障及解決辦法。
故障之一
當打開計算機電源後,主控台屏幕上出現如下信息:
boot not found
cannot open
Stage 1 boot failure: error loading hd(40)/boot然後死機, 這表明系統根目錄下 的boot文件丟失。boot是用於裝載並執行UNIX程序的交互式程序, 主要用於裝載和執行UN IX操作系統的核心, 在引導過程中boot將讀/etc/default/boot, 顯示引導過程信息, 裝入 並執行/unix, 所以當boot文件受損時將導致系統引導失敗。我們可通過如下步驟用應急引 導盤恢復系統:
1.將Boot盤插入驅動器並重新對機器加電, 此時由Boot盤開始引導;
2.在系統引導提示下敲入hd(40)/unix, 這個命令用於從硬盤把UNIX核心裝入, 然後輸 入root口令進入單用戶模式, 此時出現超級用戶提示符#;
3.用命令①把Boot盤安裝到硬盤上, 然後用命令: cp /mnt/boot/恢復硬盤根目錄下的 boot文件;
4.用命令②把Boot盤從硬盤上卸下來;
5.敲入haltsys關閉系統, 然後再取出Boot盤, 則故障排除, 系統可正常引導;
6.在系統正常引導後進入超級用戶, 將/boot文件的屬主和組均改為系統原來所定義的 bin即可。
故障之二
機器加電後, 主控台屏幕出現如下信息:
unix not found
然後死機, 這表明UNIX核心丟失, 因為/unix包含核心, unix文件受損將導致系統無 法裝入並執行內核, 從而出現死機。我們可用如下方法來恢復:
1.將Boot盤插入驅動器並重新對機器加電, 此時由Boot盤開始引導;
2.在系統引導提示下敲入:fd(64) unix root=hd(40) swap=hd(41) pipe=hd(40)或僅 敲入fd(64)/unix亦可, 這個命令用於從Boot盤把UNIX核心裝入,然後輸入root口令進入單 用戶模式, 此時出現超級用戶提示符#;
3.用命令①把Boot盤安裝到硬盤上, 然後用命令: cp /mnt/unix/恢復硬盤根目錄下的 unix文件;
4.用命令②把Boot盤從硬盤上卸下來;
5.敲入haltsys關閉系統, 取出Boot盤, 則故障排除,系統可以正常引導;
6.在系統正常引導後進入超級用戶, 將/unix文件的屬主和組改為系統原來所定義的bin和mem即可。
故障之三
機器加電後在系統引導提示符下敲入回車鍵, 當第一屏被刷新後在第二屏的最後一行 出現如下信息:
Kernel: i/o bufs=600k 然後系統掛起, 這表明系統上/etc/init文件丟失。 因為i nit程序在核心初始化的最後階段開始執行, 其進程號(pid)為1。 該進程按一定規則啟動 /etc/inittab文件中所列的進程, 引導系統進入所規定的運行級別。 它首先讀/etc/init tab中的initdefault項,當所有的進程都創建成功後, init進入循環等待, 它主要用於打開 主控台/etc/console, 檢查文件系統的一致性, 執行/etc/rc 進行必要的設置。 init在單 用戶模式下啟動shell,而在多用戶模式下運行/etc/brc, /etc/bchk等外殼程序並啟動/et c/rc, 它調用/etc/getty為每個終端生成一個getty進程, 以便在讀入用戶注冊名後完成用 戶的注冊過程。如果/etc/init文件受損,新的進程就無法創建, 從而導致系統掛起, 我們 可用如下方法恢復系統:
1.將Boot盤插入驅動器並重新對機器加電, 此時由Boot盤開始引導, 在系統引導提示 符下按回車鍵, 然後在提示插入Root盤時取出Boot盤並將Root盤插入, 這樣系統全部由應 急引導盤引導, 直至出現提示符#;
2.用命令③把硬盤安裝到軟盤上;
3.把/etc/init文件從軟盤上拷貝到所安裝的硬盤上:cp /etc/init /mnt/etc/init
4.用命令④把硬盤從軟盤上卸下來;
5.用命令haltsys關閉系統後把Root盤取出, 此時系統已可正常引導;
6.在系統正常引導後進入超級用戶, 將/etc/init文件的屬主與組均改為系統原來所定 義的bin即可。
故障之四
機器加電後在系統引導提示符下敲入回車鍵, 當第一屏被刷新後到第二屏時即出現許 多錯誤信息, 如:
INIT: command
exec /etc/brc 1>/dev/console 2>&1
failed to execute, errno=9 (exec of shell failed)
...
等等, 並不斷翻屏顯示出錯信息, 這表明系統/bin/sh文件受損或丟失。因為sh是SH ELL標准、作業控制和限制性命令解釋程序。 所以, 該文件受損或丟失將導致系統啟動失 敗。我們可用如下步驟解決:
1.將Boot盤插入驅動器並重新開啟電源,在系統引導提示符下敲入按回車鍵, 當提示插 入Root盤時把Boot取出並將Root盤插入, 這樣系統全部由應急引導盤引導, 直到出現提示 符#;
2.用命令③把硬盤安裝到軟盤上;
3.把/bin/sh文件從軟盤上拷貝到所安裝的硬盤上: cp /bin/sh /mnt/bin/sh
4.用命令④把硬盤從軟盤上卸下來;
5.用命令haltsys關閉系統後將Root盤取出, 此時系統已可以正常引導;
6.在系統正常引導後進入超級用戶下, 將文件/bin/sh的屬主與組均改為系統原來所定 義的bin即恢復了系統。
故障之五
系統可以引導, 但在引導時會出現如下錯誤信息:
su: Unknow id: root
...
INIT: SINGLE USER MODE
**** PASSWORD FILE MISSING!****
Entering System Maintenance Mode
然後系統自動進入系統維護模式即單用戶模式並出現提示符#, 這樣系統就無法進入 多用戶模式工作。當在系統自動進入單用戶模式後, 我們若用命令ls -l進行文件的長列表 顯示時會首先出現一行: /etc/passwd cannot be opened for reading, 然後再給出文件 的長列表, 但長列表中文件屬主原為bin的已全部自動改為0,1,2,3...等等。這表明文件/ etc/passwd受損或丟失, 因為系統加載時要進行工作方式(單用戶或多用戶方式)的選擇, 此時系統會自動在/etc子目錄下尋找passwd文件, 若找不到則自動進入到單用戶模式。解 決這一問題的方法如下:
1.在系統自動進入單用戶模式後, 用命令①把應急引導盤的Root盤安裝到硬盤上;
2.把/etc/passwd文件從軟盤上拷貝到所安裝的硬盤上:cp /mnt/etc/passwd /etc/ passwd
3.用命令②把軟盤從硬盤上卸下來;
4.將Root盤取出,用命令reboot重新啟動系統,此時系統已可以正常引導;
5.在系統正常引導後進入超級用戶下,將文件/etc/passwd的屬主與組分別改為系統原 來所定義的bin和auth即可(這裡很有意思的是, 我們倘若再用命令ls-l進行文件的長列表 顯示時, 上述的現象已不見了,長列表中文件屬主原為bin的已全部自動改回為bin)。
故障之六
如果計算機中沒有387浮點協處理器, 且在引導時出現警告信息:
WARNING: cannot load floating point emulator
然後引導失敗, 這表明系統文件/etc/emulator丟失。 因為文件/etc/emulator用於仿 真計算機中的387浮點協處理器, 我們可用如下方法恢復:
1.將Boot盤插入驅動器並對機器重新加電, 此時由Boot盤開始引導, 在系統引導提示 符下按回車鍵,在提示插入Root盤時取出Boot盤並將Root盤插入,這樣系統全部由應急引導 盤引導, 直到出現提示符#;
2.用命令③把硬盤安裝到軟盤上;
3.把/etc/emulator文件從軟盤上拷貝到所安裝的硬盤上: cp /etc/emulator /mnt/ etc/emulator
4.用命令④把硬盤從軟盤上卸下來;
5.用命令haltsys關閉系統, 然後把Root盤取出,此時系統已可正常引導;
6.在系統正常引導後進入超級用戶, 將/etc/emula-tor文件的屬主與組均改為系統原 來所定義的bin即可。
故障之七
系統可以引導, 亦能正常處理日常事務, 但每當關機時總會在主控台屏幕上出現錯誤 信息:
/etc/initscript: /etc/uadmin: not found
然後系統死機,從而導致系統不能正常關機,這樣每次系統在啟動時都需要清理文件系 統, 不僅浪廢時間還可能嚴重破壞文件系統導致系統癱瘓。
造成上面的故障是由於系統文件/etc/uadmin丟失或損壞所致, 可用如下方法排除:
1.在系統引導並清理文件系統完成後, 以超級用戶root注冊(進入單用戶模式亦可);
2.在超級用戶提示符#下, 用命令①把Root盤安裝到硬盤上;
3.把/etc/uadmin文件從軟盤上拷貝到所安裝的硬盤上:cp/mnt/etc/uadmin /etc/uad min
3.用命令②把軟盤從硬盤上卸下來, 然後把Root盤取出;
4.將文件/etc/uadmin的屬主與組分別改為系統原來所定義的bin, 至此,故障排除, 系 統可正常關機。
故障之八
當系統管理員遺忘了超級用戶口令時也是一件非常令人棘手的事。我們知道, UNIX超 級用戶擁有對系統至高無上的控制權, 很多命令, 特別是對系統的管理與維護只有超級用 戶才能執行。 我們可用如下方法解決這一問題:
1.在UNIX系統的超級用戶口令為回車鍵(或自己確認不會忘記的口令) 時按上面介紹的 方法制作應急引導盤, 制作完後再將Root盤插入軟驅, 用命令①把Root盤安裝到硬盤上, 然後用命令: cp/tcb/files/auth/r/root/mnt/root將包含有超級用戶口令變形碼的文件/ tcb/files/auth/r/root拷貝到Root盤上,然後用命令②將Root盤卸下來並把它們保存在安 全的地方;
2.當超級用戶口令遺忘時, 將Boot盤插入驅動器並對機器重新加電,此時由Boot盤開始 引導, 在系統引導提示符下按回車鍵, 在提示插入Root盤時取出Boot盤並將Root盤插入, 這樣系統全部由應急引導盤引導, 直到出現提示符#;
3.用命令③把硬盤安裝到Root盤上;
4.把root文件從Root盤上拷貝到硬盤的/tcb/files/auth/r目錄下:cp/root/mnt/tcb/ files/auth/r/root
5.把/etc/passwd文件從Root盤上拷貝到硬盤的/etc/passwd目錄下: cp/etc/passwd/ mnt/etc/passwd
6.用命令④把硬盤從軟盤上卸下來;
7.用命令haltsys關閉系統, 然後把Root盤取出;
8.在系統正常引導後以超級用戶root注冊, 在要求輸入口令處直接按回車鍵(或輸入在 制作應急引導盤時自己專門設置的超級用戶口令)即可進入超級用戶, 然後將文件/etc/pa sswd的屬主與組分別改為系統原來所定義的bin和auth, 將文件/tcb/files/auth/r/root的 屬主與組分別改為系統原來所定義的root和auth, 最後用passwd重新設置超級用戶口令即 可。
上面介紹的方法,經在SCO UNIX Release 3.2 V4.2、Compaq系列服務器及微機、 AST系列服務器及微機、DECpc和金山系列微機上調試通過。
注意的問題
1.上述的操作中, 如果出現文件系統安裝不上(硬盤不能安裝到軟盤上或軟盤不能安 裝到硬盤上), 表明硬盤的根文件系統或軟盤的文件系統受到了損壞, 我們可以依情況選用 ⑤提供的三條命令之一進行修復後再行安裝;
2.當把硬盤安裝到軟盤上或把軟盤安裝到硬盤上後, 在把它們卸下來之前, 請不要取 出軟盤或關閉系統, 否則, 硬盤的根文件系統或軟盤的文件系統將受到損壞, 甚至可能導 致不能修復。