软盘驱动

常见问题列表:

常见问题列表可以在 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 对磁盘更改线使用反向约定。

floppy=0,thinkpad

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

floppy=omnibook / floppy=nodma

告诉软盘驱动程序不要使用 Dma 进行数据传输。这在 HP Omnibooks 上是必需的,因为它们没有可用于软盘驱动程序的工作 DMA 通道。如果您经常收到“无法分配 DMA 内存”消息,此选项也很有用。事实上,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

不要使用磁盘更改线,而是在每次重新打开设备节点时都假设磁盘已更改。在某些磁盘更改线损坏或不支持的设备上需要这样做。这应被视为一种临时措施,因为它会导致不必要的缓存刷新,从而降低软盘操作效率,并且稍微不可靠。如果出现任何 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”)一词。如果报告的问题发生在挂载软盘时,请务必在主题行中也提及文件系统的类型。

在发送/发布任何错误报告之前,请务必阅读FAQ!

Alain

更新日志

10-30-2004 :

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

6-3-2000 :

原始文档