요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
LILO options
floppy.rst:12-39Boot prompt와 lilo.conf의 floppy= option 결합 규칙을 설명합니다.
Module options
floppy.rst:40-58modprobe와 modprobe.d의 일회성·지속 parameter 설정을 설명합니다.
Controller and DMA
floppy.rst:59-110Controller 수, platform quirk와 DMA fallback을 정리합니다.
FIFO and CMOS
floppy.rst:111-163FIFO threshold tuning과 CMOS drive-type mapping을 제공합니다.
Runtime behavior
floppy.rst:164-210Interrupt, DCL, message, IRQ/DMA number와 PS/2 stepping을 설정합니다.
Fdutils
floppy.rst:211-232Runtime utility, high-capacity mtools와 download 위치를 안내합니다.
Reporting and history
floppy.rst:233-255FAQ 확인, subject 정보, maintainer 연락처와 changelog를 보존합니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
=============
Floppy Driver
=============
FAQ list:
=========
A FAQ list may be found in the fdutils package (see below), and also
at <https://fdutils.linux.lu/faq.html>.
LILO configuration options (Thinkpad users, read this)
======================================================
The floppy driver is configured using the 'floppy=' option in
lilo. This option can be typed at the boot prompt, or entered in the
lilo configuration file.
Example: If your kernel is called linux-2.6.9, type the following line
at the lilo boot prompt (if you have a thinkpad)::
linux-2.6.9 floppy=thinkpad
You may also enter the following line in /etc/lilo.conf, in the description
of linux-2.6.9::
append = "floppy=thinkpad"
Several floppy related options may be given, example::
linux-2.6.9 floppy=daring floppy=two_fdc
append = "floppy=daring floppy=two_fdc"
If you give options both in the lilo config file and on the boot
prompt, the option strings of both places are concatenated, the boot
prompt options coming last. That's why there are also options to
restore the default behavior.
Module configuration options
============================
If you use the floppy driver as a module, use the following syntax::
modprobe floppy floppy="<options>"
Example::
modprobe floppy floppy="omnibook messages"
If you need certain options enabled every time you load the floppy driver,
you can put::
options floppy floppy="omnibook messages"
in a configuration file in /etc/modprobe.d/.
The floppy driver related options are:
floppy=asus_pci
Sets the bit mask to allow only units 0 and 1. (default)
floppy=daring
Tells the floppy driver that you have a well behaved floppy controller.
This allows more efficient and smoother operation, but may fail on
certain controllers. This may speed up certain operations.
floppy=0,daring
Tells the floppy driver that your floppy controller should be used
with caution.
floppy=one_fdc
Tells the floppy driver that you have only one floppy controller.
(default)
floppy=two_fdc / floppy=<address>,two_fdc
Tells the floppy driver that you have two floppy controllers.
The second floppy controller is assumed to be at <address>.
This option is not needed if the second controller is at address
0x370, and if you use the 'cmos' option.
floppy=thinkpad
Tells the floppy driver that you have a Thinkpad. Thinkpads use an
inverted convention for the disk change line.
floppy=0,thinkpad
Tells the floppy driver that you don't have a Thinkpad.
floppy=omnibook / floppy=nodma
Tells the floppy driver not to use Dma for data transfers.
This is needed on HP Omnibooks, which don't have a workable
DMA channel for the floppy driver. This option is also useful
if you frequently get "Unable to allocate DMA memory" messages.
Indeed, dma memory needs to be continuous in physical memory,
and is thus harder to find, whereas non-dma buffers may be
allocated in virtual memory. However, I advise against this if
you have an FDC without a FIFO (8272A or 82072). 82072A and
later are OK. You also need at least a 486 to use nodma.
If you use nodma mode, I suggest you also set the FIFO
threshold to 10 or lower, in order to limit the number of data
transfer interrupts.
If you have a FIFO-able FDC, the floppy driver automatically
falls back on non DMA mode if no DMA-able memory can be found.
If you want to avoid this, explicitly ask for 'yesdma'.
floppy=yesdma
Tells the floppy driver that a workable DMA channel is available.
(default)
floppy=nofifo
Disables the FIFO entirely. This is needed if you get "Bus
master arbitration error" messages from your Ethernet card (or
from other devices) while accessing the floppy.
floppy=usefifo
Enables the FIFO. (default)
floppy=<threshold>,fifo_depth
Sets the FIFO threshold. This is mostly relevant in DMA
mode. If this is higher, the floppy driver tolerates more
interrupt latency, but it triggers more interrupts (i.e. it
imposes more load on the rest of the system). If this is
lower, the interrupt latency should be lower too (faster
processor). The benefit of a lower threshold is less
interrupts.
To tune the fifo threshold, switch on over/underrun messages
using 'floppycontrol --messages'. Then access a floppy
disk. If you get a huge amount of "Over/Underrun - retrying"
messages, then the fifo threshold is too low. Try with a
higher value, until you only get an occasional Over/Underrun.
It is a good idea to compile the floppy driver as a module
when doing this tuning. Indeed, it allows to try different
fifo values without rebooting the machine for each test. Note
that you need to do 'floppycontrol --messages' every time you
re-insert the module.
Usually, tuning the fifo threshold should not be needed, as
the default (0xa) is reasonable.
floppy=<drive>,<type>,cmos
Sets the CMOS type of <drive> to <type>. This is mandatory if
you have more than two floppy drives (only two can be
described in the physical CMOS), or if your BIOS uses
non-standard CMOS types. The CMOS types are:
== ==================================
0 Use the value of the physical 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 unknown or not installed
== ==================================
(Note: there are two valid types for ED drives. This is because 5 was
initially chosen to represent floppy *tapes*, and 6 for ED drives.
AMI ignored this, and used 5 for ED drives. That's why the floppy
driver handles both.)
floppy=unexpected_interrupts
Print a warning message when an unexpected interrupt is received.
(default)
floppy=no_unexpected_interrupts / floppy=L40SX
Don't print a message when an unexpected interrupt is received. This
is needed on IBM L40SX laptops in certain video modes. (There seems
to be an interaction between video and floppy. The unexpected
interrupts affect only performance, and can be safely ignored.)
floppy=broken_dcl
Don't use the disk change line, but assume that the disk was
changed whenever the device node is reopened. Needed on some
boxes where the disk change line is broken or unsupported.
This should be regarded as a stopgap measure, indeed it makes
floppy operation less efficient due to unneeded cache
flushings, and slightly more unreliable. Please verify your
cable, connection and jumper settings if you have any DCL
problems. However, some older drives, and also some laptops
are known not to have a DCL.
floppy=debug
Print debugging messages.
floppy=messages
Print informational messages for some operations (disk change
notifications, warnings about over and underruns, and about
autodetection).
floppy=silent_dcl_clear
Uses a less noisy way to clear the disk change line (which
doesn't involve seeks). Implied by 'daring' option.
floppy=<nr>,irq
Sets the floppy IRQ to <nr> instead of 6.
floppy=<nr>,dma
Sets the floppy DMA channel to <nr> instead of 2.
floppy=slow
Use PS/2 stepping rate::
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.
Supporting utilities and additional documentation:
==================================================
Additional parameters of the floppy driver can be configured at
runtime. Utilities which do this can be found in the fdutils package.
This package also contains a new version of mtools which allows to
access high capacity disks (up to 1992K on a high density 3 1/2 disk!).
It also contains additional documentation about the floppy driver.
The latest version can be found at fdutils homepage:
https://fdutils.linux.lu
The fdutils releases can be found at:
https://fdutils.linux.lu/download.html
http://www.tux.org/pub/knaff/fdutils/
ftp://metalab.unc.edu/pub/Linux/utils/disk-management/
Reporting problems about the floppy driver
==========================================
If you have a question or a bug report about the floppy driver, mail
me at Alain.Knaff@poboxes.com . If you post to Usenet, preferably use
comp.os.linux.hardware. As the volume in these groups is rather high,
be sure to include the word "floppy" (or "FLOPPY") in the subject
line. If the reported problem happens when mounting floppy disks, be
sure to mention also the type of the filesystem in the subject line.
Be sure to read the FAQ before mailing/posting any bug reports!
Alain
Changelog
=========
10-30-2004 :
Cleanup, updating, add reference to module configuration.
James Nelson <james4765@gmail.com>
6-3-2000 :
Original Document
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
Floppy driver와 FAQ
1-11Floppy driver FAQ는 아래에서 설명하는 fdutils package와 `https://fdutils.linux.lu/faq.html`에서 확인할 수 있습니다.
LILO boot option 설정
12-39Floppy driver는 LILO의 `floppy=` option으로 설정합니다. Boot prompt에서 입력하거나 LILO configuration file에 넣을 수 있습니다. ThinkPad에서 kernel 이름이 `linux-2.6.9`라면 다음처럼 사용합니다.
Example: If your kernel is called linux-2.6.9, type the following line
at the lilo boot prompt (if you have a thinkpad)::
linux-2.6.9 floppy=thinkpad
You may also enter the following line in /etc/lilo.conf, in the description
of linux-2.6.9::
append = "floppy=thinkpad"
Several floppy related options may be given, example::
linux-2.6.9 floppy=daring floppy=two_fdc
append = "floppy=daring floppy=two_fdc"
Floppy 관련 option은 여러 개 지정할 수 있습니다. LILO config file과 boot prompt 양쪽에 지정하면 두 option string을 이어 붙이며 boot-prompt option이 뒤에 옵니다. 이 때문에 default behavior를 복원하는 option도 제공합니다.
Config-file option 뒤에 boot-prompt option을 연결합니다.
Module parameter 설정
40-58Floppy driver를 module로 사용하면 `modprobe floppy floppy="<options>"` 형식으로 설정합니다. 예를 들어 `omnibook messages`를 전달할 수 있습니다.
If you use the floppy driver as a module, use the following syntax::
modprobe floppy floppy="<options>"
Example::
modprobe floppy floppy="omnibook messages"
If you need certain options enabled every time you load the floppy driver,
you can put::
options floppy floppy="omnibook messages"
in a configuration file in /etc/modprobe.d/.
Driver를 load할 때마다 option을 활성화하려면 `/etc/modprobe.d/`의 configuration file에 `options floppy floppy="omnibook messages"`를 둡니다.
일회성 modprobe와 modprobe.d의 지속 설정을 구분합니다.
Controller 수·ThinkPad·DMA option
59-110Controller topology, platform quirk와 DMA 사용 여부를 설정합니다.
`nodma`는 usable floppy DMA channel이 없는 HP OmniBook에 필요하고 `Unable to allocate DMA memory`가 자주 나올 때도 유용합니다. DMA memory는 physical memory에서 연속이어야 해 구하기 어렵지만 non-DMA buffer는 virtual memory에 할당할 수 있습니다.
FIFO가 없는 FDC인 8272A 또는 82072에서는 `nodma`를 권하지 않습니다. 82072A 이후 controller는 괜찮고 CPU도 최소 486이어야 합니다. Non-DMA mode에서는 data-transfer interrupt 수를 제한하도록 FIFO threshold를 10 이하로 두는 것을 권장합니다.
FIFO를 지원하는 FDC는 DMA-capable memory를 찾지 못하면 자동으로 non-DMA mode로 fallback합니다. 이를 피하려면 `yesdma`를 명시합니다.
FIFO tuning과 CMOS drive type
111-163`floppy=nofifo`는 FIFO를 완전히 disable합니다. Floppy 접근 중 Ethernet card나 다른 device에서 `Bus master arbitration error`가 날 때 필요합니다. `floppy=usefifo`는 FIFO를 enable하며 기본값입니다.
`floppy=<threshold>,fifo_depth`는 주로 DMA mode의 FIFO threshold를 설정합니다. 값이 높으면 interrupt latency를 더 허용하지만 interrupt를 더 많이 발생시켜 system load가 늘어납니다. 값이 낮으면 더 짧은 interrupt latency, 즉 빠른 processor가 필요하지만 interrupt 수는 줄어듭니다.
`floppycontrol --messages`로 overrun/underrun message를 켜고 disk에 접근해 tune합니다. `Over/Underrun - retrying`이 많이 나오면 threshold가 너무 낮으므로 가끔 발생할 정도까지 높입니다. Module로 build하면 매번 reboot하지 않고 값을 바꿀 수 있지만 module 재삽입 때마다 `floppycontrol --messages`를 다시 실행해야 합니다. 보통 기본값 `0xa`가 적절해 tuning은 필요 없습니다.
FIFO enable과 threshold trade-off입니다.
`floppy=<drive>,<type>,cmos`는 drive의 CMOS type을 설정합니다. Physical CMOS에 두 drive만 기록할 수 있으므로 floppy drive가 둘보다 많거나 BIOS가 non-standard CMOS type을 쓰면 필수입니다.
Driver가 인식하는 drive type number입니다.
Interrupt·DCL·debug·IRQ/DMA 동작
164-210Message, disk-change line, resource number와 stepping rate를 제어합니다.
IBM L40SX의 일부 video mode에서는 video와 floppy 사이 interaction 때문에 unexpected interrupt가 생길 수 있습니다. 성능에만 영향을 주므로 안전하게 무시할 수 있습니다.
`broken_dcl`은 DCL이 망가졌거나 지원되지 않는 system에서 필요하지만 불필요한 cache flush 때문에 효율이 낮고 신뢰성도 조금 떨어지는 임시방편입니다. 먼저 cable, connection, jumper 설정을 확인해야 합니다. 일부 오래된 drive와 laptop은 DCL 자체가 없습니다.
PS/2 floppy는 일반 floppy보다 stepping rate가 훨씬 느리며 극단적인 경우 default speed의 약 1/4을 사용하라는 권고가 있습니다.
Fdutils와 추가 문서
211-232Floppy driver의 추가 parameter는 runtime에 설정할 수 있으며 utility는 fdutils package에 있습니다. 이 package는 high-density 3.5-inch disk에서 최대 1992K의 high-capacity disk에 접근하는 새 mtools와 floppy driver 추가 문서도 포함합니다.
- fdutils homepage
https://fdutils.linux.lu - fdutils downloads
https://fdutils.linux.lu/download.html - Tux.org mirror
http://www.tux.org/pub/knaff/fdutils/ - Metalab FTP mirror
ftp://metalab.unc.edu/pub/Linux/utils/disk-management/
Runtime tuning과 media utility·documentation 역할입니다.
문제 보고와 changelog
233-255Floppy driver 질문이나 bug report는 Alain.Knaff@poboxes.com으로 보냅니다. Usenet에는 가능하면 `comp.os.linux.hardware`를 사용하고 traffic이 많으므로 subject에 `floppy` 또는 `FLOPPY`를 넣습니다. Mount 중 문제라면 filesystem type도 subject에 명시합니다.
Bug report를 mail 또는 post하기 전에 FAQ를 반드시 읽습니다.
2004년 10월 30일 James Nelson <james4765@gmail.com>이 cleanup, update와 module-configuration reference를 추가했습니다. 원문 문서는 2000년 6월 3일 작성됐습니다.
질문을 보내기 전 필요한 확인과 subject 정보를 정리합니다.
FAQ
floppy.rst:1-11Fdutils FAQ 위치를 안내합니다.