Linux 核心 v2.0.22 開機時未偵測到已安裝的 PCI NE2000 相容網卡(如 RealTek 8029 晶片以外的 NE2000-PCI 卡),dmesg | grep eth 無輸出,ifconfig -a 僅顯示 lo。
核心 2.0.30 之前的 ne.c 驅動程式僅能識別 RealTek 8029 晶片的 PCI ID。其他廠商的 NE2000-PCI 晶片(如 Winbond、SureCom、VIA 等)的 PCI ID 不在驅動程式支援清單中,導致核心無法自動探測與綁定驅動。
ne2k-pci 模組,體積更小、效率更高,取代通用 ne 模組。升級步驟(以原始碼編譯為例):
# 1. 下載新版核心原始碼
wget https://cdn.kernel.org/pub/linux/kernel/v2.0/linux-2.0.34.tar.gz
tar -xzf linux-2.0.34.tar.gz
cd linux-2.0.34
# 2. 配置核心(複製現有配置)
cp /boot/config-`uname -r` .config
make oldconfig
# 3. 確認網路裝置驅動選項
# Network device support → Ethernet (10 or 100Mbit) → [*] NE2000/NE1000 support
# → NE2000 PCI support (ne2k-pci)
# 4. 編譯安裝
make bzImage modules modules_install
cp arch/i386/boot/bzImage /boot/vmlinuz-2.0.34
cp System.map /boot/System.map-2.0.34
# 5. 更新開機載入程式
# LILO: 編輯 /etc/lilo.conf 新增映像,執行 /sbin/lilo
# GRUB: 編輯 /boot/grub/grub.conf 新增標題
# 6. 重開機選擇新核心
# 1. 確認網卡 PCI ID
lspci -n | grep 0200
# 輸出範例:00:0a.0 0200: 1050:0940 (Winbond W89C940)
# 2. 載入 ne 模組並指定 IO 埠與 IRQ(若為 ISA 卡)或僅載入 ne2k-pci(若核心有支援)
# 核心 2.0.22 無 ne2k-pci,需手動綁定 ne.o
insmod ne io=0x300 irq=10 # 依實際硬體資源調整
# 3. 驗證
dmesg | tail
ifconfig eth0 up
缺點:需在 /etc/modules.conf 或 rc.local 固定參數,維護困難,不支援熱插拔。
# 確認網卡已偵測
dmesg | grep -i eth
# 輸出應含:eth0: NE2000 PCI at 0xXXXX, IRQ X, MAC XX:XX:XX:XX:XX:XX
# 設定網路參數
ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up
route add default gw 192.168.1.1
# 永久生效(Red Hat 系列)
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
ONBOOT=yes
目前主流發行版(CentOS 7/8、Ubuntu 18.04+、Debian 10+)核心版本均 ≥ 4.x,內建完整的 NE2000/PCI/USB/虛擬網卡驅動,極少遇到此問題。若在虛擬機中發生,請確認虛擬網卡類型(virtio、e1000、rtl8139)與核心模組(virtio_net、e1000、8139cp)已載入。
Linux 2.0.x 時代因驅動程式 PCI ID 表不全導致 NE2000-PCI 網卡無法偵測,根治方法為升級核心至 2.0.31 以上。現代系統已無此問題,若遇到網卡未偵測,優先檢查 lspci、dmesg、lsmod 確認硬體與驅動模組對應,必要時手動 modprobe 或更新核心/固件。