瘟貓和Linux配置實作指南: 是ISA還是PCI？

Next Previous Contents

## 2. 是ISA還是PCI？

## 2.1 PCI ？

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

- 在Loadable module support（可加載模塊支持）部分：'Enable loadable module support (CONFIG_MODULES)'（激活可加載模塊支持），及 'Set version information on all modules for symbols (CONFIG_MODVERSIONS)'(切記必須已經安裝了modutils模塊工具軟件包﹔請參閱Kerneld-HOWTO)
- 在General setup部分：

  'PCI support' (CONFIG_PCI)

  在'PCI Access Mode' (CONFIG_PCI_GOBIOS)處選擇'Any'

  'PCI quirks' (CONFIG_PCI_QUIRKS)

  'Backward compatible /proc/pci' (CONFIG_PCI_OLD_PROC)

- 在Filesystems部分

  '/proc filesystem support' (CONFIG_PROC_FS)

如果您從未重編譯過內核，可能您使用的發行套件的內核就已經包含這些東西。如果想重編譯內核，而且您還從未干過這樣的事情，請參閱Kernel-HOWTO.

現在，我們假定您的新內核已經安裝妥當。

現在請運行'cat /proc/pci'命令。如果您在命令行返回的結果當中看到了您的貓的名字，那么您的貓是PCI瘟貓。請跳至'安裝驅動程序'一節

## 2.2 難道是ISA的？

如果您還沒有找到您的貓，很有可能您拿到的是一只ISA的貓。怎么確定是ISA貓呢？

ISA的支持在內核是不考慮直接支持的（2.4.*系列內核會考慮，但是目前它還是不夠穩定的）。這里有一個第三方的軟件，名字就叫isapnp，是用來檢測ISA設備的。首先您必須確認您已經安裝了該軟件包。如果還沒有安裝，也可以通過下載isapnptools軟件包來解決。

一旦isapnptools已經安裝好，我們先運行一個特定程序，叫pnpdump。它可以檢測您的電腦系統，從中尋找出ISA設備來。在運行當中，程序試圖檢測設備所使用的資源并將這些資源打印到文件/etc/isapnp.conf當中。然后，您需要編輯該文件并執行另外一個程序isapnp。該程序會讀取isapnp.conf文件并自動配置您的設備。

嗯？聽起來很難么？那就走一走以下的步驟吧：

1. 請執行'pnpdump > /etc/isapnp.conf'。

2. 請使用您最喜歡的文本編輯器來編輯該文件。

3. 定位到描述您的貓的節段部分。

4. 去掉文件當中的某些行列的注釋（就是去掉行首的#號啦）。您得：

1 line '(IO 0 ...)'

1 line '(INT 0 ...)'

1 line '(DMA 0 ...)'

1 line '(DMA 1 ...)'

1 line '(IO 1...)'

5. 請刪除掉所有未注解IO行當中的'(CHECK)'

6. 請執行'isapnp /etc/isapnp.conf'。如果提示有錯，請根據您得到的錯誤信息，編輯文件isapnp.conf并變更參數。如果沒有錯誤提示，編輯文件isapnp.conf并解除描述您的貓的節段部分的'(ACT Y)'行注釋。然后再執行'isapnp /etc/isapnp.conf'，系統會提示您" [[Name of your modem]] Enabled OK"

7. 請把'isapnp /etc/isapnp.conf'添加到您的/etc/rc.d/rc.local當中，方法是輸入 'echo "isapnp /etc/isapnp.conf" >> /etc/rc.d/rc.local'。在每一次的系統啟動的設備自動配置時，這會起到很大作用。

如果能對大家有幫助的話，以下就是我的/etc/isapnp.conf文件的摘錄（我已經在文件當中注釋了，原文件的注釋以##打頭）

    # 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)

Next Previous Contents