如果你希望使用USB接口来接收数据,你的内核需要USB子系统支持,无论是 USB-ohci, USB-ehci, 还是你的系统偏好的任何USB主机控制器驱动类型。关于更深入的讨论,我建议你访问 Linux-USB 项目网站。
假设你已经有了USB子系统支持,为了确定你的内核是否支持 CDCEther (通信设备类以太网) 驱动作为一个模块,在 shell 中,以 root 权限执行命令 lsmod。
你应该看到类似于下面的输出,虽然一些条目已经被编辑过,如果你没有看到完全相同的条目,也不用太担心。
CDCEther 11040 0 (unused) usb-ohci 17888 0 (unused) usbcore 56768 1 [scanner CDCEther usb-ohci] |
如果你没有在模块列表中看到 CDCEther,尝试直接加载模块。
# modprobe CDCEther |
如果一切顺利,你应该在你的系统日志文件或者使用 dmesg 命令看到以下消息。
Mar 2 11:00:52 K7 kernel: CDCEther.c: 0.98.6 7 Jan 2002 Brad Hards and another Mar 2 11:00:52 K7 kernel: usb.c: registered new driver CDCEther |
如果你没有将其编译为模块,检查 dmesg 的输出 (你可能需要通过 'less' 或 'more' 管道来查看,例如:dmesg | less);如果驱动程序作为模块加载,你将在启动时看到类似于上述的消息。如果不是,并且你想使用此设备的USB通道,你将需要重新编译你的内核以支持它。你需要 2.4.3 或更高版本的内核。关于重新编译内核的详细说明,我建议你参考 Kernel-HOWTO。接下来显示的选项需要被选中。另外,你应该意识到将事物编译为模块,而不是静态地编译到内核中,会给你更大的控制权,并大大简化故障排除。
除了 第 2 节 中列出的 'TCP/IP 网络' 之外,以下内容应该在你的内核中的 'USB support' 菜单中编译 (假设你正在使用 menuconfig)。
USB 支持
USB 通信类以太网设备支持
现在我们必须选择正确的以太网接口 (/dev/ethX) 作为 DHCP 服务的接收者。如果你以 root 权限运行 ifconfig,你将得到一个打开的设备列表。
eth0 Link encap:Ethernet HWaddr 00:D0:09:DE:D4:6F inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0 BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) Interrupt:12 Base address:0xc400 |
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:5168 errors:0 dropped:0 overruns:0 frame:0 TX packets:5168 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1695104 (1.6 MiB) TX bytes:1695104 (1.6 MiB) |
...其中 eth0 是一个标准的 NIC (网卡),预配置了 IP 地址 192.168.1.1。
注意第一行的 HWaddr 字段,或者硬件地址。这与 MAC (媒体访问控制) 地址相同,我们将用它来为每个操作指定接口。如果你正在运行 Debian 系统,你可以修改/etc/network/interfaces文件,使其看起来像这样
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8) # The loopback interface auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 hwaddress ether 00:D0:09:DE:D4:6F auto eth1 iface eth1 inet dhcp hwaddress ether 00:04:BD:DE:42:0B |
需要 auto eth0 和 auto eth1 以在启动时配置接口。请注意,某些版本的 dhcp 客户端默认情况下总是抓取 eth0 作为 dhcpc 接口。因此,即使在完成上述所有操作之后,除非你专门运行 /sbin/dhcpcd-bin eth1,否则它将无法工作。在启动时执行此操作的简单方法是创建一个 init 脚本,以将 dhcp 地址加载到正确的接口。对于大多数发行版,这样的脚本位于/etc/rc.d或类似的位置。如果你有一个rc.local脚本,例如在 Slackware 中,你可以简单地将 /sbin/dhclient 添加到文件末尾。如果你有一个模型 rc.d 脚本 (例如/etc/init.d/skeleton在 Debian 中),你可以将其转换为这样的用途。无论哪种情况 (无论是手动在命令行中还是附加到 init 脚本),要运行的命令如下
# ifconfig ethX hw ether 00:D0:09:DE:D4:6F up |
你可以在下次重启后通过调用不带选项的 ifconfig 来确认它是否工作。