始终使用最新的稳定版本,该版本_应该_可以从 ftp://sunsite.unc.edu/pub/Linux/kernel/tapes 和 http://www-math.math.rwth-aachen.de/~LBFM/claus/ftape/ 获取
在撰写本文时,最新的稳定版本是 ftape-4.02
。
<Claus Heine 的回答>
2.0.xx 内核源代码中包含的默认 Ftape 版本是 2.08 或 2.09,非常过时。请从 Ftape 主页 更新到最新的 Ftape 驱动程序。
<Tim Jones 的回答>
您需要在 MCONFIG
文件中的 KERNEL_OPT
变量中添加 -D__SMP__
。在较新的 ftape
版本中,您只需取消注释 MCONFIG
文件中的某一行。
<Claus Heine 的回答>
忽略 depmod 错误消息。问题是 Ftape 模块 必须在 2.0.* 内核中编译,而无需版本校验和功能(即 CONFIG_MODVERSIONS
)。即使模块与支持此功能的内核一起使用,这也不会引起问题;只是 depmod
错误地抱怨未定义的符号。忽略 depmod
的抱怨,并尝试插入模块,尽管有这些抱怨
modprobe zftape
如果这失败了,说明有些地方出错了。<Claus Heine 的回答>
insmod
程序可以通过两种方式检查内核版本是否与编译 Ftape 的版本一致:它可以直接比较 Ftape 模块 中记录的内核版本号与正在运行的内核的版本,或者,如果内核和 Ftape 都是使用版本符号编译的,则比较使用的内核符号的版本。
如果您已将 GCC 版本升级到 v2.7.0 或更高版本,则必须使用 gcc v2.7.x 重新编译模块实用程序。
较新版本的 insmod
允许您“强制”将模块插入内核,即使版本字符串不正确。
<来自 Ftape-Howto>
您是否记得将 ksyms.c
补丁应用于内核? 如果没有,请阅读源代码发行版中的 README.linux-1.2
文件。
<来自 Ftape-Howto>
当内核在启用配置项 CONFIG_MODVERSIONS
的情况下编译时,将创建 modversions.h
文件。启用此选项后,将在 make dep
步骤中创建该文件。
另一个方便的提示是,make mrproper
将删除 /usr/include/linux/modversions.h
。您需要重新配置内核并执行 make dep
才能找回该文件。
<来自 Ftape-Howto>
当您在 `make config
' 期间对 CONFIG_MODVERSIONS
说 “yes” 时,内核导出的所有符号,即:可加载模块可以 “看到” 的符号,都会被扩充,以包含跨调用/返回参数类型的校验和。这使得 insmod
能够检测自编译 Ftape 以来,内核中变量或函数的定义是否已更改。
这确保了高度的安全性,使您不会因为在内核中使用了过时的模块而导致内核崩溃。
如果您在内核中启用 CONFIG_MODVERSIONS
,请确保您已
-DMODVERSIONS -include /usr/include/linux/modversions.h在 Ftape Makefile 中的 MODULE_OPT 行中取消注释。相反,如果您未启用 CONFIG_MODVERSIONS,请确保您已将其注释掉。
<来自 Ftape-Howto>
问题至少有两个可能的来源
/lib/modules/misc
instead of
/lib/modules/uname -r/misc
由于 modprobe
最后在 /lib/modules/misc/
中搜索,因此可能有一个旧的 ftape.o
模块漂浮在 /lib/modules/
uname -r/misc
中,modprobe
首先找到它(uname -r
代表内核版本)。删除旧的 ftape.o
模块。CONFIG_FTAPE
),然后重新编译并安装它。<Claus Heins 的回答>
您可能正在尝试使用与板载 FDC 相同的 IRQ 和 DMA 设置。这在早于 3.03b 的 Ftape 版本中不起作用。请从 Ftape 主页 更新到最新的 Ftape 驱动程序。
<Tim Jones 的回答>
遗憾的是,有些 SVGA 卡和以太网卡无法正确解码它们的地址。这通常发生在 Ftape 缓冲区在 0x1a0000
到 0x1c0000
范围内时。不知何故,DMA 写入周期被破坏,并且每隔一个写入的字节都会得到一个错误值 (0xff
)。据报道,SVGA 卡和以太网卡都发生过这些问题。我们至少知道有一张(坏的?)ATI 16 位 VGA 卡导致了这个问题。
最简单的解决方案是将卡插入 8 位插槽(通常仅仅将卡重新配置为 8 位传输是不够的)。将 Ftape 缓冲区移出 VGA 范围只是部分解决方案;Linux 中使用的所有 DMA 缓冲区都可能存在此问题!让我们明确一点:这与 Ftape 软件无关。
<来自 Ftape-Howto>
仅当您尝试 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>
Ftape 中的编译时选项 NO_TRACE
和 NO_TRACE_AT_ALL
控制系统日志记录的量。将适当的选项添加到 Makefile 中的 FTAPE_OPT
行并重新编译。
<来自 Ftape-Howto>
有三种方法可以做到这一点(按个人喜好排序)。
顺便说一句,以下是各种跟踪级别的含义。
/sbin/insmod ftape.o tracing=<tracing-level>
mt
中的 fsr
选项来设置跟踪级别。zftape
没有这个 hack。
mt -f /dev/ftape fsr <tracing-level>
在 mt
中使用 fsr
命令是一种 hack,并且可能会随着时间的推移而消失或更改。tracing.c
文件包含一行 int tracing = 3;
。将 3 更改为适当的值并重新编译。<来自 Ftape-Howto>
检查 Ftape 主页。以获取更新的版本。然后检查该软件包中包含的 FAQ,看看您的问题是否在那里列出。接下来,尝试检查 Ftape 发行版 随附的手册是否提到了您的问题。
没有必要阅读整个手册,只需检查 “概念索引” 是否包含可能与您的问题相关的关键字,然后跳转到手册中的适当位置。
如果您仍然确信自己发现了一个错误,请将描述该问题的一般性问题发布到 Linux-Tape 邮件列表,但不要附加您的整个 Ftape 错误日志。如果我们之前遇到过这个问题,我们会告诉您解决工作的进展情况。如果我们没有遇到过,Ftape 维护者 很可能会要求您将整个 Ftape 错误日志(从您的系统消息文件中剪切)发送给他。
<Tim Jones 的回答>