此处列出的所有内核驱动程序均作为内核模块发布;因此,您必须确保拥有一个支持模块的内核。此外,应启用“模块版本”支持,以帮助使用版本不匹配的内核和模块,如下所述。如果您使用的是来自较新 Linux 发行版的内核,则很可能已经启用了此类模块支持。如果您自己编译内核,那么您应该已经知道如何通过 Kernel HOWTO 启用模块。在任何情况下,您都可以检查以确保您的内核配置文件(通常位于 /usr/src/linux
下)中存在以下设置
CONFIG_MODULES=y CONFIG_MODVERSIONS=y
如果您有 ISA 即插即用调制解调器,则很可能需要使用 isapnptools 为调制解调器卡分配资源。为此,您需要安装 isapnptools,并在 /etc/isapnp.conf
文件中为调制解调器添加条目。您应该阅读手册页和 Plug-and-Play-HOWTO,但如果您没有其他需要关心的 ISA 设备,那么基本上您只需要执行以下操作
pnpdump
以基于探测到的卡和您系统当前的资源使用情况生成一个原型 isapnp.conf 文件。isapnp.conf
包括
(CONFIGURE ACRd119/1 (LD 0 (INT 0 (IRQ 11 (MODE +E))) (IO 1 (SIZE 8) (BASE 0x0100) (CHECK)) (NAME "ACRd119/1[0]{LT Win Modem }") # (ACT Y) ))奇怪的是,至少在这种情况下,有必要将
#(ACT Y)
注释掉。如果一种方式对您不起作用,请尝试另一种方式。/etc/isapnp.conf
pnpdump
输出中给出的其他选项。(请注意,如果您使用正确的标志运行 isapnp
,则可能没有必要重启。但是,对于初学者来说,此时简单地重启是最容易的。)
如果您想了解关于您的 PCI 调制解调器的更多信息,而不仅仅是 cat /proc/pci
提供的,那么软件软件包 pciutils
中的实用程序非常有用,例如 scanpci
和 lspci
。 特别是,lspci -vv
提供了许多有用的信息。
以下命令在处理模块时非常有用。许多命令需要 root 权限。有关这些命令的更详细信息,请参阅手册页(例如,man insmod
)。
版本匹配的内核模块通常应使用命令 modprobe
模块名称插入;modprobe
将尝试插入您的模块所依赖的任何其他模块(由 depmod
确定,如下所述)。
可以使用命令 insmod
模块名称插入单个模块(不包括其依赖的模块)。如果该模块是在与当前内核不同的内核下编译的,则 insmod
将报告版本不匹配并拒绝加载该模块。但是,可以传递一个标志来强制模块加载,尽管存在不匹配:insmod -f
模块名称。如果模块使用的内核接口实际上没有随内核版本而更改,则该模块将被插入并且可能在某种程度上起作用。
例如,ESS 调制解调器模块 esscom.o
就是这种情况,它虽然在 2.2.12 下编译,但可以强制插入到更高版本的内核中,并且在内核版本 2.2.14 之前(或更低)在某种程度上可以正常工作,而无需进一步更改;在 2.2.15 之后,需要下面描述的 tty.h
的补丁。然而,即使强制插入对于 2.4 系列的内核也失败。
模块在使用后可以通过发出命令 rmmod
来卸载(从内核中移除)。
depmod
命令分析模块依赖性。预编译模块与运行内核的兼容性可以使用如下命令进行检查
depmod -e ltmodem.o对于在内核 2.2.12 下编译的 ltmodem.o 模块与运行内核 2.2.17 的具体示例,返回的信息包括