为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

linux网卡驱动安装

2018-09-02 8页 doc 23KB 11阅读

用户头像

is_219945

暂无简介

举报
linux网卡驱动安装linux网卡驱动安装 部分内容来源于互联网,如侵犯了作者的权益,请尽快与我们取得联系~ 这几天,都在为linux下安装网卡而愁,虽然,我用的是瑞~~(linux是支援的.)但我还是想搞明白,如何去编译个. 资料(参考): Linux 的網路卡 在 Linux 裡面的各項裝置幾乎都是以檔案名稱來取代的,例如 /dev/hda 代表 IDE1 介面的第一個 master 硬碟等等。 不過,網路卡的代號 (Network Interface Card, NIC) 卻是以模組對應裝置名稱來代替的, 而預設的網路卡代號為 e...
linux网卡驱动安装
linux网卡驱动安装 部分内容来源于互联网,如侵犯了作者的权益,请尽快与我们取得联系~ 这几天,都在为linux下安装网卡而愁,虽然,我用的是瑞~~(linux是支援的.)但我还是想搞明白,如何去编译个. 资料(参考): Linux 的網路卡 在 Linux 裡面的各項裝置幾乎都是以檔案名稱來取代的,例如 /dev/hda 代表 IDE1 介面的第一個 master 硬碟等等。 不過,網路卡的代號 (Network Interface Card, NIC) 卻是以模組對應裝置名稱來代替的, 而預設的網路卡代號為 eth0 ,第二張網路卡則為 eth1 ,以此類推。 我們知道網路卡其實是硬體,所以當然需要核心支援才能驅動他。 一般來說,目前新版的 Linux distributions 預設可以支援的網路卡晶片組數量已經很完備了, 包括大廠的 3COM, Intel 以及初階的 RealTek, D-Link 等網路卡晶片都已經被支援, 所以使用者可以很輕易的設定好他們的網路卡。不過,萬一您的網路卡晶片組開發商不願意釋出開放源 (Open Source) 的硬體驅動程式,或者是該網路卡太新了,使得 Linux 核心來不及支援時, 那麼您就得要透過: 重新編譯核心 編譯網路卡的核心模組 好讓核心可以支援網路卡這塊硬體啦~但是,重編核心或編譯網路卡核心模組都不是簡單的工作, 而且有時原始碼又可能無法在每部主機上面編譯成功,所以萬一您的網路卡真的不被預設的 Linux 網路晶片所支援,那麼鳥哥真的建議直接換一塊被 Linux 支援的網路卡吧,例如很便宜的螃蟹卡~ 免得花了太多時間在硬體確認上面,划不來的~ ^_^ 如果您是照鳥哥推薦的,使用 RLT 8139 晶片 ( RealTek 8139 ) 的網路卡 ( 就是螃蟹卡 ) ,那您應該在安裝 Linux 的時候就已經捉到網路卡了,那真是恭喜您啦~ 因為您的網路卡應該已經可以正常的工作囉~那如果在安裝的時候並沒有捉到網路卡呢, 該如何是好,那也不用擔心,因為您也可以事後才安裝網路卡的驅動程式呀~不過,因為 Linux 並不像 Windows 是那樣的隨插即用,所以需要動一些手術的~ 另外,其實有的時候 Linux 的預設網路卡模組可能無法完全 100% 的發揮網路卡的功能的, 所以,有的時候您還是得必須要自行編譯網路卡的模組才行喔~當然, 那個網路卡的模組就得要自行由網路卡開發商的官方網站下載了~不過,如果您的網路卡是自行編譯安裝的, 那麼每次重新安裝其他版本的核心時,您都必須要自行重新手動編譯過該模組。 因為模組與核心是有相關性的啊~ 好了,假設您的網路卡已經在主機上面,不論是內建的還是自行安插到 PCI 或 PCI-x 或 PCI-E 的介面上, 那麼如何確認該網路卡有被核心捉到呢,很簡單啊~就利用 dmesg 來查閱即可: [root@linux ~]# dmesg | grep -in eth 117:divert: not allocating divert_blk for non-ethernet device lo 171:divert: allocating divert_blk for eth0 227:divert: not allocating divert_blk for non-ethernet device sit0 228:eth0: no IPv6 routers present [root@linux ~]# dmesg | cat -n | less #...前面省略... 169 3c59x: Donald Becker and others. www.scyld.com/network/vortex.html 170 0000:00:08.0: 3Com PCI 3c905C Tornado at 0xe800. Vers LK1.1.19 171 divert: allocating divert_blk for eth0 #...後面省略... 透過這個 dmesg 可以發現系統在開機時確實有捉到網路卡,然後透過搜尋行號,就能夠找到該網路卡的驅動模組; 當然,您也可以透過 lspci 來查閱網路卡的相關模組吶~ 另外,您也可以透過這個 dmesg 瞭解到該張網路卡的代號喔~舉例來說,鳥哥上面這個訊息就顯示: 我的這張網路卡代號是 eth0 [root@linux ~]# lspci 00:08.0 Ethernet controller: 3Com Corporation 3c905C-TX/TX-M [Tornado] (rev 74) 看到了吧,鳥哥的某一部主機就是使用 3Com 的網路卡啊~Linux 系統本身就內建了 3c905C 這個驅動程式, 所以鳥哥根本不需要自行安裝驅動程式吶~真是高興~ ^_^ 那麼這個 3c905 的驅動程式放在哪裡啊,就是核心模組啊~在這個地方: [root@linux ~]# cd /lib/modules/`uname -r`/kernel/drivers/net [root@linux net]# modinfo 3c59x.ko filename: 3c59x.ko author: Donald Becker description: 3Com 3c59x/3c9xx ethernet driver LK1.1.19 10 Nov 2002 license: GPL version: LK1.1.19 DBFD1C112761D573276AC45 parm: debug:3c59x debug level (0-6) .....以下省略..... 你可以先以 lsmod 查詢各個相關的模組後,再到這個地方來檢查,或者是直接以上面這個目錄下的檔案, 配合 lsmod 所顯示出來的各個模組名稱相對應,以取得各個網路卡的模組名稱說~這樣瞭解嗎, OK 那你如何知道你的網路卡卡號呢,很簡單啊~不管有沒有啟動你的網路卡,都可以使用: 『 ifconfig eth0 』來查詢你的網卡卡號。 如果網路卡已經安裝好了,那麼請前往固定 IP 上網方式去設定 ifcfg-eth0 這個檔案 (如果是新增的網卡,這個檔案可能不會存在喔~,需要自己建立)。 好了,萬一你的網路卡無法被驅動,不過好在官方有提供相關的原始碼時, 您就可以自行編譯啦~ 編譯網路卡驅動程式 如果你買到的網路卡實在太新,導致 Linux 預設核心不支援, 或者您實在是很想要一些官方網站提供的驅動程式的新功能, 那實在就得要自行編譯核心啦~ 事實上,如果您要新添購硬體時,請先查閱一下硬體包裝上面是否提及支援 Linux 的字樣, 因為有些硬體廠商在推出新硬體時,常常會漏掉 Linux 驅動程式的撰寫, 如果包裝上面有提到支援的話,那麼至少您會獲得官方網站所提供的驅動程式原始碼啊~ ^_^ 鳥哥以我們實驗室內一部 P-4 內建 Gigabit 乙太網路卡的 CentOS Linux 系統來作介紹, 這部主機的內建乙太網路使用的是 Marvell 的 88E8001 晶片,鳥哥到他們網站上面找到了一個 2006/04 釋出的最新驅動程式來安裝,該原始的檔案名稱為 install-8_40.tar.bz2 ,看到 .tar.bz2 就應該知道他是屬於原始碼,雖然鳥哥這部主機已經正確的捉到網路卡了, 不過,我們還是來更新一下讓這個模組成為最新的驅動程式吧~ ^_^ 另外,記得啊,要編譯就得要有 gcc, make, kernel-devel 等套件才行喔~不要說你忘 了~ 趕緊回到基礎篇裡面看看先~ 假設您已經: 前往官方網站取得驅動程式的原始碼了; 已經在您的系統上面安裝了 gcc, make, kernel-devel 等套件; 那接下來的編譯步驟是這樣的: 解壓縮與編譯: 假設您下載下來的檔案放置在 /root 內的話,那麼使用 root 的身份進行如下工作吧: [root@linux ~]# cd /usr/src [root@linux src]# ln -s kernels/2.6.9-34.0.1.EL-smp-i686/ linux [root@linux src]# cd ~ 上面這個步驟很重要~因為驅動程式的模組都會需要找到核心的包含檔案與相關函式 庫, 而一般來說, Linux kernel 2.6 以後的版本,則都會預設將核心原始碼放在 /usr/src/kernels/(version) 這個目錄內,但一般程式卻是假設核心原始碼在 /usr/src/linux, 因此我們必須要先作個手術,將原始碼與 /usr/src/linux 作個連結啊~請注意,那個原始碼 請依照您的核心版本與 Linux distribution 之公布為準。 [root@linux ~]# tar -jxvf install-8_40.tar.bz2 [root@linux ~]# cd DriverInstall # 此時 在該目錄下有個 README 的檔案,記得看一看,這個檔案內會說明很多資訊, # 包括 如何編譯,以及這個模組所支援的晶片組哩~ [root@linux DriverInstall]# ./install.sh 這個模組寫的比較人性化,因為他有給予一個可直接安裝測試的 script, 所以我們可 以直接執行這個指令即可,很單純吧~ ^_^ 。不過記得, 這些動作請在主機前進行。因為 這個 script 會主動的重新啟動網路卡喔~ 所以如果你是在網路上連線到此主機上面動作的 話,嘿嘿~那可是會失敗的~ 這個指令會有很多的選項在裡面,請依序選擇: 1) installation y(install) 然後這個 script 便會主動的進行編譯、模組卸除以及模組安裝到 /lib/modules/`uname -r`/kernel/drivers/net 這個目錄中, 並且嘗試載入這個模組,以及啟 動網路卡喔~如果一切無誤,您就會看到如下畫面: eth0: network connection up using port A speed: 1000 autonegotiation: yes duplex mode: full flowctrl: symmetric role: slave irq moderation: disabled scatter-gather: enabled tx-checksum: enabled rx-checksum: enabled rx-polling: enabled 這樣就算安裝妥當囉~很簡單吧~ ^_^ 模組之測試與處理 事實上,剛剛我們那個模組其實已經主動的載入到我們的系統當中了, 不過,如果您 所取得的原始碼並沒有附上這麼一支人性化的 script 的話,那麼您就得要自行進行底下的 動作了。 [root@linux ~]# ls -l drwxr-xr-x 2 root root 4096 Jul 20 11:57 sk98lin [root@linux ~]# ls -l sk98lin -rw-r--r-- 1 root root 2666344 Jul 20 11:57 sk98lin.ko # 上面那個目錄假設是我編譯出來的模組,裡面還會有一個檔案喔~那個檔案就是 # sk98lin.ko ,要注意,新的 2.6 版的核心模組副檔名都變成 .ko 的了~ [root@linux ~]# cp -a sk98lin /lib/modules/`uname -r`/kernel/drivers/net # 注意啊~整個網路卡驅動模組就是放在上面的目錄中,不要寫錯了。 [root@linux ~]# depmod -a # 將所有的模組進行重新分析的工作~建立關連檔案 [root@linux ~]# lsmod | grep 'sk98lin' # 先確認『sk98lin』這個模組不存在,然後就可以開始測試: [root@linux ~]# modprobe sk98lin [root@linux ~]# lsmod | grep 'sk98lin' # 如果有相關的字樣跑出來時,就表示這個模組可以順利的被載入啦~ 如果可以順利載入的話,恭喜您,您所自行編譯的驅動程式已經搞定啦~ 不過,當有新版本的核心釋出時,您也安裝了新版的核心,那麼上面的動作您就得要再進行一次, 為什麼呢,想一想,剛剛您將編譯出來的驅動程式模組放在哪裡, 然後編譯的時候參考的核心原始碼又是在哪裡,那您就會曉得『為什麼』了~ ^_^ 設定開機自動啟動網路卡模組 我們前面提到,Linux 的網路卡其實僅是一個代號,並不是類似硬碟的裝置檔案,所以, 我們必須要指定這個代號與模組的對應才行,在 CentOS (Red Hat 系統) 的對應是使用 /etc/modprobe.conf ,至於舊版的 2.4 核心中,則使用的是 /etc/modules.conf ,注意一下您的核心版本。 鳥哥的 CentOS 4.3 使用的是 /etc/modprobe.conf ,所以我就得這麼做: [ root@linux ~]# vi /etc/modprobe.conf # 修改或增加底下這一行吧~ alias eth0 sk98lin [root@linux ~]# sync; reboot 為了測試一下剛剛的設定是否會生效,通常鳥哥都會嘗試一次重新開機, 然後開機完成之後觀察一下是否有正確的啟動網路卡,並觀察一下模組載入的情況, 如果一切都順利,那就太完美了~ 嘗試設定 IP 等到一切就緒之後,總得試看看這樣的網路卡模組是否可以順利的設定好 IP 吧, 所以我們先手動給他一個私有 IP 看看先: [root@linux ~]# ifconfig eth0 192.168.1.100 [root@linux ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:01:BA:77:16:52 inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 .....以下省略..... 嘿嘿~真的設定妥當哩~然後利用 ping 這個指令去 ping 一下網域內的其他電腦, 看看能不能有回應,就知道您的網路卡是否 OK 的啦~通常是沒有問題的啦~
/
本文档为【linux网卡驱动安装】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索