我已将名为 TF-3200 的单独网卡插入 PCI 端口。我还确保使用lspci
命令检测到该卡,结果显示:
01:02.0 Ethernet controller: Sundance Technology Inc / IC Plus Corp IC Plus IP100A Integrated 10/100 Ethernet MAC + PHY (rev 31)
但接口列表中仍未显示接口。因此,我假设系统中未安装驱动程序,并尝试从他们提供的 CD 中安装它们。当我尝试make
源文件时,它给出错误提示
gcc -D__KERNEL__ -DMODULE -O -Wall -Wstrict-prototypes -I/usr/include -DUSE_IO_OPS -D_COMPAT_WITH_OLD_KERNEL -c -o sundance_main.o sundance_main.c sundance_main.c:192:26: fatal error: linux/module.h: No such file or directory #include <linux/module.h> ^ compilation terminated.
我还发现以前也发生过类似的问题,但很遗憾看到这些问题没有得到解决。如果有人能帮助我解决这个问题,我将不胜感激。
答案1
这个网卡比较老了,sundance 驱动程序EL7 不再支持。网卡供应商提供的驱动程序适用于更老版本的内核,不太可能在现代系统上运行。只需购买 10 美元的千兆位网卡,而无需花费超过 10 美元的人工成本来尝试实现这一点。
答案2
要将 vanilla 内核支持的驱动程序模块添加到 CentOS 7,您需要将缺失的源添加到 CentOS 内核树并通过执行以下操作来编译所需的模块:
使用以下命令安装构建内核的先决条件:
yum group install "Development Tools"
yum install kernel-headers kernel-devel gcc ncurses-devel rsync bc
从以下位置下载正在运行的内核源代码http://vault.centos.org/。在本例中,我们将下载3.10.0-229.20.1.el7.x86_64内核使用:
wget http://vault.centos.org/7.1.1503/centosplus/Source/SPackages/kernel-plus-3.10.0-229.20.1.el7.centos.plus.src.rpm
下载 rpm 文件后(到你的主目录或临时目录),使用以下命令提取内容:
rpm2cpio kernel-plus-3.10.0-229.20.1.el7.centos.plus.src.rpm | cpio -idmv
最后,包含实际内核源代码的存档应出现在当前目录中。使用以下命令将其提取:
tar xJvf linux-3.10.0-229.20.1.el7.tar.xz
现在你需要将内核源中缺少的文件添加到你的/usr/src/内核. 我们将使用 rsync 将文件从提取的内核递归复制到您的系统而不覆盖:
rsync -r --ignore-existing --include=* linux-3.10.0-229.20.1.el7/ /usr/src/kernels/3.10.0-229.20.1.el7.x86_64
现在进入你的内核目录/usr/src/内核/3.10.0-229.20.1.el7.x86_64并选择您想要添加到系统中的缺失模块,运行以下命令:
make menuconfig
对于 Sundance Technology Inc / IC Plus Corp IC Plus IP100A 以太网卡,请转到
设备驱动程序 -> 网络设备支持 -> 以太网驱动程序支持 -> D-Link 设备
并选择“米“ 旁边 ”圣丹斯阿尔塔 (Sundance Alta) 支持“。
对于其他驱动程序,您可以按“/”键进行搜索。
保存内核配置后,通过运行以下命令构建您选择的模块:
make prepare
make modules_prepare
make M=module/subdirectory/in/the/kernel/tree
对于 Sundance 卡,命令是:
make M=drivers/net/ethernet/dlink
并复制结果*.ko文件到您的/lib/模块/额外目录
对于 Sundance 卡,命令是:
cp drivers/net/ethernet/dlink/sundance.ko /lib/modules/extra
或者,您可以构建整个内核,然后使用以下命令自动安装缺少的模块:
make
make modules_install
(不过,这可能需要几个小时,因此我建议只编译您需要的模块 - 这样添加模块只需要几分钟)