下一页 上一页 目录

10. FAQ: “编译和安装 Ftape” 相关问题!

10.1 我应该使用哪个 Ftape 版本?

始终使用最新的稳定版本,该版本_应该_可以从 ftp://sunsite.unc.edu/pub/Linux/kernel/tapeshttp://www-math.math.rwth-aachen.de/~LBFM/claus/ftape/ 获取

在撰写本文时,最新的稳定版本是 ftape-4.02

<Claus Heine 的回答>

10.2 我在使用 2.0.xx 内核的内置驱动程序时,XYZ 驱动器无法运行,我该如何解决?

2.0.xx 内核源代码中包含的默认 Ftape 版本是 2.08 或 2.09,非常过时。请从 Ftape 主页 更新到最新的 Ftape 驱动程序

<Tim Jones 的回答>

10.3 我正在运行 Linux/SMP,当尝试访问 Ftape 设备时系统会冻结!

您需要在 MCONFIG 文件中的 KERNEL_OPT 变量中添加 -D__SMP__。在较新的 ftape 版本中,您只需取消注释 MCONFIG 文件中的某一行。

<Claus Heine 的回答>

10.4 为什么 depmod 抱怨 “未定义的符号”?

忽略 depmod 错误消息。问题是 Ftape 模块 必须在 2.0.* 内核中编译,而无需版本校验和功能(即 CONFIG_MODVERSIONS)。即使模块与支持此功能的内核一起使用,这也不会引起问题;只是 depmod 错误地抱怨未定义的符号。忽略 depmod 的抱怨,并尝试插入模块,尽管有这些抱怨

modprobe zftape
如果这失败了,说明有些地方出错了。

<Claus Heine 的回答>

10.5 “insmod” 说内核版本错误

insmod 程序可以通过两种方式检查内核版本是否与编译 Ftape 的版本一致:它可以直接比较 Ftape 模块 中记录的内核版本号与正在运行的内核的版本,或者,如果内核和 Ftape 都是使用版本符号编译的,则比较使用的内核符号的版本。

如果您已将 GCC 版本升级到 v2.7.0 或更高版本,则必须使用 gcc v2.7.x 重新编译模块实用程序。

较新版本的 insmod 允许您“强制”将模块插入内核,即使版本字符串不正确。

<来自 Ftape-Howto>

10.6 “insmod” 说内核 1.2.0 和 1.2.0 不同

您是否记得将 ksyms.c 补丁应用于内核? 如果没有,请阅读源代码发行版中的 README.linux-1.2 文件。

<来自 Ftape-Howto>

10.7 尝试编译 Ftape 时出现错误 “modversions.h: 没有此文件或目录”

当内核在启用配置项 CONFIG_MODVERSIONS 的情况下编译时,将创建 modversions.h 文件。启用此选项后,将在 make dep 步骤中创建该文件。

另一个方便的提示是,make mrproper 将删除 /usr/include/linux/modversions.h。您需要重新配置内核并执行 make dep 才能找回该文件。

<来自 Ftape-Howto>

10.8 到底什么是版本符号?

当您在 `make config' 期间对 CONFIG_MODVERSIONS 说 “yes” 时,内核导出的所有符号,即:可加载模块可以 “看到” 的符号,都会被扩充,以包含跨调用/返回参数类型的校验和。这使得 insmod 能够检测自编译 Ftape 以来,内核中变量或函数的定义是否已更改。

这确保了高度的安全性,使您不会因为在内核中使用了过时的模块而导致内核崩溃。

如果您在内核中启用 CONFIG_MODVERSIONS,请确保您已

-DMODVERSIONS -include /usr/include/linux/modversions.h
Ftape Makefile 中的 MODULE_OPT 行中取消注释。相反,如果您未启用 CONFIG_MODVERSIONS,请确保您已将其注释掉。

<来自 Ftape-Howto>

10.9 我似乎得到的是 sftape 而不是 zftape。 当我运行 “ftmt status” 命令时,我得到的输出是 Ftape 文档中说的对应于 sftape 的输出 ( /dev/qft0: 无效的参数 )。为什么?

问题至少有两个可能的来源

<Claus Heins 的回答>

10.10 我的 Ditto DASH/FC-20/Exabyte Accelerator 卡在 Microsoft Windows 下工作正常,但在 Linux 下尝试使用它时,我在 /var/log/messages 中收到找不到驱动器类型的错误。

您可能正在尝试使用与板载 FDC 相同的 IRQ 和 DMA 设置。这在早于 3.03b 的 Ftape 版本中不起作用。请从 Ftape 主页 更新到最新的 Ftape 驱动程序

<Tim Jones 的回答>

10.11 Ftape DMA 传输产生 ECC 错误

遗憾的是,有些 SVGA 卡和以太网卡无法正确解码它们的地址。这通常发生在 Ftape 缓冲区在 0x1a00000x1c0000 范围内时。不知何故,DMA 写入周期被破坏,并且每隔一个写入的字节都会得到一个错误值 (0xff)。据报道,SVGA 卡和以太网卡都发生过这些问题。我们至少知道有一张(坏的?)ATI 16 位 VGA 卡导致了这个问题。

最简单的解决方案是将卡插入 8 位插槽(通常仅仅将卡重新配置为 8 位传输是不够的)。将 Ftape 缓冲区移出 VGA 范围只是部分解决方案;Linux 中使用的所有 DMA 缓冲区都可能存在此问题!让我们明确一点:这与 Ftape 软件无关。

<来自 Ftape-Howto>

10.12 救命!我在 syslog 文件中收到 “dmaalloc() failed” 错误。

仅当您尝试 insmod ftape.o 模块时,才会看到此错误。首先尝试运行 swapout。它与独立的 Ftape 源代码一起提供。它不会出现在内核提供的 Ftape 源代码中。

这是一个关于如何设置您的 rc.local 文件以使用它的示例。

# Install the Floppy Tape Driver
if [ -f /boot/modules/`uname -r`/misc/ftape.o ]; then
   echo Installing ftape for Linux `uname -r`
   swapout
   insmod /boot/modules/`uname -r`/misc/ftape.o
fi

请注意,如果您将 Ftape 驱动程序 编译到内核中,则不会遇到此类问题。

<来自 Ftape-Howto>

10.13 运行 Ftape 时 Syslogd 过度工作

Ftape 中的编译时选项 NO_TRACENO_TRACE_AT_ALL 控制系统日志记录的量。将适当的选项添加到 Makefile 中的 FTAPE_OPT 行并重新编译。

<来自 Ftape-Howto>

10.14 如何更改跟踪级别?

有三种方法可以做到这一点(按个人喜好排序)。

顺便说一句,以下是各种跟踪级别的含义。

  1. 使用 insmod 更改跟踪级别 如果您使用模块机制加载 Ftape 驱动程序,则可以将跟踪级别指定为 insmod 命令的选项。
            /sbin/insmod ftape.o tracing=<tracing-level>
    
  2. 使用 mt 更改跟踪级别 Ftape 驱动程序中有一个 hack,允许使用 mt 中的 fsr 选项来设置跟踪级别。zftape 没有这个 hack。
            mt -f /dev/ftape fsr <tracing-level>
    
    mt 中使用 fsr 命令是一种 hack,并且可能会随着时间的推移而消失或更改。
  3. 重新编译以更改跟踪级别 tracing.c 文件包含一行 int tracing = 3;。将 3 更改为适当的值并重新编译。

<来自 Ftape-Howto>

10.15 我在使用 Ftape 时遇到问题。我正在使用 Ftape 主页上的最新版本 Ftape,并且相信我找到了一个真正的错误。我该怎么办?

检查 Ftape 主页。以获取更新的版本。然后检查该软件包中包含的 FAQ,看看您的问题是否在那里列出。接下来,尝试检查 Ftape 发行版 随附的手册是否提到了您的问题。

没有必要阅读整个手册,只需检查 “概念索引” 是否包含可能与您的问题相关的关键字,然后跳转到手册中的适当位置。

如果您仍然确信自己发现了一个错误,请将描述该问题的一般性问题发布到 Linux-Tape 邮件列表,但不要附加您的整个 Ftape 错误日志。如果我们之前遇到过这个问题,我们会告诉您解决工作的进展情况。如果我们没有遇到过,Ftape 维护者 很可能会要求您将整个 Ftape 错误日志(从您的系统消息文件中剪切)发送给他。

<Tim Jones 的回答>


下一页 上一页 目录