SCO UNIX系統故障特徵、分析及解決(轉)

BSDLite發表於2007-08-11
SCO UNIX系統故障特徵、分析及解決(轉)[@more@]  在維護SCO 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的軟碟機(下同), 所以當出現o 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即可。
  
  故障之三
  機器加電後在系統引導提示符下敲入Enter鍵, 當第一屏被重新整理後在第二屏的最後一行 出現如下資訊:
  
  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盤開始引導, 在系統引導提示 符下按Enter鍵, 然後在提示插入Root盤時取出Boot盤並將Root盤插入, 這樣系統全部由應 急引導盤引導, 直至出現提示符#;
  
  2.用命令③把硬碟安裝到軟盤上;
  
  3.把/etc/init檔案從軟盤上複製到所安裝的硬碟上:cp /etc/init /mnt/etc/init
  
  4.用命令④把硬碟從軟盤上卸下來;
  
  5.用命令haltsys關閉系統後把Root盤取出, 此時系統已可正常引導;
  
  6.在系統正常引導後進入超級使用者, 將/etc/init檔案的屬主與組均改為系統原來所定 義的bin即可。
  
  故障之四
  機器加電後在系統引導提示符下敲入Enter鍵, 當第一屏被重新整理後到第二屏時即出現許 多錯誤資訊, 如:
  
  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盤插入驅動器並重新開啟電源,在系統引導提示符下敲入按Enter鍵, 當提示插 入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盤開始引導, 在系統引導提示 符下按Enter鍵,在提示插入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系統的超級使用者口令為Enter鍵(或自己確認不會忘記的口令) 時按上面介紹的 方法制作應急引導盤, 製作完後再將Root盤插入軟碟機, 用命令①把Root盤安裝到硬碟上, 然後用命令: cp/tcb/files/auth/r/root/mnt/root將包含有超級使用者口令變形碼的檔案/ tcb/files/auth/r/root複製到Root盤上,然後用命令②將Root盤卸下來並把它們儲存在安 全的地方;
  
  2.當超級使用者口令遺忘時, 將Boot盤插入驅動器並對機器重新加電,此時由Boot盤開始 引導, 在系統引導提示符下按Enter鍵, 在提示插入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註冊, 在要求輸入口令處直接按Enter鍵(或輸入在 製作應急引導盤時自己專門設定的超級使用者口令)即可進入超級使用者, 然後將檔案/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.當把硬碟安裝到軟盤上或把軟盤安裝到硬碟上後, 在把它們卸下來之前, 請不要取 出軟盤或關閉系統, 否則, 硬碟的根檔案系統或軟盤的檔案系統將受到損壞, 甚至可能導 致不能修復。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-946565/,如需轉載,請註明出處,否則將追究法律責任。

相關文章