以D-Link530的網(wǎng)卡進(jìn)行模塊的編譯.
由于Linux的默認(rèn)內(nèi)核已經(jīng)建立很多網(wǎng)卡驅(qū)動(dòng)程序模塊,所以在編譯網(wǎng)卡模塊之前就要確認(rèn)網(wǎng)卡芯片是否被支持,如果被支持,就不需要編譯模塊.
D-Link530的網(wǎng)卡的芯片組是有名的via-rhine(有時(shí)也寫成viarhine),先找找有沒(méi)有這塊網(wǎng)卡的模塊,如果有,你的網(wǎng)卡已經(jīng)被支持,可以跳過(guò)編譯過(guò)程,直接進(jìn)行模塊的加載.
1.先查看內(nèi)核版本,因?yàn)椴煌姹镜哪K放置的路徑不同
uname -r
2.內(nèi)核模塊的路徑
cd /lib/modules/`uname -r`/kennel/drivers/net
以上為2.4版的路徑
cd /lib/modules/`uname -r`/net
以上為2.2版的路徑
3.查詢模塊
ls -l via*
如果自己不知道網(wǎng)卡被Linux檢測(cè)到,可以用以下方法來(lái)測(cè)試:
dmesg | grep eth
如果檢測(cè)到,就不需要編譯內(nèi)核模塊.萬(wàn)一檢測(cè)不到,就必須進(jìn)行編譯工作了.
1.下載網(wǎng)卡驅(qū)動(dòng)程序模塊.
2.確定存在所需要的包:由于驅(qū)動(dòng)程序需要配合內(nèi)核來(lái)編譯,就會(huì)用到kernel source或kernel header的數(shù)據(jù),此外也需要編譯器的幫助,先確定Linux中是否已經(jīng)存在下面的包(以Red Hat 9為例):
kernel-source-2.4.20-18.9
kernel-2.4.20-18.9
gcc-3.2.2-5
make-3.79.1-17
如果沒(méi)有以上的包,就要拿出光盤,將他們安裝到Linux中.
注意:由于很多內(nèi)核模塊默認(rèn)都是由/usr/src/linux這個(gè)kernel source的目錄來(lái)取得所需信息,但偏偏目前很多的Linux都是使用/usr/src/linux-2.4這個(gè)目錄來(lái)鏈接,所以很多時(shí)候就會(huì)發(fā)現(xiàn)找不到文件的錯(cuò)誤信息. 因此,可以使用下面的方式來(lái)鏈接目錄:
cd /usr/src
ln -s linux-2.4.20-18.9 linux
3.編譯下載的模塊
下載完整的驅(qū)動(dòng)程序源代碼,如文件名為:dlkfet-4.24.tar.gz
1.將取得的文件放置到/tmp下,并解壓文件
cp dlkfet-4.24.tar.gz /tmp
cd tmp
tar -zxvf dlkfet-4.24.tar.gz
cd dlkfet-4.24
2.開始編譯
make
會(huì)產(chǎn)生一個(gè)文件模塊:rhinefet.o,將它移動(dòng)到模塊放置的目錄后,執(zhí)行depmod -a即可.
cp rhinefet.o /lib/modules/`uname -r`/kennel/drivers/net
depmod -a
4.模塊測(cè)試
內(nèi)核模塊編譯完成后,就要測(cè)試能否正常運(yùn)行,因?yàn)槲覀円呀?jīng)運(yùn)行depmod -a,所以直接以modprobe進(jìn)行模塊的加載.
1.加載模塊測(cè)試
modprobe rhinefet.o
注意,不要寫完整的名稱,.o不需要寫.rhinefet就是剛剛編譯出來(lái)的rhinefet.o.
lsmod
2.設(shè)置開機(jī)加載摸塊
就是編輯/etc/modules.conf
vi /etc/modules.conf
在文件中加入下面一行:
alias eth0 rhinefet
3.重新啟動(dòng),看是否正常啟動(dòng)模塊
sync;sync;reboot
上面我們使用的是rhinefet模塊,如果不是這個(gè)名稱,就請(qǐng)依你的實(shí)際情況來(lái)修改.接下來(lái)就是測(cè)試這個(gè)網(wǎng)卡是否正常工作.