Logo

Linux 内核

6.13.0-rc6

快速搜索

目录

  • 开发流程
  • 提交补丁
  • 行为准则
  • 维护者手册
  • 所有开发流程文档
  • 核心 API
  • 驱动程序 API
  • 子系统
    • 核心子系统
    • 人机界面
    • 网络接口
      • 网络
      • NetLabel
      • InfiniBand
      • ISDN
      • MHI
    • 存储接口
    • 其他子系统
  • 锁定
  • 许可规则
  • 编写文档
  • 开发工具
  • 测试指南
  • 黑客指南
  • 跟踪
  • 故障注入
  • 实时修补
  • Rust
  • 管理
  • 构建系统
  • 报告问题
  • 用户空间工具
  • 用户空间 API
  • 固件
  • 固件和设备树
  • CPU 架构
  • 未分类文档
  • 翻译

本页

  • 显示源代码

基于 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”获取更多信息。如果测试正常,请继续下一步。

  1. cp dl2k.ko /lib/modules/`uname -r`/kernel/drivers/net

  2. 在 /etc/modprobe.d/dl2k.conf 中添加以下行

    alias eth0 dl2k
    
  3. 运行 depmod 更新模块索引。

  4. 运行 netconfig 或 netconf 创建位于 /etc/sysconfig/network-scripts 的配置文件 ifcfg-eth0,或手动创建它。

    [请参阅 - 配置文件示例]

  5. 驱动程序将在下次启动时自动加载和配置。

编译驱动程序¶

在 Linux 中,网卡驱动程序通常配置为可加载模块。构建单内核的方法已经过时。驱动程序可以作为单内核的一部分进行编译,但不建议这样做。本节的其余部分假设驱动程序是作为可加载模块构建的。在 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 等形式的名称。要使网卡进入可操作状态,必须发出以下命令

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¶

  1. 将 dl2k.o 复制到网络模块目录,通常是 /lib/modules/2.x.x-xx/net 或 /lib/modules/2.x.x/kernel/drivers/net。

  2. 找到启动模块配置文件,最常见的是在 /etc/modprobe.d/ 目录中。添加以下行

    alias ethx dl2k
    options dl2k <optional parameters>
    

    其中,如果网卡是唯一的以太网适配器,则 ethx 将为 eth0,如果安装了另一个以太网适配器,则为 eth1,依此类推。有关可选参数的列表,请参阅上一节中的表。

  3. 找到网络配置文件,通常是 /etc/sysconfig/network-scripts 目录,并创建一个名为 ifcfg-ethx 的配置文件,其中包含网络信息。

  4. 请注意,对于大多数 Linux 发行版(包括 Red Hat),都提供了一个带有图形用户界面的配置实用程序来执行上述步骤 2 和 3。

参数描述¶

您可以在不使用任何其他参数的情况下安装此驱动程序。但是,如果要使用广泛的功能,则必须设置额外的参数。以下是 Linux 设备驱动程序支持的命令行参数列表。

mtu=packet_size

指定最大数据包大小。默认值为 1500。

media=media_type

指定网卡工作的媒体类型。autosense 自动感应活动媒体。

10mbps_hd

10Mbps 半双工。

10mbps_fd

10Mbps 全双工。

100mbps_hd

100Mbps 半双工。

100mbps_fd

100Mbps 全双工。

1000mbps_fd

1000Mbps 全双工。

1000mbps_hd

1000Mbps 半双工。

0

自动感应活动媒体。

1

10Mbps 半双工。

2

10Mbps 全双工。

3

100Mbps 半双工。

4

100Mbps 全双工。

5

1000Mbps 半双工。

6

1000Mbps 全双工。

默认情况下,网卡以自动感应模式运行。1000mbps_fd 和 1000mbps_hd 类型仅适用于光纤适配器。

vlan=n

指定 VLAN ID。如果 vlan=0,则禁用虚拟局域网 (VLAN) 功能。

jumbo=[0|1]

指定巨型帧支持。如果 jumbo=1,则网卡接受巨型帧。默认情况下,此功能被禁用。巨型帧通常可以提高千兆网卡的性能。此功能需要与巨型帧兼容的远程端。

rx_coalesce=m

每次中断处理的接收帧数。

rx_timeout=n

接收 DMA 等待中断的时间。如果设置 rx_coalesce > 0,则硬件仅对 m 个帧断言中断。在接收到 m 个帧或达到 n * 640 纳秒的超时之前,硬件不会断言接收中断。设置适当的 rx_coalesce 和 rx_timeout 可以减少拥塞崩溃和过载,这一直是高速网络的瓶颈。

例如,rx_coalesce=10 rx_timeout=800。也就是说,硬件仅对接收到的 10 个帧断言 1 次中断,或超时 512 微秒。

tx_coalesce=n

每次中断处理的发送帧数。设置 n > 1 可以减少通常会降低高速网卡性能的中断拥塞。默认值为 16。

tx_flow=[1|0]

指定发送流控制。如果 tx_flow=0,则禁用发送流控制,否则驱动程序自动检测。

rx_flow=[1|0]

指定接收流控制。如果 rx_flow=0,则启用接收流控制,否则驱动程序自动检测。

配置文件示例¶

这是一个简单的配置文件的示例

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 中配置的默认包含目录。对于某些发行版,/usr/src/include/linux 和 /usr/src/include/asm 中有头文件的副本,您可以将 Makefile 中的 INCLUDEDIR 更改为 /usr/include,而无需安装内核源代码。

请注意,RH 7.0 未在 /usr/include 中提供正确的头文件,包括这些文件将生成错误版本的驱动程序。

©内核开发社区。| 由 Sphinx 5.3.0 & Alabaster 0.7.16 驱动 | 页面源代码