Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 開機偵測不到網卡解決方案:核心升級與驅動載入

編輯:Linux 教學

問題現象

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 不在驅動程式支援清單中,導致核心無法自動探測與綁定驅動。

解決方案

方案一:升級核心(最徹底、推薦)

  • 核心 ≥ 2.0.31:新增 5 種 NE2000-PCI 晶片 ID,開機或載入模組時自動偵測。
  • 核心 ≥ 2.0.34:提供獨立的 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 固定參數,維護困難,不支援熱插拔。

方案三:使用廠商提供的專屬驅動

  • 部分網卡廠商(如 3Com、Intel、RealTek)提供獨立驅動原始碼,編譯為模組載入。
  • 需確認核心版本相容性,建議仍以升級核心為主。

驗證與後續設定

# 確認網卡已偵測
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 或更新核心/固件。

Copyright © Windows教程網 All Rights Reserved