始终使用最新的稳定版本,_应该_可以从 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 模块 必须在没有版本校验和功能 (即 CONFIG_MODVERSIONS
) 的情况下使用 2.0.* 内核进行编译。即使模块与支持此功能的内核一起使用,这也不会导致问题;只是 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>
modversions.h
文件是在内核编译时启用了配置项 CONFIG_MODVERSIONS
时创建的。启用此选项后,该文件将在 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 发行版 随附的手册是否提到了您的问题。
没有必要阅读整个手册,只需检查“概念索引”是否包含可能与您的问题相关的关键字,然后跳转到手册中的适当位置。
如果您仍然确信您找到了一个 bug,那么请向 Linux-Tape 邮件列表 发布一个描述该问题的一般性问题,但不要附加您的整个 Ftape 错误日志。如果我们以前见过这个问题,我们会告诉您解决工作的进展情况。如果我们没有见过,Ftape 维护者 很可能会要求您将整个 Ftape 错误日志(从您的系统消息文件中剪辑)发送给他。
<来自 Tim Jones 的回答>