3. 配置内核

3.1. 需求

一些显而易见的东西是必需的,例如一台电脑、USB 端口、Handspring Visor (带 USB 底座)。您还应该知道如何编译和安装程序以及内核。如果您不知道,您有几个选择:学习,请您的常驻专家帮助您,或者获取一个为您准备好一切的发行版。

如果您的电脑没有 USB 控制器,那么您需要购买 Visor 的串行底座(但您将不需要本文档),或者为您的电脑购买支持 USB 的设备(即,附加卡或新主板)。

3.2. 内核版本

linux 内核版本 v2.4 是第一个支持 USB 的版本。您可以从以下地址获取最新的 v2.4 内核:ftp://ftp.kernel.org/pub/linux/kernel/v2.4/

USB 代码已被反向移植到 v2.2 内核,从 v2.2.18 版本开始。如果您必须使用 v2.2 内核,您应该也能够按照相同的说明进行操作。

现在是下载最新内核并根据您的意愿配置的好时机。以下是您配置 USB 所需的说明。

如果您已经编译并安装了内核,您应该不需要重启!我们只需要编译并安装适当的模块,我们就一切就绪了。

3.3. USB 控制器类型

首先要做的是确定您拥有的 USB 主机控制器的类型。USB 主机控制器是您计算机中处理 USB 输入/输出的硬件。

基于英特尔芯片组的主板通常是 UHCI 控制器。大多数附加卡是 OHCI 控制器。您可以使用以下命令(以 root 用户身份)确定可用的 USB 硬件类型

lspci -v

如果您看到类似以下的条目

USB Controller: ......
Flags: .....
I/O ports at ....

那么您拥有一个基于 UHCI 的控制器。如果您看到类似以下的条目

USB Controller: .....
Flags: ....
Memory at .....

那么您拥有一个基于 OHCI 的控制器。您可以参考 http://www.linux-usb.org 了解更多详情。内核文档/usr/src/linux/Documentation/usb/usb.txt也可能有助于确定您拥有的控制器类型。

3.4. 配置/构建内核

现在我们需要配置和构建您的内核。在配置期间,请确保启用以下条目。您可以将它们直接编译到您的内核中,也可以作为模块编译。强烈建议您将它们编译为模块。如果您直接编译到内核中,您将需要重启。

有两个 UHCI 驱动程序。您不想要“UHCI Alternate (JE)”驱动程序。此驱动程序尚不支持 Visor 使用的所有 USB 功能。因此,您将无法使用此驱动程序进行同步。如果您看不到原始驱动程序,请确保未选择 UHCI-JE 驱动程序,然后您应该会看到两个驱动程序的选项。

在这里,您应该决定是否要包含 Hotplug 支持。有了 Hotplug 支持,您只需按下 Hotsync 按钮即可自动同步您的 visor。在选择此路径之前,请参阅 hotplug 部分,尤其是 Hotplug 内核配置

根据需要编译和安装。不要忘记运行 lilo。如果您正在安装新的内核镜像,请不要立即重启。

3.5. usbdevfs

usbdevfs 将有关您的 USB 总线的信息放入/proc目录树中。这是一件好事,尤其对调试非常有用。您可以通过将以下行添加到您的/etc/fstab.

none  /proc/bus/usb  usbdevfs  defaults  0  0

中来启用它。如果您安装了新的内核镜像,您可以从现在开始重启。记住,如果您只是将 USB 信息作为模块添加,则无需重启。

3.6. 创建/dev条目

如果您的 linux 发行版不附带 USB Visor 支持,或者您没有使用 devfs (与 usbdevfs 不同),您将需要创建 USB tty 设备。

如果您正在使用 devfs,这些设备会在/dev/usb/tts/{0,1,...}下自动创建;因此您可以跳到 使用模块

如果您没有使用 devfs,您可以以 root 用户身份执行以下命令来创建设备

            mknod /dev/ttyUSB0 c 188 0
            mknod /dev/ttyUSB1 c 188 1
            mknod /dev/ttyUSB2 c 188 2
            mknod /dev/ttyUSB3 c 188 3
            etc...
            chmod 666 /dev/ttyUSB*
            

您最多可以有 255 个连接/端口/设备,但除非您有多个 USB 串行设备,否则您可能只需要前几个。chmod 是为了允许用户能够访问 Visor 设备。本文档的作者认为这对于个人电脑来说应该是安全的。多用户计算机可能需要查看此方面的安全性(请告知我)。

当 Visor 连接时,会打开两个“端口”。(对于大多数人来说,这将是/dev/ttyUSB0,和/dev/ttyUSB1)。第一个端口(零)是通用连接。第二个端口是 hotsync 端口。此功能允许未来的发展;例如,从 Visor 导出文件系统。一个有用的做法是创建到 hotsync 端口的链接,以便同步软件默认使用适当的设备。您可以通过以下方式执行此操作

            cd /dev
            ln -s /dev/ttyUSB1 pilot
            ln -s /dev/ttyUSB1 palm
            

软件包 pilot-xfer 使用/dev/pilot作为默认值。coldsync 默认为/dev/palm。根据需要创建设备和链接。只是为了好玩,您可能还想创建一个从/dev/visor/dev/ttyUSB1的链接,只是,嗯,因为我们有一个 visor,而不是 pilot(或 Palm(tm))。实际的设备编号可能会更改,具体取决于您的系统上有多少(活动的?)USB 串行设备。包含实际使用设备的的消息会输入到 syslog 中。最终,我们的想法是在/proc文件系统中创建一个包含所需信息的条目。

3.7. 使用模块

对于将 USB 代码编译为模块的人员,您还需要将模块插入到正在运行的内核中。当您想使用 visor 时,您需要以 root 用户身份运行以下命令

            /sbin/modprobe usb-uhci
            /sbin/modprobe usb-ohci
            /sbin/modprobe visor
            

一个重要的注意事项是,/dev/ttyUSB*的实际驱动程序/设备连接在按下 hotsync 按钮之前不会在内核内存中创建。因此,如果您在按下 hotsync 按钮之前尝试使用任何软件,它将无法工作。