这里列出了一系列您可能遇到的常见问题,以及它们可能的解决方案。
如果发生这种情况,您将需要修补您的 configure 脚本。下载文件configure.patch从 这里 并给出命令
cat configure.patch | patch -p0
![]() | 我假设您在 pctel-0.9.6 目录中,并且configure.patch也在该目录中 |
您需要在/usr/src/linux/
下安装内核源代码。如果您将内核源代码安装在其他位置,只需创建适当的符号链接。(有关更多信息,请参阅 7.7 节)如果您已将其安装在/usr/src/linux/下,运行
bash$ make config
bash$ make dep
在/usr/src/linux/
8.1.4. 我使用 gcc 3,在编译时,我收到一个错误,如下所示<command line>:1:13: multi-line string literals are deprecated make[3]: *** [ptserial.o] Error 1.
这不应该再发生,因为 pctel-0.9.6 驱动程序的发布就是为了解决这个问题。但是,如果您仍然遇到此类问题(使用旧版本的驱动程序或其他类似情况),您将必须编辑文件<您的 pctel 目录>src/ptserial/Makefile。在该文件中,找到说
CFLAGS = -D__KERNEL__ -Werror -Wno-trigraphs -fno-common -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe -fno-strength-reduce -DMODULE -DMODVERSIONS -DEXPORT_SYMTAB -D$(HAL_TARGET) $(AUDIO_ROUTING) -DBUILD_SYSTEM=\""$(BUILD_SYSTEM)\"" -DGCC_VERSION=\""$(GCC_VERSION)\"" -I$(top_srcdir)/include -I$(KERNEL_INCLUDES) -include $(KERNEL_INCLUDES)/linux/modversions.h |
的那一行并将其更改为
CFLAGS = -D__KERNEL__ -Wno-trigraphs -fno-common -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe -fno-strength-reduce -DMODULE -DMODVERSIONS -DEXPORT_SYMTAB -D$(HAL_TARGET) $(AUDIO_ROUTING) -DBUILD_SYSTEM=\""$(BUILD_SYSTEM)\"" -DGCC_VERSION=\""$(GCC_VERSION)\"" -I$(top_srcdir)/include -I$(KERNEL_INCLUDES) -include $(KERNEL_INCLUDES)/linux/modversions.h |
....然后重新编译。
![]() | 如果您找不到文件src/ptserial/Makefile,则运行 configure 脚本,然后重试。 |
或者,您也可以尝试 http://www.geocities.com/jcmp3/ 上的预编译(特定于发行版)驱动程序。请注意,我个人没有测试过这些驱动程序,并且我对它们了解不多。
请参阅 之前 的问题 (8.1.4) 的答案。
首先,检查您是否在加载 pctel.o 之后才加载 ptserial.o。
如果这不能解决问题,那么可能是您为错误的内核版本编译了模块。使用命令检查您的内核版本
bash$ uname -r
然后验证您是否在/usr/src/linux.
中拥有正确的文件。此外,如果您有一个用于单处理器机器的正在运行的内核,并且在/usr/src/linux/中具有配置为支持 smp 的内核源代码,那么您将收到 unresolved symbols 错误。检查您是否具有 smp 支持源的一种方法是在/usr/src/linux/中运行 bash$ make menuconfig ,并查看是否选择了 smp 支持。
解决 unresolved symbols 问题的另一种方法是使用来自 http://linmodems.technion.ac.il/pctel-linux/fixscript.gz 的 fixscript 包
步骤是
使用以下命令解压缩下载的文件
bash$ gzip -d fixscript.gz
使其可执行,使用
bash$ chmod +x fixscript
运行它,使用
bash$ ./fixscript old_module.o new_module.o
这将创建新模块,您可以尝试使用以下命令加载它
bash$ insmod new_module.o
如果 fixscript 报告类似这样的错误
objcopy: --redefine-sym: Symbol x is target of more than one redefinition
那么,fixscript 无法帮助您。
最好的方法当然是修复您的内核源代码并重新编译驱动程序。
确保您执行了
bash$ make clean
然后再重新编译。
您必须以 root 用户身份登录才能加载驱动程序,否则,您也可以输入
bash$ su
命令,然后加载驱动程序。
8.2.3. 我收到一个Warning: loading /lib/modules/2.4.19/misc/ptserial.o will taint the kernel: non-GPL license - GPL linked with proprietary libraries消息,在加载模块时。
此消息只是通知您,您正在加载一个 Linux 内核开发者不支持的专有模块。它也作为警告,表明驱动程序尚未经过内核的官方测试,并且可能会导致问题,并告诉您,如果在加载这些专有驱动程序后遇到系统不稳定或任何其他问题,您不应向内核开发者发送错误报告。
![]() | 请记住,这 不是 错误消息 - 它只是通知您正在使用不受支持的模块。 |
8.2.4. 我收到一个The module you are trying to load (/lib/modules/2.4.18-14/misc/pctel.o) is compiled with a gcc version 2 compiler, while the kernel you are running is compiled with a gcc version 3 compiler. This is known to not work.消息,在加载模块时。
尝试使用 insmod -f pctel 和 insmod -f ptserial 命令而不是普通的 insmod pctel 和 insmod ptserial 来加载模块。
![]() | 请记住,这不是一个非常好的hack。 |
首先,检查您是否真的加载了驱动程序。您可以使用以下命令执行此操作
bash$ lsmod
此命令列出您已加载的所有模块,如果您看到类似
Module Size Used by ptserial 47472 0 (unused) pctel 1211808 0 [ptserial] |
的内容,则表示模块已正确加载。
如果不是,只需加载它们并重试。
还要检查文件 /dev/modem 是否符号链接到 /dev/ttyS15
请记住,即使 msdos 或 Microsoft Windows 告诉您调制解调器在 com 3 或 com 4 中,在 GNU/Linux 中,驱动程序也会使其出现在 /dev/ttyS15 中(Microsoft 等效项将是 com 16!!)
如果您有疑问,我建议您使用以下命令重新创建设备文件
bash$ rmmod ptserial
bash$ rmmod pctel
bash$ rm /dev/ttyS15 �/dev/modem
bash$ mknod /dev/ttyS15 c 62 79
注意:/devttyS15 之后的数字是特定于发行版的,c 62 79 适用于 Red Hat Linux 及其衍生版本。如果您有任何其他发行版,请查看您的文档。
bash$ chgrp uucp /dev/ttyS15
bash$ chmod 666 �/dev/ttyS15
bash$ ln -s /dev/ttyS15 /dev/modem
这是 kernel 2.4x 系列驱动程序的一个 bug
有关更多信息,请参阅 7.6 节。
这通常可以通过将 ATX3 添加到您的调制解调器初始化字符串来解决。添加 ATX3 初始化字符串的过程因您使用的拨号器而异。例如,如果您使用 wvdial,您需要在文件Init2行末尾添加 X3/etc/wvdial.conf。另一方面,如果您使用 KPPP,您将需要在初始化字符串 1字段中添加 ATX3,该字段可以在调制解调器命令部分的调制解调器的设置KPPP 的对话框中找到。
错误
首先,检查驱动程序是否已加载,然后再查看是否有任何程序正在使用调制解调器。如果一切似乎都正常,请尝试使用以下命令找出调制解调器的 irq
bash$ lspci -v
如果列出的 irq 明显不正确(例如 0)(或者与您的 M$-Windows 配置不符),则可以使用 setserial 命令
bash$ setserial /dev/ttyS15 irq * (其中 * 是您的调制解调器的 irq)
或调整 BIOS 设置(请参阅 7.8 节)
命令的输出
bash$ tail /var/log/messages
Nov 11 10:50:24 localhost kernel: PCTel device[00:09.0](0x48) found "PCTel Inc HSP MicroModem 56 (rev 01)", iobase=0xe400, irq=12. Nov 11 10:50:24 localhost kernel: PCTel driver version 0.9.5 [5.05c-4.27.215 (09-14-2001)] (PCT789) (2002-01-31) with MANY_PORTS SHARE_IRQ SERIAL_PCI enabled. Nov 11 10:50:24 localhost kernel: PCTel driver built on [Linux 2.4.18-14 i686 i686 "2.4.18-14 <132114>"] with gcc-gcc (GCC) 3.2 20020903 (Red Hat Linux 8.0 3.2-7). Nov 11 10:50:24 localhost kernel: ttyS15 at 0xe400 (irq = 12) is a PCTel |
如果出现任何问题,将为您提供大量信息。正常输出应如下所示将您获得的输出邮件发送到<discuss@linmodems.org>
上一页 | 列表(有关此列表的更多信息,请参阅 9.2.2 节),并等待回复。 | 下一页 |
主页 | 一些其他需要注意的点。 |