萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 多網卡設定完整指南:模組化與核心編譯兩種模式詳解

本文整理 Linux 系統下配置多張乙太網卡的常見問題與解決方案,依驅動程式載入方式(模組化 vs 核心內建)分類說明,並提供實際設定範例。

1. Alpha 版驅動程式取得與使用

何處取得最新實驗性驅動程式?

最新驅動程式可從 Donald Becker 的 FTP 站點 cesdis.gsfc.nasa.gov/pub/linux/ 下載,或透過其個人網頁查找。建議使用 FTP 下載以避免瀏覽器將原始碼中的 Tab 字元轉換為空格。

關於 Alpha 版驅動程式的態度

若驅動程式確為 alpha 或 pre-alpha 版本,請理性對待:不可預期其行為完美,若導致系統當機也不應抱怨,而應提交完整的 Bug 回報。部分實驗性驅動程式已納入標準核心原始碼樹,執行 make config 時選擇「Prompt for development and/or incomplete code/drivers」並回答 Y 即可包含。

2. 讓 Linux 同時運行多張乙太網卡

設定方式取決於驅動程式是以模組載入或編譯進核心。現代發行版多採模組化,系統啟動後從 /lib/modules/ 載入所需驅動程式。

使用模組方式

PCI 驅動程式通常自動偵測同品牌所有網卡;ISA 網卡因偵測不安全,需在 /etc/conf.modules 手動指定 I/O 位址。

範例一:兩張 ISA NE2000 網卡

假設分別位於 0x300 與 0x240:

alias eth0 ne
alias eth1 ne
options ne io=0x240,0x300

載入時會使用 io=0x240,0x300 參數。注意 0x 前綴不可省略,順序決定實體網卡對應 eth0 或 eth1。大多數 ISA 模組支援多個逗號分隔的 I/O 值,但舊驅動(如 3c501.o)每次僅能處理一張卡,需載入兩次。

範例二:兩張 3c501 網卡

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。

範例三:混合型網卡(3c503 + SMC Elite16)

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。設定完成後可執行:

modprobe ethN
dmesg | tail

使用編譯進核心的驅動程式

核心內建驅動程式預設僅自動偵測第一張網卡。2.1.x 以後核心將啟動偵測分為安全(PCI/EISA)與不安全(ISA),安全偵測可自動找到所有裝置,含 ISA 卡的多網卡系統仍需額外處理。

啟動第二張(或更多)網卡偵測

最簡單方法是透過 LILO 傳遞啟動參數:ether=0,0,eth1 即可啟動第二張卡偵測。若要指定 0x300 為 eth0、0x280 為 eth1:

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

ether= 參數語法詳見相關文件,可寫入 LILO 設定 append 選項固定參數。另一種不建議的方法是編輯 Space.c 將 0xffe0 替換為 0 以強制自動偵測。

網路路由設定

若作為兩網路間路由器,需啟用 IP 轉發並重編核心。

3. 網卡無法運作的常見原因

ether= 僅對核心內建驅動有效,現代發行版多用模組化驅動,故較少使用。模組化驅動的選項需修改 /etc/conf.modules。若使用核心內建驅動且已修改 LILO 設定,須重新執行 lilo 生效。

4. NE1000/NE2000 相容卡常見問題

問題:v2.0.x 啟動時未偵測到 PCI NE2000 相容卡

原因: v2.0.30 前的 ne.c 僅知 RealTek 8029 晶片 PCI ID,新晶片 ID 無法識別。
解決: 升級核心至 v2.0.31 以上,可識別五種 NE2000-PCI 晶片 ID;v2.0.34 更有專用 PCI 驅動 ne2k-pci.c。

問題:PCI NE2000 被誤報為 ne1000(8 位元)或模組載入失效

原因: 部分 PCI 卡不支援位元組存取,非 100% 相容。
解決: 升級至 v2.0.31 以上,驅動程式會偵測此硬體錯誤。

問題:PCI NE2000 效能不佳,縮小視窗大小也無改善

原因: 早期 8390 晶片手冊建議每次寫入前先讀取以提高可靠性,核心 v1.2 起預設關閉此行為。有用戶回報重新啟用可改善廉價卡效能。
解決: 編輯 linux/drivers/net/ 下驅動程式,取消 NE_RW_BUGFIX 註解並重建核心或模組。僅單一用戶回報,效果不保證。

問題:ne2k-pci.c 報錯「timeout waiting for Tx RDC」

原因: 網卡或 PCI 總線連接無法處理長字 I/O 最佳化。
解決: 檢查 BIOS/CMOS PCI 計時設定,或改用 ISA/PCI 通用 ne.c 驅動,或刪除 ne2k-pci.c 中 #define USE_LONGIO。

問題:未偵測到 ISA 即插即用 NE2000 卡(如 RealTek 8019)

原因: NE2000 原始規格不支援 PnP,Linux 驅動亦同。
解決: 使用廠商 DOS 設定軟體關閉 PnP,指定 I/O 位址與 IRQ,在 /etc/conf.modules 加入 options ne io=0xNNN(模組化)或啟動參數(核心內建)。

copyright © 萬盛學電腦網 all rights reserved