doc/zh_TW.Big5/FAQ/troubleshoot.sgml
1999-09-06 06:53:43 +00:00

446 lines
18 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- $FreeBSD$ -->
<!-- The FreeBSD Documentation Project -->
<!-- Translate into Chinese by corona@tale.net -->
<!-- English Version: 1.10 -->
<sect>
<heading>常見問題解決<label id="troubleshoot"></heading>
<sect1>
<heading>我的硬碟有壞軌!<label id="awre"></heading>
<p>若是 SCSI 硬碟的話,應該有能力自動作 re-mapping 的動作。
然而,因為一些神秘的因素,在出廠時,很多硬碟的這項功能是關閉的.
<p>要將其重新開啟,您需要編輯裝置的第一個 page 模式
first device page mode在 FreeBSD 上可以用下面的指令辦到
(以 root 身分執行)
<verb>
scsi -f /dev/rsd0c -m 1 -e -P 3
</verb>
<p>然後將 AWRE 和 ARRE 的數值從 0 變成 1:-
<verb>
AWRE (Auto Write Reallocation Enbld): 1
ARRE (Auto Read Reallocation Enbld): 1
</verb>
<p>上面這段是由
<url url="mailto:tedm@toybox.placo.com" name="Ted Mittelstaedt">所提供:
<p>若為 IDE 硬碟,任何的壞軌通常都是麻煩的預兆。目前所有較新的 IDE 硬
碟,內部都有自動 remapping 壞軌的能力。目前所有 IDE 硬碟製造商,都提供
了更久的保證,而且會幫您更換出現壞軌的硬碟。
<p>如果您仍想要修復產生壞軌的 IDE 硬碟,您仍可以試著去下載 IDE 硬碟製造
商所提供的檢測程式,並用它來檢查您的硬碟。有時這些軟體可以強迫硬碟電路
重新檢查硬碟的壞軌,並將它們標示出來.
<p>對 ESDIRLL 及 MFM 的硬碟來說,通常壞軌是正常現象,也不是什麼麻煩的
前兆。在 PC 上,磁碟控制卡和 BIOS 負責標示壞軌的任務。這對一些使用 BIOS
來存取磁碟的作業環境(如 DOS)是沒有問題的。然而FreeBSD 的磁碟驅動程式
並不經過 BIOS 來存取磁碟,所以,有個 bad144 的機制用來取代這項功能。
bad144 只能用在 wd 這個磁碟驅動程式上,它無法用在 SCSI 硬碟上。bad144
的工作方法是將所有找到的壞軌資料存到一個特別的檔案裏。
<p>使用 bad144 的警告 - 存著壞軌資料的特別檔案是放在硬碟的最後一軌
上。因為這個檔案儲存的壞軌資料中,有可能有些資料是指向硬碟最前端所發生
的壞軌情形,就是可能儲存 /kernel 這個檔的地方,所以它一定要能被開機程式
所讀取,而開機程式是透過 BIOS 來讀取 kernel 檔。這表示了使用 bad144 的
硬碟絕不能擁有超過 1024 個 cylinder16 個 head 及 63 個 sector。
這造成了使用 bad144 的硬碟的大小不能大於 500 MB。
<p>要使用 bad144 很簡單,只要在開始安裝時,在 FreeBSD fdisk 畫面把
"Bad Block" 掃瞄設為 ON 即可。在 FreeBSD 2.2.7 以後都可以使用此方法。
但這個硬碟的 cylinder 一定要在 1024 以下。使用前,我們建議這個硬碟要
至少先使用四個小時,以便熱膨脹與磁軌偏移達一般狀態。
<p>如果這個硬碟擁有超過 1024 個 cylinder (像大容量的 ESDI 硬碟)
ESDI 控制卡利用一個特別的轉換模式使它能在 DOS 下工作。
而如果您在 fdisk 裏的 "set geometry" 中輸入 "轉換過" 的 geometrywd 這
個驅動程式能了解這些轉換模式。您也絕對不能使用 dangerously dedicated 模
式來建立 FreeBSD 的分割區,因為它會忽略 geometry 這個參數。
此外,就算 fdisk 使用您所輸入的 geometry 參數,它依然會去讀取這硬碟的
真正資料,而會嘗試去建立一個過大的 FreeBSD 分割區。如果磁碟的 geometry
已經被 "轉換" 過了,那麼這個分割區 "必須" 以手動輸入 block 數目的方法來
建立。
<p>一個快速的小技巧是利用 ESDI 控制卡來設定大容量的 ESDI 硬碟,用 DOS 開
機片開機,再將它 format 為 DOS 的分割區。然後重開機進入 FreeBSD 安裝程序
,在 fdisk 畫面把DOS 分割區的 blocksize 和 block number 抄下來。然後重
新設定 geometry 使其跟 DOS 使用的一樣。刪除 DOS 分割區,然後使用您剛剛抄
下的 blocksize 來建立一個 cooperative FreeBSD 分割區。然後設定這個分割區
為可開機再打開壞軌掃瞄。在真正的安裝過程中bad144 會在任何檔案系統被
建立前先被執行。(您可以按 Alt-F2 來監看這一切)如果在建立壞軌資料檔時發生
了問題,您會需要設定一個較大的磁碟 geometry - 這表示您需要重開機,然後全
部再重新開始 (包括重新分割以及在 DOS 下重新 format)。
<p>如果 remapping 的功能已經啟動了,而您依然一直看到壞軌產生,那麼考慮
換一台硬碟吧。壞軌的情形只會隨時間增加而更為嚴重。
<sect1>
<heading>FreeBSD 抓不到我的 Bustek 742a EISA SCSI 卡!</heading>
<p>下面的資訊是給 742a 這張卡用的,但是其他 Buslogic 的卡或許也可以
適用。 (Bustek 就是 Buslogic)
<p>742a 這張卡有兩個主要的「版本」。一個是版本 A-G另一個是版本 H
及其以後。版本資訊可以從介面卡邊緣的流水號最後面得知。742a 這張
卡有兩個唯讀晶片在它上面,一個是 BIOS 晶片,而另一個是韌體晶片。
FreeBSD 並不在乎您卡上的 BIOS 版本,但是韌體的版本就很重要了。如果
你打電話給他們技術支援專線的話,他們會寄給您最新的版本供您升級。
BIOS 和韌體晶片是一起送來的。 您需要將卡上 BIOS 和韌體版本,依您卡
版本的不同,升級到最新的一版。
<p>版本 A-G 的卡最高只能將 BIOS/韌體 升級到 2.41/2.21 版,而版本 H
後,目前 BIOS/韌體的最新版本是 4.70/3.37。這兩個韌體版本間的差異在
3.37 這版支援 ``round robin''
<p>Buslogic 的卡上面也都有序號。如果您卡的版本較舊,您可以試著打電
話給 Buslogic 的RMA 部門,然後給他們您的序號,看能不能跟他們交換一
張較新版本的卡。如果那張卡夠舊的話,他們會換給你。
<p>FreeBSD 2.1 只支援韌體 2.21 版以後的版本。如果您韌體版本比這個還
舊的話,那麼您的卡就不能被辨識出是 Buslogic 的卡。它有可能會被辨識成
Adaptec 1540。較早的 Buslogic 卡上的韌體有一個 AHA1540``模擬''模式,
這對一張 EISA 卡來說並不是件好事。
<p>如果您有一張較舊版本的卡,而您取得 2.21 版韌體的話,您需要檢查一下
jumper W1 的位置,將它調至 B-C原始設定是 A-B。
<p>742a EISA 卡沒有在 <ref id="bigram" name="在擁有 &gt;16 MB 記憶體的機器上">
這段中所提過的 ``&gt;16MB'' 問題。這個問題只會發生在 Vesa-Local 匯流排的
Buslogic SCSI 卡上。
<sect1>
<heading>
FreeBSD 抓不到我的 HP Netserver 的 SCSI 控制卡!
</heading>
<p>基本上這個是一個已知的問題。在 HP Netserver 機器上的 on-board
EISA 介面 SCSI 控制卡占據了定址為第 11 的 EISA 槽,因此所有的 ``真實''
EISA 槽都在它之前。可是,在 EISA 定址空間 >= 10 時,會與指定給 PCI
用的定址空間相衝突,且 FreeBSD 的 auto-configuration 無法正確的處理
這個情形。
<p>因此,現在你能做的最好事情就是在 kernel 裏設定 <tt/EISA_SLOTS/
這個選項為 12 ,然後當作沒有這個問題 :)。
請依照 <url url="../../handbook/kernelconfig.html"
name="Handbook 中有關 kernel 的設定"> 裏所說的方法來
設定與編譯您的 kernel
<p>當然,在安裝到這種機器上時,這是一個雞生蛋蛋生雞的問題。
為了解決這個問題,在 <em>UserConfig</em> 中有一個特別的方法,
安裝時不要進入 ``visual'' 介面,相反的,在命令列模式中,鍵入
<verb>
eisa 12
quit
</verb>
<p>然後就如以往一樣安裝您的系統。雖然我們建議您編譯與安裝一個
屬於自己的 kernel
<htmlurl url="http://www.FreeBSD.org/cgi/man.cgi?dset" name="dset">
現在也已經了解這個參數,且會儲存它。
<p>希望,在未來的版本中能對這個問題有一個好的解決方法。
<p><tt/注意:/ 您無法在 HP Netserver 上使用 <bf/dangerously dedicated/
磁碟模式。您可以參考 <ref id="dedicate" name="這份註解">以獲得更多
資訊。
<sect1>
<heading>CMD640 IDE 控制晶片出了什麼問題?</heading>
<p>它的問題在於無法同時處理兩個 channel 的指令。
<p>現在已經有個解決方法了,且會自動在您使用這塊晶片時啟動。
如果需要更詳盡的解釋,請查閱有關磁碟驅動程式的說明(man 4 wd)
<p>如果您目前是使用 CMD640 IDE 控制晶片,加上 FreeBSD 2.2.1 或
2.2.2,而且您又想要使用到第二個 channel 時,請在您的 kernel 設
定中加入 <tt/options "CMD640"/ 然後重新編譯一個新的 kernel。
這個 option 在 2.2.5 版以後是內定啟動的。
<sect1>
<heading>我一直看到類似 ``<tt/ed1: timeout/'' 的訊息</heading>
<p>這個通常是由於中斷衝突(interrupt conflict)所造成的 (例如,兩塊卡
使用到了相同的 IRQ)。 FreeBSD 在 2.0.5 版以前都容許這個情形,
就算有 IRQ 衝突情形,網路卡也應該仍可正常運作。
然而,在 2.0.5 版及其以後,已不再容許有 IRQ 衝突的情形了。
請於開機時使用 -c 這個選項,然後更改 ed0/de0/..。等的設定,使其
和您網路卡本身的設定一致。
<p>如果您是使用您網路卡上的 BNC 接頭,您或許也會因不良的終端電阻設定,
而發生裝置 (device) timeout 的情形。要檢查是否有這種情形,您可以在
網路卡上直接接上終端電阻 (不要接網路線),然後看看這個錯誤訊息是不是
就消失了。
<p>有些 NE2000 的相容卡,如果它的 UTP 埠沒有接網路線,或是該網路線並
沒被使用的話,也會出現這個錯誤訊息。
<sect1>
<heading>在我想要掛上 CDROM 時,出現``Incorrect super block''的訊息</heading>
<p>您必須告訴
<htmlurl url="http://www.FreeBSD.org/cgi/man.cgi?mount" name="mount">
您想掛上的 device 的檔案格式。在原始設定裏,
<htmlurl url="http://www.FreeBSD.org/cgi/man.cgi?mount" name="mount">
會假設您的檔案格式為 ``<tt/ufs/''。如果您想要掛上 CD-ROM 裏的檔案,
您需要在 <htmlurl url="http://www.FreeBSD.org/cgi/man.cgi?mount"
name="mount">。
時指定 ``<tt/-t cd9660/'' 這個選項。當然,這是假設光碟片是使用
ISO 9660 的檔案系統 (絕大多數光碟片皆是用這套檔案系統)
且在 1.1 版以後FreeBSD 已經能看得懂 Rock Ridge (長檔名) 這個延伸格式。
<p>舉例來說,如果您想將 ``<tt>/dev/cd0c</tt>'' 這個 CDROM 裝置 (device)
掛在 <tt>/mnt</tt> 下,您需要執行:
<verb>
mount -t cd9660 /dev/cd0c /mnt
</verb>
<p>要注意的是,您的裝置名稱可能會不一樣 (在此範例中是
``<tt>/dev/cd0c</tt>'',它是根據您的 CDROM 介面而定的。
另外要注意的,``<tt/-t cd9660/'' 這個選項只是呼叫
``<tt/mount&lowbar;cd9660/'' 這個指令,所以上面這個範例
也可以縮短為:
<verb>
mount_cd9660 /dev/cd0c /mnt
</verb>
<sect1>
<heading>當我想掛上 CDROM 時,出現了 ``Device not configured'' 的錯誤訊息
</heading>
<p>這通常是表示您的 CD-ROM 裏面沒有光碟片,或者是這台機器無法被
匯流排 (bus) 抓到。放片光碟片在光碟機裏,如果它是 IDE (ATAPI) 的
光碟機的話,檢查一下它的 master/slave 狀態。光碟機通常需要幾秒鐘
的時間才能備妥 (ready),所以請耐心等候。
<p>有時這是發生在 SCSI CD-ROM 上,因為它在匯流排重置 (bus reset)
時來不及回應,所以消失了。如果您擁有的是 SCSI CD-ROM請嘗試在
kernel 設定檔中加入以下的設定,然後重新編譯。
<verb>
options "SCSI_DELAY=15"
</verb>
<sect1>
<heading>我的印表速度破天荒的慢。我該怎麼做?</heading>
<p>如果是平行埠,且唯一的問題就是速度很慢的話,試著設定您的
印表機埠為 ``polled'' 模式:
<verb>
lptcontrol -p
</verb>
<p>有些新的 HP 印表機似乎無法在 interrupt 模式中正常工作,
很明顯的是因為一些時脈問題 (但還不是很瞭解為什麼會如此)
<sect1>
<heading>我的程式有時會因 ``Signal 11'' 這個錯誤而停止</heading>
<p>這個通常是因為有問題的硬體 (記憶體,主機板等等) 所造成的.
試試在您的 PC 上跑個記憶體測試程式看看。注意,就算您試過的每一種記
憶體測試程式都回報說您的記憶體沒有問題,但是,有一些低品質的記憶體,
雖然能通過記憶體測試,不過在真正工作時卻會出問題 (例如從
Adaptec 1542 等等 SCSI 控制卡做 bus mastering DMA、在編輯 kernel 時、
或是系統的負載很高時)
<p>SIG11 FAQ (位址在下面) 指出記憶體的速度不夠快通常是這個問題的原因。
試著在您的 BIOS 設定中增加記憶體 wait 狀態的時間,或是更換更快的記憶
體。
<p>以我而言,我曾遇過由不良的快取記憶體或是不良的 on-board 快取卡
所造成的這個問題。試著在 BIOS 設定中取消 on-board (第二階) 快取,
看看這樣能不能解決這個問題
<p>這兒有一份很好的 FAQ:
<url url="http://www.bitwizard.nl/sig11/" name="SIG11 問題的 FAQ">
<sect1>
<heading>當我開機時,螢幕變黑,且不停閃動!</heading>
<p>這個問題,已知是由 ATI Mach 64 顯示卡所引起的。因為這塊卡使用到
<tt/2e8/ 這個位址,而這與第四個序列埠(serial port)所使用的位址相同。而
<htmlurl url="http://www.FreeBSD.org/cgi/man.cgi?sio" name="sio.c">
這個驅動程式,不知道是 bug 或是功能(feather),就算您沒有第四個序列埠,
或是已經將 sio3 (第四個序列埠)取消了,它依然會去嘗試驅動它。
<p>直到這個問題被解決以前,您可以使用這個方法:
<enum>
<item>在開機提示(看到<tt/boot:/ 時)打入 <tt/-c/。 (這會讓 kernel
進入設定模式)
<item>取消 <tt/sio0/<tt/sio1/<tt/sio2/ and <tt/sio3/ (全部)
這可以讓 sio 驅動程式不動作 -> 於是問題解決。
<item>輸入 exit 以繼續啟動程序
</enum>
<p>如果您想要使用您的序列埠,您需要修改
<tt>/usr/src/sys/i386/isa/sio.c</tt>,在該檔中找出 <tt/0x2e8/ 這個字串
移除這個字串及它前面的逗號(保留後面的),然後重新編譯一個新的 kernel
<p>就算使用了上面這些方法X Window 仍然有可能無法順利執行。有些新的
ATI Mach 64 顯示卡(特別是 ATI Mach Xpression無法在目前版本的
<tt/XFree86/ 上正常工作;啟動 X Window 時螢幕變黑,或是會有奇怪的問題
發生。您可以到 <url url="http://www.xfree86.org" name="XFree86 的網站">
找到 new beta release 這個連結(link),來取得 X-server 的 beta 版,它的
相容情形應該就比較好了。您需要取得下列這些檔案:
<p><tt>AccelCardsBetaReportCardsDevicesFILESREADME.ati
README.FreeBSDREADME.Mach64RELNOTESVGADriver.Doc
X312BMa64.tgz</tt>
<p>以這些檔案取代您原有的舊檔案,然後切記再跑 <htmlurl
url="http://www.FreeBSD.org/cgi/man.cgi?manpath=xfree86&amp;query=xf86config"
name="xf86config"> 一遍。
<sect1>
<heading>
我有 128 MB 的 RAM但是系統只用其中的 64MB
<label id="reallybigram">
</heading>
<p>因為 FreeBSD 是使用呼叫 BIOS 來取得記憶體大小的方法,因此它只能
偵測到 16 bits 位元長度的 KByte 大小 (65535 KBytes = 64MB)
(或者更少..。有些 BIOS 將最高記憶體大小限為只有 16MB)
如果您擁有 64MB 以上的 RAMFreeBSD 會嘗試去偵測出它,但是有可能
會失敗。
<p>要解決這個問題,您需要使用下面所提的 kernel 設定選項。
雖然有方法可以從 BIOS 中取得記憶體的完整資訊,但是目前我們在
bootblock 中並沒有多餘的空間來做這件事。當某天 bootblock 空間
不足的情形獲得解決時,我們將會使用 BIOS 的延伸功能來取得記憶
體的完整資訊...但現在我們將它放在 kernel 設定選項中。
<tt>
options "MAXMEM=&lt;n>"
</tt>
<p><tt/n/ 是指您的記憶體大小,以 KB 為單位。以一台有 128MB RAM 的
機器來說,您可使用 <tt/131072/ 這個數字。
<sect1>
<heading>FreeBSD 2.0 因為 ``kmem_map too small!'' 而發生 panic</heading>
<p><tt /注意/ 這個訊息也有可能是 ``mb_map too small!''
<p>這個 panic 是表示系統用光了給網路緩衝區的所有的虛擬記憶體 (特
別是 mbuf clusters)。您可以增加給 mbuf clusters 的 VM 的數量,
只要加入:
<p><tt>options "NMBCLUSTERS=&lt;n>"</tt>
<p>在您的 kernel 設定檔中,&lt;n&gt; 是一個在 512-4096 間的數字,
依您想提供多少同時的 TCP 連接數目多寡而定。我會建議試試 2048 -
這數字應該可以完全避免這個 panic 了。您可以執行:
<htmlurl url="http://www.FreeBSD.org/cgi/man.cgi?netstat"
name="netstat -m"> 來監看有多少 mbuf clusters
在系統上正被 配置/使用。NMBCLUSTERS 的數值內定為
<tt/512 + MAXUSERS * 16/。
<sect1>
<heading>用新 kernel 開機時,出現 ``CMAP busy panic'' 這個錯誤訊息</heading>
<p>用來偵測過期 <tt>/var/db/kvm_*.db</tt> 檔案的機制偶爾會"出鎚"
而使用一個含不正確資料的檔案有時就會導致 panic。
<p>如果發生了這個問題,請重新開機,進入單使用者模式,然後執行:
<verb>
rm /var/db/kvm_*.db
</verb>
<sect1>
<heading>ahc0: brkadrint Illegal Host Access at seqaddr 0x0</heading>
<p>這是一個和 Ultrastor SCSI 控制卡有關的衝突
<p>在開機時,進入 kernel 設定選單
取消 <htmlurl url="http://www.FreeBSD.org/cgi/man.cgi?uha(4)"
name="uha0">,它是造成這個問題的原因
<sect1>
<heading>Sendmail 一直抱怨 ``mail loops back to myself''</heading>
<p>這個問題在 sendmail 的 FAQ 中是這樣回答的:-
<verb>
* 我一直收到有關 "Local configuration error" 的信件,例如:
553 relay.domain.net config error: mail loops back to myself
554 <user@domain.net>... Local configuration error
我要如何解決這個問題?
您利用 MX 設定,讓要寄到某 domain (如: domain.net) 的信件,
寄到您所指定的機器 (在這個例子中為 relay.domain.net),但是這
部機器並未被設定接受 domain.net 的信件。把 domain.net 加到
/etc/sendmail.cw 中 (如果您有使用 FEATURE(use_cw_file)) 或是
在 sendmail.cf 中加入 "Cw domain.net"
</verb>
<p><url
url="ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/sendmail-faq"
name="sendmail FAQ"> 現在已不再隨著 sendmail "出貨"。
它目前是被定期的發表在:
<url url="news:comp.mail.sendmail" name="comp.mail.sendmail">
<url url="news:comp.mail.misc" name="comp.mail.misc">
<url url="news:comp.mail.smail" name="comp.mail.smail">
<url url="news:comp.answers" name="comp.answers">,和
<url url="news:news.answers" name="news.answers">。
您也可以寄一封 Email 到
<url url="mailto:mail-server@rtfm.mit.edu"
name="mail-server@rtfm.mit.edu">,然後在信件內文中寫上
"send usenet/news.answers/mail/sendmail-faq" 這個指令
以取得這份文件。
<sect1>
<heading>在遠端機器(remote machine)執行全螢幕的軟體時,有不正常的情形!
</heading>
<p>或許遠端機器並非將您的終端機形態設為 FreeBSD console 所用
的 <tt>cons25</tt>,而是設為其它種類。
<p>這兒有幾個解決這個問題的方法:
<itemize>
<item>在 logging 進遠端機器後,更改您的 shell 變數 TERM 為
<tt>ansi</tt> 或是 <tt>sco</tt>。
<item>在 local 端用一些可以模擬 VT100 的模擬器,如 <htmlurl
url="http://www.FreeBSD.org/cgi/ports.cgi?screen-" name="screen">。
<tt>screen</tt> 提供您在一個 terminal 裏同時跑好幾個 session
的能力,而且它本身也是一個相當好的軟體。
<item>在遠端機器的終端機資料庫(terminal database)中加入
<tt>cons25</tt> 的資料。
<item>啟動 X 然後利用 <tt>xterm</tt> 來 login 進遠端的機器。
</itemize>
<sect1>
<heading>我的機器一直顯示 "calcru: negative time..."</heading>
<p>跟中斷 interrupt 有關的不同硬體 與/或 軟體的搭配都有可能造成
這個問題。這有可能是 bug 或是某個裝置本身的問題。在平行埠上使用
大的 MTU 來作 TCP/IP 傳輸可以重現這個問題。若是圖形加速卡造成這個
問題的話,您應該先檢查卡的中斷設定。
<p>這個問題的邊際效應是會造成有些 process 出現
"SIGXCPU exceeded cpu time limit" 的訊息,而不正常中斷
<p>若版本是 1998 年 11 月 29 日以後的 FreeBSD 3.0,如果這個
問題一直無法以其他方法解決,就只能設定 sysctl 變數:
<verb>
sysctl -w kern.timecounter.method=1
</verb>
<p> 這樣會對效能有些影響,但是若考慮到這個問題帶來的後果,這樣做是值
得的。如果這個問題還是存在的話,將 sysctl 那個值依然設為 1然後
增加 kernel 設定檔中 "NTIMECOUNTER" 這個選項的數值。如果您將
"NTIMECOUNTER" 增加到 20 依然無法解決這個問題,那麼您機器上的中斷
已經多到無法保持穩定的狀態了。
</sect>