5. 编译和安装驱动程序

安装的首要条件是你必须拥有内核源代码,位于/usr/src/linux/目录(参见 7.7 节),并且必须已经配置过。也就是说,你应当已经在此目录下执行过 bash$ make configurebash$ make dep 命令。

在执行这些操作时,请确保你拥有当前运行内核的源代码...例如,如果你正在运行内核 2.4.8,但你在/usr/src/linux/目录中拥有的是内核 2.4.9 的源代码,那么驱动程序将无法工作。

此外,你必须配置内核以支持 isapnp 和 pnp,并确保你没有 smp/单处理器 不匹配的情况(即,运行的是单处理器内核,但内核源代码在 /usr/src/linux 中却带有 smp 支持)。另外,你还需要一个支持可加载模块的内核。

当然,你还需要安装 gcc,可以通过发出命令 bash$ gcc -v 来检查。如果你没有收到任何错误信息,那么一切正常。

Note

如果你安装了 gcc 3 或更高版本,并且在编译期间遇到问题,请参考 FAQ 中的 此节

5.1. 安装 2.2x 驱动程序。

以 root 用户身份登录。

使用命令 bash$ uname -r 确保你拥有 2.2.x 内核。

使用

bash$ ls

命令检查下载的文件是否在当前目录中。然后使用命令解压下载的文件

bash$ tar -xzvf pctel-2.2.tar.gz

解压后,你将得到一个~/pctel目录。

使用命令移动到该目录

bash$ cd pctel/

现在有一个 (install.sh) 安装脚本,这将使接下来的工作更加容易。

使用命令使此脚本可执行

bash$ chmod +x install.sh

然后,只需运行该脚本

bash$ ./install.sh

你将看到许多消息快速闪过,因为相应的设备文件/节点在 /dev/ 目录中被创建,驱动程序文件被解压,然后被编译并加载到内存中。

一旦该过程完成且没有任何错误消息(如果你收到任何错误,请转到故障排除部分),你将发现一个名为lib/的新目录已在~/pctel/目录下创建。这个~/pctel/lib/目录包含可以加载到内核中的驱动程序/模块。

如果你移动到~/pctel/lib/目录,使用

bash$ cd ~/pctel/lib/

命令,并执行 bash$ ls,你将在那里找到两个文件,一个名为 pctel.o,另一个名为 ptserial.o

这两个模块是要加载以使调制解调器工作的模块。

要加载模块,你必须发出以下命令

bash$ insmod pctel.o

bash$ insmod ptserial.o

~/pctel/lib/目录。

(install.sh 脚本会自动执行此操作,因此在运行脚本后,你无需执行 insmod 部分,但是一旦你重新启动,你将不得不通过以下方式加载模块

bash$ cd `你的 pctel 目录`/lib/

bash$ insmod pctel.o

bash$ insmod ptserial.o)

5.2. 安装 pctel-0.9.6 驱动程序

使用命令确保你拥有内核 2.4.0 或更高版本

bash$ uname -r

使用以下命令解压下载的文件

bash$ tar -xzvf pctel-0.9.6.tar.gz

现在你将拥有一个 pctel-0.9.6 目录

使用以下命令 cd 进入该目录

bash$ cd pctel-0.9.6/

现在是复杂的部分。

要继续进行,你必须知道你的调制解调器具有什么芯片组。请参阅 9.4 节以获取更多信息。

一旦你获得了芯片组的名称,只需键入以下命令之一(取决于芯片组)

如果你有 PCT 789 芯片组,

bash$ ./configure --with-hal=pct789

如果你有 CM8738 芯片组,

bash$ ./configure -with-hal=cm8738

如果你有一个与基于 i8** 芯片组的盒子集成的芯片组,

bash$ ./configure --with-hal=i8xx

如果你有一个与基于 VIA 686a 芯片组的主板集成的芯片组,

bash$ ./configure --with-hal=via686a

configure 脚本将运行,并且许多消息将快速闪过。检查是否有任何错误消息闪过。当你再次获得提示符时(并且如果你没有收到任何错误),使用命令编译驱动程序

bash$ make

然后,如果你没有收到任何错误消息,请使用命令安装驱动程序

bash$ make install

(执行最后一步时,你必须以 root 用户身份登录)

然后只需使用以下命令加载驱动程序

bash$ insmod pctel

bash$ insmod ptserial

注意:这些命令可以从任何目录发出,因为 insmod 程序将自动在/lib/modules/`你的内核版本`/misc/)

Note

中查找驱动程序 pctel.optserial.o注意:如果你收到一条消息,显示configure: error: You must have linux kernel >= 2.4.0 installed

但是,如果你有 AMR 调制解调器,那么你将必须使用 0.9.6 驱动程序。

5.3. 安装 pctel-0.8.6 驱动程序

Caution

仅当你使用 pctel-0.9.6 驱动程序遇到问题时才使用此驱动程序

使用命令确保你拥有内核 2.4.0 或更高版本

bash$ uname -r

使用以下命令解压下载的文件

bash$ tar -xzvf 0.8.6.tar

现在你将拥有一个 pctel-0.8.6 目录

使用以下命令 cd 进入该目录

bash$ cd pctel-0.8.6/

现在是复杂的部分。

要继续进行,你必须知道你的调制解调器具有什么芯片组。请参阅 9.4 节以获取更多信息。

一旦你获得了芯片组的名称,只需键入以下命令之一(取决于芯片组)

如果你有 PCT 789 芯片组,

bash$ ./configure --with-hal=pct789

如果你有 CM8738 芯片组,

bash$ ./configure -with-hal=cm8738

如果你有一个与来自 Intel 的基于 Intel 810 芯片组的主板集成的芯片组,

bash$ ./configure --with-hal=i810intel

如果你有一个与来自 SIS 的基于 Intel 810 芯片组的主板集成的芯片组,

bash$ ./configure --with-hal=i810sis

如果你有一个与基于 VIA 686a 芯片组的主板集成的芯片组,

bash$ ./configure --with-hal=via686a

configure 脚本将运行,并且许多消息将快速闪过。检查是否有任何错误消息闪过。当你再次获得提示符时(并且如果你没有收到任何错误),使用命令编译驱动程序

bash$ make

然后,如果你没有收到任何错误消息,请使用命令安装驱动程序

bash$ make install

(执行最后一步时,你必须以 root 用户身份登录)

然后只需使用以下命令加载驱动程序

bash$ insmod pctel

bash$ insmod ptserial

(与 pctel-0.9.6 驱动程序的情况一样,这些命令也可以从任何目录发出,因为 insmod 程序将自动在/lib/modules/`你的内核版本`/misc/)