<!doctype linuxdoc system>
<article>

<title>瘟貓和Linux配置實作指南
<author>
作者︰Alexandre J.<tt><htmlurl url="mailto:alexandre12@mageos.com" 
		name="alexandre12@mageos.com"></tt><newline>
譯者：梁昌泰<tt><htmlurl url="linuxrat@gnuchina.org"
		name="linuxrat@gnuchina.org"</tt>，
李超<tt><htmlurl url="mailto:lich1@263.net" name="lich1@263.net"></tt>
<date>v1.0, April 2000
翻譯日期︰2000年07月15日

<abstract>
本文檔向用戶講授如何在Linux下讓瘟貓（Winmodem）運轉起來。
</abstract>

<toc>

<sect>瘟貓是什么東東？<p>
<sect1>它們是貓......<p>
一只瘟貓，和其它的貓一樣，是用來訪問電話服務的，比如BBS、英特網、語音電話、傳真等等。它通過電話線連接并由速度決定其特性．如果您很想學習貓的更多知識，我建議您閱讀Modems-HOWTO。
<sect1>...但是跟真正的貓并不一樣！<p>
它們是“瘟”貓（WINmodem）！也就是說，它們依賴于Windows操作系統才能工作！為什么呢？很簡單，因為它們太土鱉！它們需要特定的軟件和驅動程序協同起來才能完成完整的任務。所謂的特定軟件指的就是操作系統，隨貓所提供的驅動程序99％的程度是只有為微軟視窗系統平台獨家提供的。但是隨著Linux的民主化／大眾化（democratization），一些生產廠家，比如朗訊科技（LT）、摩托羅拉（Motorola）等，決定為她們自行研制生產的貓們開發Linux下的驅動程序。但是她們并不了解Linux的哲學：她們提供的驅動程序是能夠正常工作的，而她們的驅動程序卻是“閉源”(Closed Source)的！她們是free的，這里的free指的是價格上的“免費”，而不是GPL條款所指的“自由”！也就是說這些驅動程序的源代碼不公開給大眾。<p>
所以，一些“黑客”／“電腦玩家”決定編寫一個開源(Open Source)的驅動程序，但是他們并不十分了解手中的貓的技朮細節，因為生產廠商不愿意泄露的貓的技朮細節。也正因為如此，開源的貓驅動程序往往是alpha或者beta版本的。</p>
<sect1>我怎么知道我拿的是瘟貓？<p>
1. 看看您的貓連接的串口的名稱（舉例說，在Windows或者MSDOS就是COM1、COM2、...等等）。<p>
在Linux下，您的貓的名稱是/dev/ttySx。此處的x是在DOS下的串口號數字減一。比如，在DOS下的COM1，在Linux是ttySx，這里的x=1-1=0，所以是ttyS0。<p>
第二例：在DOS下面是COM3，在Linux下面則是ttyS2。<p>其它的依此類推。<p>

2. 給/dev/ttySx做一個名為/dev/modem的符號連接。需要執行的命令是：
<code>
rm -f /dev/modem<p>
ln -s /dev/ttySx /dev/modem
</code>

3. 下載并安裝minicom軟件包。接著運行'minicom -s'。 <p>
選擇'Serial Port Setup'（串口設置），鍵入'A'來設定'Serial Device（'串口設備），刪除所有的行，并輸入'/dev/modem'。接著請按[Enter]回車鍵確認。按[Esc]鍵，并選擇'save setup as dfl”，然后選擇'Exit'（退出）。<p>
請等待一會兒，然后輸入'AT'。如果您的貓回應'OK'，那么您的貓不是一只瘟貓，而是一只標准的貓！<p>
如果初始化時間太長，那么您的貓應該是一只瘟貓。請仔細閱讀本文檔，讓它能跑起來。請以root根用戶登錄。<p>

4. 請按CTRL+A然后X退出Minicom操作環境。<p>


<sect>是ISA還是PCI？<p>
<sect1>PCI ？<p>
嗯，知道了，我們現在知道我們的貓是一只瘟貓了。但是瘟貓有兩種類型：ISA或是PCI的。可惡的廠商們為了讓事情變得更糟糕，故意把兩種接口做的非常不同。所以，現在我們就要測試一下我們的貓是PCI的還是ISA的。首先，必須要配置一把內核。在make *config的過程當中，必須對下列問題回答'yes'：<p>

<itemize>
<item>在Loadable module support（可加載模塊支持）部分：'Enable loadable module support (CONFIG_MODULES)'（激活可加載模塊支持），及 'Set version information on all modules for symbols (CONFIG_MODVERSIONS)'(切記必須已經安裝了modutils模塊工具軟件包﹔請參閱Kerneld-HOWTO)
<item>在General setup部分： <p>
'PCI support' (CONFIG_PCI)<p>
在'PCI Access Mode' (CONFIG_PCI_GOBIOS)處選擇'Any'<p>
'PCI quirks' (CONFIG_PCI_QUIRKS)<p>
'Backward compatible /proc/pci' (CONFIG_PCI_OLD_PROC)<p>
<item>在Filesystems部分<p>
'/proc filesystem support' (CONFIG_PROC_FS)<p>
</itemize>
如果您從未重編譯過內核，可能您使用的發行套件的內核就已經包含這些東西。如果想重編譯內核，而且您還從未干過這樣的事情，請參閱Kernel-HOWTO. <p>
<p>
現在，我們假定您的新內核已經安裝妥當。 <p>
<p>
現在請運行'cat /proc/pci'命令。如果您在命令行返回的結果當中看到了您的貓的名字，那么您的貓是PCI瘟貓。請跳至'安裝驅動程序'一節<p>

<sect1>難道是ISA的？<p>
如果您還沒有找到您的貓，很有可能您拿到的是一只ISA的貓。怎么確定是ISA貓呢？<p>
ISA的支持在內核是不考慮直接支持的（2.4.*系列內核會考慮，但是目前它還是不夠穩定的）。這里有一個第三方的軟件，名字就叫isapnp，是用來檢測ISA設備的。首先您必須確認您已經安裝了該軟件包。如果還沒有安裝，也可以通過下載isapnptools軟件包來解決。 <p>
一旦isapnptools已經安裝好，我們先運行一個特定程序，叫pnpdump。它可以檢測您的電腦系統，從中尋找出ISA設備來。在運行當中，程序試圖檢測設備所使用的資源并將這些資源打印到文件/etc/isapnp.conf當中。然后，您需要編輯該文件并執行另外一個程序isapnp。該程序會讀取isapnp.conf文件并自動配置您的設備。<p>
<p>
嗯？聽起來很難么？那就走一走以下的步驟吧： <p>
<p>
1. 請執行'pnpdump > /etc/isapnp.conf'。<p>
2. 請使用您最喜歡的文本編輯器來編輯該文件。<p>
3. 定位到描述您的貓的節段部分。<p>
4. 去掉文件當中的某些行列的注釋（就是去掉行首的#號啦）。您得： <p>
1 line '(IO 0 ...)'<p>
1 line '(INT 0 ...)'<p>
1 line '(DMA 0 ...)'<p>
1 line '(DMA 1 ...)'<p>
1 line '(IO 1...)'<p>
5. 請刪除掉所有未注解IO行當中的'(CHECK)'<p>
6. 請執行'isapnp /etc/isapnp.conf'。如果提示有錯，請根據您得到的錯誤信息，編輯文件isapnp.conf并變更參數。如果沒有錯誤提示，編輯文件isapnp.conf并解除描述您的貓的節段部分的'(ACT Y)'行注釋。然后再執行'isapnp /etc/isapnp.conf'，系統會提示您" [[Name of your modem]] Enabled OK"<p>
7. 請把'isapnp /etc/isapnp.conf'添加到您的/etc/rc.d/rc.local當中，方法是輸入 'echo "isapnp /etc/isapnp.conf" >> /etc/rc.d/rc.local'。在每一次的系統啟動的設備自動配置時，這會起到很大作用。<p>
<p>
如果能對大家有幫助的話，以下就是我的/etc/isapnp.conf文件的摘錄（我已經在文件當中注釋了，原文件的注釋以##打頭）<p>

<code>

# Snip details ...
## (DEBUG)
(READPORT 0x0203)
(ISOLATE PRESERVE)
(IDENTIFY *)
(VERBOSITY 2)
(CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING

# 我的貓卡的辯識信息

## Card 1: (serial identifier e2 00 00 01 00 05 50 c3 1e)
## Vendor Id GVC5005, Serial Number 256, checksum 0xE2.
## Version 1.0, Vendor version 0.1
## ANSI string -->LT Win Modem<--
##
## Logical device id HSM0140
##     Device support I/O range check register
#

# 我們要配置 GVC5005/256 卡

(CONFIGURE GVC5005/256 (LD 0

# I/O Base address 0x03f8, with a range of 8
(IO 0 (SIZE 8) (BASE 0x03f8) )
# IRQ 4
(INT 0 (IRQ 4 (MODE +E)))
# DMA 5
(DMA 0 (CHANNEL 5))
# DMA 7
(DMA 1 (CHANNEL 7))
# I/O Base Address 2  0x0100, range 8
(IO 1 (SIZE 8) (BASE 0x0100) )
# 卡的名稱
 (NAME "GVC5005/256[0]{LT Win Modem        }")
# 激活之
(ACT Y)
# 結束配置
))

######## The parameters for my other ISA devices ##############
 
## Returns all cards to the "Wait for Key" state
(WAITFORKEY)

</code>

<sect>安裝貓的驅動程序<p>
您沒有必要完全閱讀本節段，只需要匹配您的貓的部分就可以了。目前，我只通過使用朗訊（Lucent）和開源驅動程序來講述如何安裝LT貓。如果您已經編寫了或者使用了其它的瘟貓驅動程序，無論是閉源還是開源的，都給我放一個過來吧（我的email地址是：alexandre12@mageos.com），然后我就可以把它放到這個節段當中來。<p>
<p>
<sect1>LT牌瘟貓（來自朗訊科技Lucent）<p>
鏈接URL：http://www.linmodems.org/linux568.zip<p>
作者：Lucent Technologies<p>
版權協議：非GPL<p>
支持范圍：使用朗訊（Lucent）芯片的ISA/PCI貓，該芯片屬于Mars系列<p>
特性：內核模塊化; 串口仿真。支持PPP、Fax 和 Voice<p>
最新版本（據我所知）：5.68<p>
相關文檔：README<p>
系統要求：版本號不低于2.2.12的且支持模塊加載的RedHat內核<p>
使用方法：先解壓縮軟件包（請執行'unzip linux568.zip'），然后執行./ltinst即可。<P>
問題：<p>
<itemize><p>
<item>'insmod: ltmodem: Unresolved symbol(s) *****': You have not a kernel matching with ltmodem. Get the 2.2.12 kernel from ftp.kernel.org, compile and install it
<item>'Warning: kernel version mismatch...": It is simply because ou have not the 2.2.12-20 kernel. It's only a warning, and it doesn't make the modem failing
<item>'ltmodem: init_module: device or resource busy': 
	<itemize>
	<item>您安裝的貓不是lt貓或者兼容貓
	<item>如果您的貓是ISA接口的，原因可能是沒有使用isapnp配置過
	<item>如果您的貓是PCI接口的，可能是內核當中沒有配置PCI支持
	</itemize>
</itemize>

<sect1>LTMODEM程序（開源的驅動程序）<p>
鏈接URL: http://www.close-u-net.com<p>
作者： Richard Close and Pavel Machek<p>
版權協議：GPL<P>
支持范圍：使用朗訊（Lucent）芯片的ISA/PCI貓，該芯片屬于Mars系列<p>
特性： 用戶級（user-space）的驅動程序; 支持語音電話（Voice call）﹔不支持PPP（V90）<p>
最新版本（據我所知）：0.9.2<p>
相關文檔：README<p>
系統要求：gcc編譯器、automake<p>
使用方法：<p>
<itemize><p>
<item>PCI: make ; make install - 然后使用'ltmodem'程序來和貓通訊
<item>ISA: （請閱讀README.ISA說明文件）mv Makefile Makefile.PCI ; mv Makefile.ISA Makefile ﹔然后編輯config.h并變更貓的(I/O Address、DMA、IRQ)當前數值; make ; make install - 然后使用'ltmodem'程序來和貓通訊。<p>
</itemize>
問題：<p>
<itemize>
	<item>"Sorry, I can't found any modem...": <p>
		<itemize>
		<item>You have not LT modem
		<item>You have an ISA modem not configured by isapnp
		<item>You have an ISA modem configured ; but ltmodem was not compiled as ISA
		<item>You have a PCI modem with no PCI support included in the kernel
		<item>You have a PCI modem and a compliant kernel, but ltmodem was not compiled as PCI
</itemize>
</itemize>

<sect>結束...<p>
<sect1>版權協議，版權所有<p>
    Copyright (C) 2000  Alexandre J. <p>
    This program is free software; you can redistribute it and/or modify<p>
    it under the terms of the GNU General Public License as published by<p>
    the Free Software Foundation; either version 2 of the License, or<p>
    (at your option) any later version.<p>
<p>
    This program is distributed in the hope that it will be useful,<p>
    but WITHOUT ANY WARRANTY; without even the implied warranty of<p>
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the<p>
    GNU General Public License for more details.<p>
<p>
    You should have received a copy of the GNU General Public License<p>
    along with this program; if not, write to the Free Software<p>
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA<p>

<sect1>聯系信息<p>
如果您對本文檔有什么建議，請慷慨一些給我丟個紙條吧：alexandre12@mageos.com. <p>
如果您對本文的翻譯有什么看法或建議，也請慷慨些給中譯版翻譯者(linuxrat@gnuchina.org或者lich1@263.net)丟個紙條吧．<p>
<sect1>資源<p>
<itemize>
<item>Linmodems工程主頁：http://www.linmodems.org<p>
<item>LTModem工程主頁：http://www.close-u-net.com<p>
<item>朗訊科技（Lucent Technologies）工程主頁：http://www.lucent.com<p>
<item>Linux內核主頁：http://www.kernel.org<p>
<item>ISA工具集（isapnptools）主頁：http://www.roestock.demon.co.uk/isapnptools<p>
<item>Linux文檔工程LDP的主頁（獲取HOWTO文檔的地方）：http://www.redhat.com/mirrors/LDP<p>
</itemize>

</article>
