Linux操作系統下乙太網卡的安裝及配置
五、一個乙太網卡安裝實例
下面以Cirrus公司生產的Crystal CS8920乙太網卡為例,詳細說明上述安裝配置程序。本例中,有些指令參數,如核心來源碼目錄等,是以我使用的系統環境為出發點。具體套用中還要加以本機化。為了更接近實際,例子中也包括了對安裝中碰到的問題的描述。
1.此網路卡是IBM PC機的內裝式網路卡,機器只提供了Windows95/98環境下的驅動程式。由於RedHat 5.0發行版本尚未提供對此網路卡的直接支持,所以從Cirrus的站點上找到並下載了該網路卡驅動程式的Linux版本,是一個名為 Linux102_tar.gz的壓縮檔案。
2.文件Linux102_tar.gz解壓縮後包括五個文件。包括來源碼,僅適用於Linux 2.0版本的目標模組以及readme文件。
3.查閱readme文件後,瞭解到這個驅動程式只能使用網路卡EEPROM中設定的連接阜號(I/O基位址)、中斷號。為了知道網路卡EEPROM的設定,又從Cirrus站點下載了該網路卡DOS版本的設定程序setup.exe
4.在DOS中執行setup.exe,發現網路卡的起始連接阜號為0x360,中斷號為10,與別的設備有衝突。選項setup.exe程序的相應 表單,把中斷號改成5。另外,此驅動程式不支持plug and Play,故也在setup.exe中將網路卡的PnP功能遮閉掉。
5.我所使用的RedHat 5.0的Linux核心版本為2.0.34,所以不能用現成的驅動程式目標模組,需要自己動手編譯。如上文所述,有兩種方式使用此驅動程式。
6.如果要編譯成獨立模組,執行下列指令:
gcc -D_KERNEL_-I/usr/src/linux/include -I/usr/src/linux/net/inet-Wall -Wstrictprototypes -02 -fomit-frame-pointer -DMODULE -DCONFIG_MODVERSIONS -ccs89x0.c
編譯結果是名為cs89x0.o的驅動程式目標模組。要裝載此驅動程式,輸入下列指令: insmod cs89x0.o io=0x360 irq=10
要卸載此驅動程式,用rmmod指令:
rmmod cs89x0.o
7.如果要將驅動程式編進系統核心,
修改/usr/src/linux/drivers/net/CONFIG,加入:
CS89x0_OPTS=
修改/usr/src/linux/drivers/net/Config.in,加入:
tristate『CS8920 Support』CONFIG_CS8920
以上兩行是為了讓make config在配置程序中詢問是否增加CS8920網路卡的支持。修改/usr/src/linux/drivers/net/Makefile加入:
ifeq((CONFIG_CS8920),y)
L_OBJS+=cs89x0.o
endif
修改/usr/src/linux/drivers/net/Space.c,加入:
extern int cs89x0_probe(struct device *dev);
……
#ifdef CONFIG_CS8920
&& cs89x0_probe(dev);
#endif
以上兩段是為了編譯並輸出網路卡驅動程式及其例程。
把驅動程式來源碼拷到/usr/src/linux/drivers/net目錄下。
在/usr/src/linux目錄下執行 make config或 make menuconfig,選項核心CS8920網路卡支持。
執行make dep、make clean指令。最後用 make zImage 編譯Linux核心。
如何設定核心驅動程式參數,上節已有說明,不再贅述。
沒有留言:
張貼留言