软盘驱动程序

常见问题列表:

常见问题列表可在 fdutils 软件包中找到(见下文),也可在 <https://fdutils.linux.lu/faq.html> 获取。

LILO 配置选项 (Thinkpad 用户请阅读)

软盘驱动程序通过 LILO 中的“floppy=”选项进行配置。此选项可在启动提示符处键入,或输入到 LILO 配置文件中。

示例:如果您的内核名为 linux-2.6.9,请在 LILO 启动提示符处键入以下行(如果您使用的是 Thinkpad):

linux-2.6.9 floppy=thinkpad

您也可以将以下行输入到 /etc/lilo.conf 中,在 linux-2.6.9 的描述下:

append = "floppy=thinkpad"

可以给出几个与软盘相关的选项,例如:

linux-2.6.9 floppy=daring floppy=two_fdc
append = "floppy=daring floppy=two_fdc"

如果您在 LILO 配置文件和启动提示符处都提供了选项,则两处的选项字符串会连接起来,启动提示符处的选项在后。这就是为什么还有一些选项可以恢复默认行为。

模块配置选项

如果您将软盘驱动程序用作模块,请使用以下语法:

modprobe floppy floppy="<options>"

示例

modprobe floppy floppy="omnibook messages"

如果您每次加载软盘驱动程序时都需要启用某些选项,可以将其放在

options floppy floppy="omnibook messages"

/etc/modprobe.d/ 中的配置文件里。

与软盘驱动程序相关的选项有:

floppy=asus_pci

设置位掩码,只允许单元 0 和 1。(默认)

floppy=daring

告诉软盘驱动程序您有一个工作良好的软盘控制器。这允许更高效、更流畅的操作,但可能在某些控制器上失败。这可能会加速某些操作。

floppy=0,daring

告诉软盘驱动程序您的软盘控制器应谨慎使用。

floppy=one_fdc

告诉软盘驱动程序您只有一个软盘控制器。(默认)

floppy=two_fdc / floppy=<address>,two_fdc

告诉软盘驱动程序您有两个软盘控制器。第二个软盘控制器被假定位于 <address>。如果第二个控制器位于地址 0x370,并且您使用“cmos”选项,则不需要此选项。

floppy=thinkpad

告诉软盘驱动程序您有一台 Thinkpad。Thinkpad 使用盘片更换线(disk change line)的反向约定。

floppy=0,thinkpad

告诉软盘驱动程序您没有 Thinkpad。

floppy=omnibook / floppy=nodma

告诉软盘驱动程序不要使用 DMA 进行数据传输。HP Omnibook 需要此选项,因为它们的软盘驱动程序没有可用的 DMA 通道。如果您经常收到“Unable to allocate DMA memory”消息,此选项也很有用。事实上,DMA 内存需要在物理内存中连续,因此更难找到,而无 DMA 缓冲区可以在虚拟内存中分配。但是,如果您的 FDC 没有 FIFO (8272A 或 82072),我不建议使用此选项。82072A 及更高版本则没问题。您还需要至少 486 处理器才能使用 nodma。如果您使用 nodma 模式,我建议您也将 FIFO 阈值设置为 10 或更低,以限制数据传输中断的数量。

如果您有一个支持 FIFO 的 FDC,如果找不到可 DMA 的内存,软盘驱动程序会自动回退到非 DMA 模式。如果您想避免这种情况,请明确请求“yesdma”。

floppy=yesdma

告诉软盘驱动程序有可用的 DMA 通道。(默认)

floppy=nofifo

完全禁用 FIFO。如果您的以太网卡(或其他设备)在访问软盘时收到“总线主仲裁错误”消息,则需要此选项。

floppy=usefifo

启用 FIFO。(默认)

floppy=<threshold>,fifo_depth

设置 FIFO 阈值。这主要在 DMA 模式下相关。如果阈值较高,软盘驱动程序可容忍更多中断延迟,但会触发更多中断(即对系统其他部分施加更多负载)。如果阈值较低,中断延迟也应较低(处理器更快)。较低阈值的好处是中断更少。

要调整 FIFO 阈值,请使用“floppycontrol --messages”打开过/欠载消息。然后访问软盘。如果您收到大量的“过/欠载 - 重试”消息,则 FIFO 阈值过低。尝试使用更高的值,直到只偶尔出现过/欠载。在进行此调整时,将软盘驱动程序编译为模块是个好主意。事实上,这允许在不每次测试都重启机器的情况下尝试不同的 FIFO 值。请注意,每次重新插入模块时都需要执行“floppycontrol --messages”。

通常,不需要调整 FIFO 阈值,因为默认值 (0xa) 是合理的。

floppy=<drive>,<type>,cmos

将 <drive> 的 CMOS 类型设置为 <type>。如果您有两个以上软盘驱动器(物理 CMOS 中只能描述两个),或者您的 BIOS 使用非标准 CMOS 类型,则此项是强制性的。CMOS 类型为:

0

使用物理 CMOS 的值

1

5 1/4 DD

2

5 1/4 HD

3

3 1/2 DD

4

3 1/2 HD

5

3 1/2 ED

6

3 1/2 ED

16

未知或未安装

(注意:ED 驱动器有两种有效类型。这是因为 5 最初选择表示软盘“磁带”,6 表示 ED 驱动器。AMI 忽略了这一点,并使用 5 表示 ED 驱动器。这就是为什么软盘驱动程序同时处理这两种类型。)

floppy=unexpected_interrupts

收到意外中断时打印警告消息。(默认)

floppy=no_unexpected_interrupts / floppy=L40SX

收到意外中断时不打印消息。某些视频模式下 IBM L40SX 笔记本电脑需要此选项。(视频和软盘之间似乎存在交互。意外中断只影响性能,可以安全忽略。)

floppy=broken_dcl

不使用盘片更换线(disk change line),而是在每次重新打开设备节点时假定盘片已更换。某些盘片更换线损坏或不支持的机器上需要此选项。这应被视为权宜之计,因为它会导致不必要的缓存刷新,从而降低软盘操作效率,并使其稍微更不可靠。如果您有任何 DCL 问题,请检查您的线缆、连接和跳线设置。然而,已知一些旧驱动器和一些笔记本电脑没有 DCL。

floppy=debug

打印调试消息。

floppy=messages

为某些操作打印信息性消息(盘片更换通知、过载和欠载警告以及自动检测警告)。

floppy=silent_dcl_clear

使用噪音较小的方式清除盘片更换线(不涉及寻道)。“daring”选项隐含此功能。

floppy=<nr>,irq

将软盘 IRQ 设置为 <nr> 而不是 6。

floppy=<nr>,dma

将软盘 DMA 通道设置为 <nr> 而不是 2。

floppy=slow

使用 PS/2 步进速率

PS/2 floppies have much slower step rates than regular floppies.
It's been recommended that take about 1/4 of the default speed
in some more extreme cases.

支持工具和附加文档:

软盘驱动程序的其他参数可在运行时配置。执行此操作的工具可在 fdutils 软件包中找到。此软件包还包含一个新版本的 mtools,它允许访问大容量磁盘(在 3 1/2 高密度磁盘上可达 1992K!)。它还包含有关软盘驱动程序的附加文档。

最新版本可在 fdutils 主页找到:

fdutils 发布版可在以下地址找到:

报告软盘驱动程序问题

如果您对软盘驱动程序有疑问或要报告错误,请发送邮件至 Alain.Knaff@poboxes.com。如果您在 Usenet 上发帖,请优先使用 comp.os.linux.hardware。由于这些组的流量相当大,请务必在主题行中包含“floppy”(或“FLOPPY”)字样。如果报告的问题在挂载软盘时发生,请务必在主题行中同时提及文件系统类型。

在发送邮件/发布任何错误报告之前,请务必阅读常见问题!

Alain

更改日志

10-30-2004 :

清理、更新、添加模块配置参考。James Nelson <james4765@gmail.com>

6-3-2000 :

原始文档