實例講解Linux以太網(wǎng)卡的安裝及配置
現(xiàn)在很多的企業(yè)都安裝了Linux,可能會遇到Linux以太網(wǎng)卡的安裝及配置問題,這里將介紹Linux以太網(wǎng)卡的安裝及配置問題的例子,下面以Cirrus公司生產(chǎn)的Crystal CS8920以太網(wǎng)卡為例,詳細說明上述安裝配置過程。本例中,有些命令參數(shù),如核心源代碼目錄等,是以我使用的系統(tǒng)環(huán)境為出發(fā)點。具體應用中還要加以本地化。為了更接近實際,例子中也包括了對安裝中碰到的問題的描述。
1.此網(wǎng)卡是IBM PC機的內(nèi)置式網(wǎng)卡,機器只提供了Windows95/98環(huán)境下的驅(qū)動程序。由于RedHat 5.0發(fā)行版本尚未提供對此網(wǎng)卡的直接支持,所以從Cirrus的站點上找到并下載了該網(wǎng)卡驅(qū)動程序的Linux版本,是一個名為Linux102_tar.gz的壓縮文件。
2.文件Linux102_tar.gz解壓后包括五個文件。包括源代碼,僅適用于Linux 2.0版本的目標模塊以及readme文件。
3.查閱readme文件后,了解到這個驅(qū)動程序只能使用網(wǎng)卡EEPROM中設定的端口號(I/O基地址)、中斷號。為了知道網(wǎng)卡EEPROM的設置,又從Cirrus站點下載了該網(wǎng)卡DOS版本的設置程序setup.exe
4.在DOS中運行setup.exe,發(fā)現(xiàn)網(wǎng)卡的起始端口號為0x360,中斷號為10,與別的設備有沖突。選擇setup.exe程序的相應菜單,把中斷號改成5。另外,此驅(qū)動程序不支持plug and Play,故也在setup.exe中將網(wǎng)卡的PnP功能屏蔽掉。
5.我所使用的RedHat 5.0的Linux核心版本為2.0.34,所以不能用現(xiàn)成的驅(qū)動程序目標模塊,需要自己動手編譯。如上文所述,有兩種方式使用此驅(qū)動程序。
6.如果要編譯成獨立模塊,執(zhí)行下列命令:
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
編譯結(jié)果是名為cs89x0.o的驅(qū)動程序目標模塊。要裝載此驅(qū)動程序,輸入下列命令: insmod cs89x0.o io=0x360 irq=10
要卸載此驅(qū)動程序,用rmmod命令:
rmmod cs89x0.o
7.如果要將驅(qū)動程序編進系統(tǒng)核心,
修改/usr/src/linux/drivers/net/CONFIG,加入:
CS89x0_OPTS=
修改/usr/src/linux/drivers/net/Config.in,加入:
tristate‘CS8920 Support’CONFIG_CS8920
以上兩行是為了讓make config在配置過程中詢問是否增加CS8920網(wǎng)卡的支持。修改/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
以上兩段是為了編譯并輸出網(wǎng)卡驅(qū)動程序及其例程。
把驅(qū)動程序源代碼拷到/usr/src/linux/drivers/net目錄下。
在/usr/src/linux目錄下執(zhí)行 make config或 make menuconfig,選擇核心CS8920網(wǎng)卡支持。
執(zhí)行make dep、make clean命令。***用 make zImage 編譯Linux核心。
也許你就學會了Linux以太網(wǎng)卡的安裝及配置的方法。
【編輯推薦】