玩 FreeBSD 的各位,有沒有常常『重灌』系統呢?
如果只是因為某些設定上的疏忽,比如說設錯 root 或是某個 user 的 shell
路徑,或是安裝某些程式結果開機以後不能使用,或是 make new kernel 以後
變得無法開機,這些問題難道就都只有『重灌』一途可以解決嗎?
當然不!請記住你現在不是在用 M$ "飛窗"系統,重灌只是屬於鴕鳥的那種人
才會使用的解決方法。以下提供一點小 hint 告訴你怎麽在系統出問題的時候,
做出緊急應變措施,大部分的情形下我假設你已經進入(或是該說,只能進入)
單機模式(single user mode)。
==========================================================================
Q0: Ok, 什麽是單機模式?(Single user mode) 我該怎麽進入單機模式?
Hint:
1.請記住 UNIX 系統(當然包含 FreeBSD)先天的設計上是多使用工作環境,
別人可以藉由 telnet 或是 rsh 或其他的遠端簽入程式連線過來使用你的
機器,單機模式簡單的說,系統處於最原始的狀態,所有有關網路方面的
service 都還沒有跑起來,file system 也還沒有 mount, 只有最原始的
系統組態被讀入,然後由 kernel 開機進入 command line 這樣而已。這
種類似渾沌初開的原始狀態,就是單機模式。
2.進入單機模式,在 FreeBSD 的方法就是當你開機看到 boot: 提示號
時,馬上打 boot -s 就可以了。如果你有裝 boot loader, 在 loader
裡面打 boot -s 也是一樣的效果。
Q1: root(or other user)shell 設錯,怎麽辦?
(類似這樣的問題還有,密碼忘記了等等)
Hint:
1.開機進入單機模式。
2.用 vipw 改密碼或 shell 路徑吧!
3.或系統提示號 # 出現以後馬上用 passwd 命令更改密碼,這次請把密碼抄
在女朋友的背上,刻在自己的額頭上,或是用任何不會再忘記或找不到的
方法強迫自己記憶。
Q2: 開機到一半結果好像硬碟有問題,沒有辦法 mount 某個 partition 結果
就整個停住了,怎麽辦?
(類似這樣的問題還有,把硬碟從 master 換到 slave, 或是相反的動作,或是
/etc/fstab 檔裡面寫錯一個 slice name 等等)
Hint:
1.開機進入單機模式。
2.在系統提示號 # 出現後,打 /sbin/mount / 先把 root partition mount
起來。
3.然後改 /etc/fstab.
4.如果不確定有這個 device name, 或許你該去 /dev 下利用 MAKEDEV 這個
指令做出 dev 再說。比如說你把原本放在 primary master 的硬碟搬到
slave 去,device name 應該從 wd0->wd1, 但是你看 /dev 下沒有任何叫
rwd1 的 device name, 你就應該這樣做:
# cd /dev
# ./MAKEDEV wd1
Q3: 單機模式下,鍵盤按鍵變得好奇怪,還有方向鍵(上下)不能拿來 repeat 以
前的命令,怎麽辦?
Hint:
1.在系統提示號 # 後面打 set -E
2.可以更換 shell, 因為單機模式是使用 /bin/sh 這個 shell, 你還是可以
使用自己習慣的 shell. 直接找到 shell 所在的目錄,一般來說常用的就
是 /bin/csh, /usr/local/bin/tcsh; /usr/local/bin/bash 等這幾種。
Q4: 單機模式下,我要使用 /stand/sysinstall 或是 ee 等程式的時候,系統告
告訴我 Unknown terminal type, 怎麽辦?
(同樣的問題還有,vi 不能使用,說 terminal 不對等等...)
Hint:
2.done.
Q5. 我的硬碟裡面好像有壞軌,結果不能正常開機進入單機模式了,怎麽辦?
Hint:
1.進入單機模式以後,
2.用 fsck -y 命令先檢查看看,如果有壞軌就用 bad144 或其他 repair
程式去掃描修復。
Q6. 我的 kernel 不能開機了,怎麽辦?
Hint:
1.在 boot: 提示號出現的時候,直接打 kernel.GENERIC 或是 kernel.old
用舊的 kernel 來開機。再怎麽樣,kernel.GENERIC 都一定要可以用。
2.有裝 boot loader 的人,可以在 loader 裡面先下 load kernel.GENERIC
的命令讀取這個 kernel, 然後用 boot 命令啟動系統。