linux 如何識別網絡卡順序

2021-04-13 21:24:40 字數 2229 閱讀 1046

由於在尋找這方面的資料,所以特意記錄如下,特別宣告,此文章是引用別人的,而非本人原創。

做些什麼才能讓linux執行兩塊乙太網卡?

這個問題的答案取決於驅動程式是否被用做可載入的模組或者直接編譯進了核心。大多數 linux發行版本現在都使用模組化的驅動程式。這樣就不用發行許多核心,每種核心設定乙個不同的內建驅動程式。使用乙個單一的基本核心,如果特定使用者系 統需要,一旦系統啟動,就足以從驅動程式模組檔案(通常儲存在/lib/modules/)中載入個別的驅動程式。

把驅動程式作為模組使用:對於pci驅動程式,模組通常會自動檢測該品牌型別所有安裝的網絡卡。但對於isa網絡卡,探尋乙個網絡卡是不安全的操作,因此你需要提供網絡卡的i/o位址以便模組知道去**查詢。這一資訊儲存在檔案/etc/conf.modules中。

例如,如果乙個使用者有兩塊isa ne2000網絡卡,一塊在0x300,一塊在0x240,它們在/etc/conf.modules檔案中顯示如下:

alias eth0 ne

alias eth1 ne

options ne io=0x240,0x300

這幾行的意義:就是說如果管理員(或核心)進行modprobe eth0或者modprobe eth1,那麼為eth0或者eth1載入ne.o驅動程式。此外,在載入ne.o模組時,使用選項io=0x240,0x300,這樣驅動程式就知道去 **尋找網絡卡。注意0x很重要 - dos裡常用的300h在這裡沒有用。改變0x240和0x300的順序會使哪一塊物理網絡卡以eth0和eth1結尾發生改變。

同這 個例子一樣,大多數isa模組驅動程式可以接受多個以逗號分隔的i/o值以處理多塊網絡卡。但是,某些(老的?)驅動程式,比如3c501.o模組,目前載 入乙個模組只能處理一塊網絡卡。這樣,要檢測兩塊網絡卡就必須載入兩次該模組。此時,檔案/etc/conf.modules將如下所示:

alias eth0 3c501

alias eth1 3c501

options eth0 -o 3c501-0 io=0x280 irq=5

options eth1 -o 3c501-1 io=0x300 irq=7

在此例中,選項-o用來給每個模組例項乙個唯一的名字,因為不能用同乙個名字載入兩個模組。選項irq=也是用來指定網絡卡設定的硬體irq。(此方法也能用於可接受多個以逗號分隔的i/o值的模組,但這樣會使模組被不必要地載入兩次,降低了效率。)

最後乙個例子,假設使用者有一塊在0x350的3c503網絡卡和一塊在0x280的**c elite16 (wd8013)網絡卡。則應該這樣:

alias eth0 wd

alias eth1 3c503

options wd io=0x280

options 3c503 io=0x350

對於pci網絡卡,只要用alias語句把ethn介面和相應的驅動程式名聯絡起來就行了,因為pci網絡卡的i/o位址可以被安全地檢測到。

可用的模組一般存放在/lib/modules/`uname -r`/net下,這裡uname -r命令可以得到核心的版本(比如2.0.34)。你可以在這裡看看哪乙個驅動程式適合你的網絡卡。一旦你在conf.modules檔案裡進行了正確的設 置,就可以用下面的方法檢查一下:

modprobe ethn

dmesg | tail

這裡「n」是你要檢測的乙太網卡的介面號。

使用編譯進核心的驅動程式:如果你需要的驅動程式編譯進了核心,那麼處理多塊乙太網卡的介面已經存在了。但預設情況下只自動檢測一塊乙太網卡。這樣就避免了啟動時檢測敏感網絡卡可能引起的麻煩。

(注意:在2.1.x之後的核心中,啟動檢測被分為安全和不安全的兩類,所有安全的檢測(如對pci和eisa網絡卡)可以自動找到所有相關的網絡卡。在至少有一塊isa網絡卡的多網絡卡系統中還需要進行以下的處理。)

有兩種方法可以啟動對第二塊(或第三塊等等)網絡卡的自動檢測。最簡單的方法是向核心傳遞啟動引數,由lilo完成。使用ether=0,0,eth1這 樣簡單的啟動引數就可以完成對第二塊網絡卡的檢測。此時按照啟動時找到的網絡卡順序分配eth0和eth1。假如你想讓0x300處的網絡卡為eth0,而 0x280處的網絡卡為eth1,那麼可以使用

lilo: linux ether=5,0x300,eth0 ether=15,0x280,eth1

命令ether=可以接受的引數並不僅限於如上所示的irq + i/o + name。請參看傳遞乙太網引數......以了解全部的句法、網絡卡特定引數和lilo使用技巧。

注意,如果想用linux作為兩個網路間的路由,你需要啟動ip**並重新編譯核心。一般在一台老式的at/286上執行「kbridge」一類的軟體就相當不錯了。

linux 如何更改網絡卡的順序

在使用維護過程中,經常因為新增更換網絡卡導致網絡卡的順序產生不一至的現象。然而以前寫的shell指令碼都已經ok了,沒有必要再去改動。所以只能更改網絡卡順序了,我的centos6.3 更改位置在如下目錄 etc udev rules.d 70 persistent net.rules 內容如下 可以...

多網絡卡識別順序的問題

原帖 使用linux系統時會出現這樣的情況,當你安裝了某個網絡卡的驅動程式時,或者安裝了與網絡卡相關的程式後。網絡卡會出現所謂的漂移現象。注意 不是飄逸 可能的表象為 1 網絡卡順序顛倒,比如之前你的網線連線的網口為eth0,當安裝某個網絡卡的驅動後,可能它的名字變為eth0或者eth3,等等情況。...

linux網絡卡重新識別

概述 昨天跟以前同事聊天時,提起他在生產中做的乙個誤操作刪除網絡卡後如何處理。這裡我也在虛擬環境中做個記錄以備不時之需。實驗 1 使用圖形介面刪除網絡卡 2 手工配置網絡卡 使用到的主要命令有 nmcli con list nmcli dev list ifconfig uuidgen 這裡注意 如...