基于 D-Link DL2000 的千兆以太网适配器安装¶
2002 年 5 月 23 日
兼容性列表¶
适配器支持
D-Link DGE-550T 千兆以太网适配器。
D-Link DGE-550SX 千兆以太网适配器。
基于 D-Link DL2000 的千兆以太网适配器。
该驱动支持 Linux 内核 2.4.7 及更高版本。我们已经在以下环境中进行了测试。
. Red Hat v6.2 (更新内核到 2.4.7) . Red Hat v7.0 (更新内核到 2.4.7) . Red Hat v7.1 (内核 2.4.7) . Red Hat v7.2 (内核 2.4.7-10)
快速安装¶
按照以下命令安装 Linux 驱动程序
1. make all
2. insmod dl2k.ko
3. ifconfig eth0 up 10.xxx.xxx.xxx netmask 255.0.0.0
^^^^^^^^^^^^^^^\ ^^^^^^^^\
IP NETMASK
现在 eth0 应该处于活动状态,您可以通过“ping”对其进行测试,或者通过“ifconfig”获取更多信息。 如果测试通过,请继续下一步。
cp dl2k.ko /lib/modules/`uname -r`/kernel/drivers/net
将以下行添加到 /etc/modprobe.d/dl2k.conf
alias eth0 dl2k
运行
depmod
以更新模块索引。运行
netconfig
或netconf
以创建位于 /etc/sysconfig/network-scripts 的配置文件 ifcfg-eth0,或者手动创建它。[请参阅 - 配置文件示例]
驱动程序将在下次启动时自动加载和配置。
编译驱动程序¶
在 Linux 中,NIC 驱动程序最常配置为可加载模块。 构建单内核的方法已经过时。 驱动程序可以作为单内核的一部分进行编译,但不强烈建议这样做。 本节的其余部分假定驱动程序构建为可加载模块。 在 Linux 环境中,从源代码重建驱动程序而不是依赖于预编译版本是一个好主意。 这种方法提供了更好的可靠性,因为预编译的驱动程序可能依赖于给定 Linux 安装中不存在的库或内核功能。
构建 Linux 设备驱动程序所需的 3 个文件是 dl2k.c、dl2k.h 和 Makefile。 要编译,Linux 安装必须包括 gcc 编译器、内核源代码和内核头文件。 Linux 驱动程序支持 Linux 内核 2.4.7。 将文件复制到目录中,然后输入以下命令来编译和链接驱动程序
CD-ROM 驱动器¶
[root@XXX /] mkdir cdrom
[root@XXX /] mount -r -t iso9660 -o conv=auto /dev/cdrom /cdrom
[root@XXX /] cd root
[root@XXX /root] mkdir dl2k
[root@XXX /root] cd dl2k
[root@XXX dl2k] cp /cdrom/linux/dl2k.tgz /root/dl2k
[root@XXX dl2k] tar xfvz dl2k.tgz
[root@XXX dl2k] make all
软盘驱动器¶
[root@XXX /] cd root
[root@XXX /root] mkdir dl2k
[root@XXX /root] cd dl2k
[root@XXX dl2k] mcopy a:/linux/dl2k.tgz /root/dl2k
[root@XXX dl2k] tar xfvz dl2k.tgz
[root@XXX dl2k] make all
安装驱动程序¶
手动安装¶
编译驱动程序后,必须加载、启用该驱动程序并将其绑定到协议栈,才能建立网络连接。 要加载模块,请输入命令
insmod dl2k.o或
insmod dl2k.o <optional parameter> ; add parameter
示例
insmod dl2k.o media=100mbps_hd or:: insmod dl2k.o media=3 or:: insmod dl2k.o media=3,2 ; for 2 cards
请参考下面 Linux 设备驱动程序支持的命令行参数列表。
insmod 命令仅加载驱动程序,并为其提供 eth0、eth1 等形式的名称。 要使 NIC 进入可操作状态,有必要发出以下命令
ifconfig eth0 up最后,要将驱动程序绑定到活动协议(例如,使用 Linux 的 TCP/IP),请输入以下命令
ifup eth0请注意,只有当系统可以找到包含必要网络信息的配置文件时,这才有意义。 下一段将给出一个示例。
卸载驱动程序的命令如下
ifdown eth0 ifconfig eth0 down rmmod dl2k.o以下是列出当前加载的模块和查看当前网络配置的命令
lsmod ifconfig
自动安装¶
本节介绍如何安装驱动程序,以便在启动时自动加载和配置它。 以下描述基于 Red Hat 6.0/7.0 发行版,但它也可以轻松移植到其他发行版。
Red Hat v6.x/v7.x¶
将 dl2k.o 复制到网络模块目录,通常是 /lib/modules/2.x.x-xx/net 或 /lib/modules/2.x.x/kernel/drivers/net。
找到引导模块配置文件,最常见的是 /etc/modprobe.d/ 目录。 添加以下行
alias ethx dl2k options dl2k <optional parameters>其中 ethx 将是 eth0(如果 NIC 是唯一的以太网适配器),如果是其他以太网适配器,则为 eth1,依此类推。 有关可选参数列表,请参阅上一节中的表格。
找到网络配置文件,通常是 /etc/sysconfig/network-scripts 目录,并创建一个包含网络信息的配置文件 ifcfg-ethx。
请注意,对于大多数 Linux 发行版,包括 Red Hat,都提供了一个带有图形用户界面的配置实用程序来执行上述步骤 2 和 3。
参数说明¶
您可以安装此驱动程序,而无需任何其他参数。 但是,如果您要使用大量功能,则必须设置额外的参数。 以下是 Linux 设备驱动程序支持的命令行参数列表。
mtu=packet_size |
指定最大数据包大小。 默认为 1500。 |
||||||||||||||||||||||||||
media=media_type |
指定 NIC 运行的介质类型。 autosense 自动检测活动介质。
默认情况下,NIC 以自动检测模式运行。 1000mbps_fd 和 1000mbps_hd 类型仅适用于光纤适配器。 |
||||||||||||||||||||||||||
vlan=n |
指定 VLAN ID。 如果 vlan=0,则禁用虚拟局域网 (VLAN) 功能。 |
||||||||||||||||||||||||||
jumbo=[0|1] |
指定巨型帧支持。 如果 jumbo=1,则 NIC 接受巨型帧。 默认情况下,此功能已禁用。 巨型帧通常会提高千兆位的性能。 此功能需要巨型帧兼容的远程主机。 |
||||||||||||||||||||||||||
rx_coalesce=m |
每个中断处理的 rx 帧数。 |
||||||||||||||||||||||||||
rx_timeout=n |
Rx DMA 等待中断的时间。 如果设置 rx_coalesce > 0,则硬件仅为 m 帧声明中断。 硬件不会声明 rx 中断,直到收到 m 帧或达到 n * 640 纳秒的超时时间。 设置适当的 rx_coalesce 和 rx_timeout 可以减少拥塞崩溃和过载,这一直是高速网络的瓶颈。 例如,rx_coalesce=10 rx_timeout=800。 也就是说,硬件仅为收到的 10 帧或 512 微秒的超时声明 1 个中断。 |
||||||||||||||||||||||||||
tx_coalesce=n |
每个中断处理的 tx 帧数。 设置 n > 1 可以减少中断拥塞,通常会降低高速网卡的性能。 默认为 16。 |
||||||||||||||||||||||||||
tx_flow=[1|0] |
指定 Tx 流量控制。 如果 tx_flow=0,则禁用 Tx 流量控制,否则驱动程序会自动检测。 |
||||||||||||||||||||||||||
rx_flow=[1|0] |
指定 Rx 流量控制。 如果 rx_flow=0,则启用 Rx 流量控制,否则驱动程序会自动检测。 |
配置文件示例¶
这是一个简单的配置文件示例
DEVICE=eth0
USERCTL=no
ONBOOT=yes
POOTPROTO=none
BROADCAST=207.200.5.255
NETWORK=207.200.5.0
NETMASK=255.255.255.0
IPADDR=207.200.5.2
故障排除¶
Q1. 源文件在每一行后面都包含 ^ M。
确保所有文件都是 Unix 文件格式(没有 LF)。 尝试以下 shell 命令来转换文件
cat dl2k.c | col -b > dl2k.tmp mv dl2k.tmp dl2k.c或
cat dl2k.c | tr -d "\r" > dl2k.tmp mv dl2k.tmp dl2k.c
Q2:无法找到头文件 (*.h
)?
要编译驱动程序,您需要内核头文件。 安装内核源代码后,头文件通常位于 /usr/src/linux/include 中,这是 Makefile 中配置的默认 include 目录。 对于某些发行版,/usr/src/include/linux 和 /usr/src/include/asm 中都有头文件的副本,您可以将 Makefile 中的 INCLUDEDIR 更改为 /usr/include,而无需安装内核源代码。
请注意,RH 7.0 在 /usr/include 中没有提供正确的头文件,包括这些文件将导致错误的驱动程序版本。