← Documents Documentation/admin-guide/blockdev/floppy.rst GitHub 원문 ↗

Linux 6.18.37 · Administration / Block devices

Floppy Driver

LILO·module floppy option, DMA/FIFO·CMOS·DCL·IRQ 설정, fdutils와 bug-report 절차를 설명합니다.

Source pathDocumentation/admin-guide/blockdev/floppy.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

FAQ

floppy.rst:1-11

Fdutils FAQ 위치를 안내합니다.

LILO options

floppy.rst:12-39

Boot prompt와 lilo.conf의 floppy= option 결합 규칙을 설명합니다.

Module options

floppy.rst:40-58

modprobe와 modprobe.d의 일회성·지속 parameter 설정을 설명합니다.

Controller and DMA

floppy.rst:59-110

Controller 수, platform quirk와 DMA fallback을 정리합니다.

FIFO and CMOS

floppy.rst:111-163

FIFO threshold tuning과 CMOS drive-type mapping을 제공합니다.

Runtime behavior

floppy.rst:164-210

Interrupt, DCL, message, IRQ/DMA number와 PS/2 stepping을 설정합니다.

Fdutils

floppy.rst:211-232

Runtime utility, high-capacity mtools와 download 위치를 안내합니다.

Reporting and history

floppy.rst:233-255

FAQ 확인, subject 정보, maintainer 연락처와 changelog를 보존합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 =============
2 Floppy Driver
3 =============
4
5 FAQ list:
6 =========
7
8 A FAQ list may be found in the fdutils package (see below), and also
9 at <https://fdutils.linux.lu/faq.html>.
10
11
12 LILO configuration options (Thinkpad users, read this)
13 ======================================================
14
15 The floppy driver is configured using the 'floppy=' option in
16 lilo. This option can be typed at the boot prompt, or entered in the
17 lilo configuration file.
18
19 Example: If your kernel is called linux-2.6.9, type the following line
20 at the lilo boot prompt (if you have a thinkpad)::
21
22 linux-2.6.9 floppy=thinkpad
23
24 You may also enter the following line in /etc/lilo.conf, in the description
25 of linux-2.6.9::
26
27 append = "floppy=thinkpad"
28
29 Several floppy related options may be given, example::
30
31 linux-2.6.9 floppy=daring floppy=two_fdc
32 append = "floppy=daring floppy=two_fdc"
33
34 If you give options both in the lilo config file and on the boot
35 prompt, the option strings of both places are concatenated, the boot
36 prompt options coming last. That's why there are also options to
37 restore the default behavior.
38
39
40 Module configuration options
41 ============================
42
43 If you use the floppy driver as a module, use the following syntax::
44
45 modprobe floppy floppy="<options>"
46
47 Example::
48
49 modprobe floppy floppy="omnibook messages"
50
51 If you need certain options enabled every time you load the floppy driver,
52 you can put::
53
54 options floppy floppy="omnibook messages"
55
56 in a configuration file in /etc/modprobe.d/.
57
58
59 The floppy driver related options are:
60
61 floppy=asus_pci
62 Sets the bit mask to allow only units 0 and 1. (default)
63
64 floppy=daring
65 Tells the floppy driver that you have a well behaved floppy controller.
66 This allows more efficient and smoother operation, but may fail on
67 certain controllers. This may speed up certain operations.
68
69 floppy=0,daring
70 Tells the floppy driver that your floppy controller should be used
71 with caution.
72
73 floppy=one_fdc
74 Tells the floppy driver that you have only one floppy controller.
75 (default)
76
77 floppy=two_fdc / floppy=<address>,two_fdc
78 Tells the floppy driver that you have two floppy controllers.
79 The second floppy controller is assumed to be at <address>.
80 This option is not needed if the second controller is at address
81 0x370, and if you use the 'cmos' option.
82
83 floppy=thinkpad
84 Tells the floppy driver that you have a Thinkpad. Thinkpads use an
85 inverted convention for the disk change line.
86
87 floppy=0,thinkpad
88 Tells the floppy driver that you don't have a Thinkpad.
89
90 floppy=omnibook / floppy=nodma
91 Tells the floppy driver not to use Dma for data transfers.
92 This is needed on HP Omnibooks, which don't have a workable
93 DMA channel for the floppy driver. This option is also useful
94 if you frequently get "Unable to allocate DMA memory" messages.
95 Indeed, dma memory needs to be continuous in physical memory,
96 and is thus harder to find, whereas non-dma buffers may be
97 allocated in virtual memory. However, I advise against this if
98 you have an FDC without a FIFO (8272A or 82072). 82072A and
99 later are OK. You also need at least a 486 to use nodma.
100 If you use nodma mode, I suggest you also set the FIFO
101 threshold to 10 or lower, in order to limit the number of data
102 transfer interrupts.
103
104 If you have a FIFO-able FDC, the floppy driver automatically
105 falls back on non DMA mode if no DMA-able memory can be found.
106 If you want to avoid this, explicitly ask for 'yesdma'.
107
108 floppy=yesdma
109 Tells the floppy driver that a workable DMA channel is available.
110 (default)
111
112 floppy=nofifo
113 Disables the FIFO entirely. This is needed if you get "Bus
114 master arbitration error" messages from your Ethernet card (or
115 from other devices) while accessing the floppy.
116
117 floppy=usefifo
118 Enables the FIFO. (default)
119
120 floppy=<threshold>,fifo_depth
121 Sets the FIFO threshold. This is mostly relevant in DMA
122 mode. If this is higher, the floppy driver tolerates more
123 interrupt latency, but it triggers more interrupts (i.e. it
124 imposes more load on the rest of the system). If this is
125 lower, the interrupt latency should be lower too (faster
126 processor). The benefit of a lower threshold is less
127 interrupts.
128
129 To tune the fifo threshold, switch on over/underrun messages
130 using 'floppycontrol --messages'. Then access a floppy
131 disk. If you get a huge amount of "Over/Underrun - retrying"
132 messages, then the fifo threshold is too low. Try with a
133 higher value, until you only get an occasional Over/Underrun.
134 It is a good idea to compile the floppy driver as a module
135 when doing this tuning. Indeed, it allows to try different
136 fifo values without rebooting the machine for each test. Note
137 that you need to do 'floppycontrol --messages' every time you
138 re-insert the module.
139
140 Usually, tuning the fifo threshold should not be needed, as
141 the default (0xa) is reasonable.
142
143 floppy=<drive>,<type>,cmos
144 Sets the CMOS type of <drive> to <type>. This is mandatory if
145 you have more than two floppy drives (only two can be
146 described in the physical CMOS), or if your BIOS uses
147 non-standard CMOS types. The CMOS types are:
148
149 == ==================================
150 0 Use the value of the physical CMOS
151 1 5 1/4 DD
152 2 5 1/4 HD
153 3 3 1/2 DD
154 4 3 1/2 HD
155 5 3 1/2 ED
156 6 3 1/2 ED
157 16 unknown or not installed
158 == ==================================
159
160 (Note: there are two valid types for ED drives. This is because 5 was
161 initially chosen to represent floppy *tapes*, and 6 for ED drives.
162 AMI ignored this, and used 5 for ED drives. That's why the floppy
163 driver handles both.)
164
165 floppy=unexpected_interrupts
166 Print a warning message when an unexpected interrupt is received.
167 (default)
168
169 floppy=no_unexpected_interrupts / floppy=L40SX
170 Don't print a message when an unexpected interrupt is received. This
171 is needed on IBM L40SX laptops in certain video modes. (There seems
172 to be an interaction between video and floppy. The unexpected
173 interrupts affect only performance, and can be safely ignored.)
174
175 floppy=broken_dcl
176 Don't use the disk change line, but assume that the disk was
177 changed whenever the device node is reopened. Needed on some
178 boxes where the disk change line is broken or unsupported.
179 This should be regarded as a stopgap measure, indeed it makes
180 floppy operation less efficient due to unneeded cache
181 flushings, and slightly more unreliable. Please verify your
182 cable, connection and jumper settings if you have any DCL
183 problems. However, some older drives, and also some laptops
184 are known not to have a DCL.
185
186 floppy=debug
187 Print debugging messages.
188
189 floppy=messages
190 Print informational messages for some operations (disk change
191 notifications, warnings about over and underruns, and about
192 autodetection).
193
194 floppy=silent_dcl_clear
195 Uses a less noisy way to clear the disk change line (which
196 doesn't involve seeks). Implied by 'daring' option.
197
198 floppy=<nr>,irq
199 Sets the floppy IRQ to <nr> instead of 6.
200
201 floppy=<nr>,dma
202 Sets the floppy DMA channel to <nr> instead of 2.
203
204 floppy=slow
205 Use PS/2 stepping rate::
206
207 PS/2 floppies have much slower step rates than regular floppies.
208 It's been recommended that take about 1/4 of the default speed
209 in some more extreme cases.
210
211
212 Supporting utilities and additional documentation:
213 ==================================================
214
215 Additional parameters of the floppy driver can be configured at
216 runtime. Utilities which do this can be found in the fdutils package.
217 This package also contains a new version of mtools which allows to
218 access high capacity disks (up to 1992K on a high density 3 1/2 disk!).
219 It also contains additional documentation about the floppy driver.
220
221 The latest version can be found at fdutils homepage:
222
223 https://fdutils.linux.lu
224
225 The fdutils releases can be found at:
226
227 https://fdutils.linux.lu/download.html
228
229 http://www.tux.org/pub/knaff/fdutils/
230
231 ftp://metalab.unc.edu/pub/Linux/utils/disk-management/
232
233 Reporting problems about the floppy driver
234 ==========================================
235
236 If you have a question or a bug report about the floppy driver, mail
237 me at [email protected] . If you post to Usenet, preferably use
238 comp.os.linux.hardware. As the volume in these groups is rather high,
239 be sure to include the word "floppy" (or "FLOPPY") in the subject
240 line. If the reported problem happens when mounting floppy disks, be
241 sure to mention also the type of the filesystem in the subject line.
242
243 Be sure to read the FAQ before mailing/posting any bug reports!
244
245 Alain
246
247 Changelog
248 =========
249
250 10-30-2004 :
251 Cleanup, updating, add reference to module configuration.
252 James Nelson <[email protected]>
253
254 6-3-2000 :
255 Original Document
256

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

Floppy driver와 FAQ

1-11

Floppy driver FAQ는 아래에서 설명하는 fdutils package와 `https://fdutils.linux.lu/faq.html`에서 확인할 수 있습니다.

LILO boot option 설정

12-39

Floppy 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도 제공합니다.

LILO floppy-option composition
/etc/lilo.conf append stringBoot-prompt floppy= optionsConcatenate in that orderFloppy driver parses combined options

Config-file option 뒤에 boot-prompt option을 연결합니다.

Module parameter 설정

40-58

Floppy 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"`를 둡니다.

Persistent floppy module options
Command linemodprobe floppy floppy="<options>"Apply to current load
/etc/modprobe.d/*.confoptions floppy floppy="<options>"Apply on every load

일회성 modprobe와 modprobe.d의 지속 설정을 구분합니다.

Controller 수·ThinkPad·DMA option

59-110
Floppy controller and DMA options
OptionMeaning/default
floppy=asus_pciUnit 0과 1만 허용하도록 bit mask 설정; 기본값
floppy=daring잘 동작하는 controller로 간주해 더 효율적으로 운용; 일부 controller에서 실패 가능
floppy=0,daringController를 신중하게 사용
floppy=one_fdcFloppy controller 하나; 기본값
floppy=two_fdcController 두 개; 두 번째가 0x370이면 cmos와 함께 지정할 필요 없음
floppy=<address>,two_fdc두 번째 controller 주소를 직접 지정
floppy=thinkpadThinkPad의 inverted disk-change-line convention 사용
floppy=0,thinkpadThinkPad가 아님을 명시
floppy=omnibook / floppy=nodmaData transfer에 DMA를 사용하지 않음
floppy=yesdma사용 가능한 DMA channel이 있음; 기본값

Controller 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 options
OptionEffect
floppy=nofifoFIFO를 완전히 disable
floppy=usefifoFIFO enable; 기본값
floppy=<threshold>,fifo_depthInterrupt latency 허용량과 interrupt 수 조정
floppycontrol --messagesOver/underrun을 관찰해 threshold tune

FIFO enable과 threshold trade-off입니다.

`floppy=<drive>,<type>,cmos`는 drive의 CMOS type을 설정합니다. Physical CMOS에 두 drive만 기록할 수 있으므로 floppy drive가 둘보다 많거나 BIOS가 non-standard CMOS type을 쓰면 필수입니다.

Floppy CMOS types
TypeDrive
0Physical CMOS 값 사용
15 1/4 DD
25 1/4 HD
33 1/2 DD
43 1/2 HD
53 1/2 ED
63 1/2 ED
16Unknown or not installed
undefinedundefined

Driver가 인식하는 drive type number입니다.

Interrupt·DCL·debug·IRQ/DMA 동작

164-210
Floppy runtime-behavior options
OptionBehavior
floppy=unexpected_interruptsUnexpected interrupt warning 출력; 기본값
floppy=no_unexpected_interrupts / floppy=L40SXWarning 억제; 일부 IBM L40SX video mode에 필요
floppy=broken_dclDisk-change line 대신 device reopen을 media change로 간주
floppy=debugDebugging message 출력
floppy=messagesDisk change, over/underrun, autodetection 정보 출력
floppy=silent_dcl_clearSeek 없는 조용한 DCL clear; daring이 암시
floppy=<nr>,irq기본 6 대신 floppy IRQ 설정
floppy=<nr>,dma기본 2 대신 floppy DMA channel 설정
floppy=slowPS/2 stepping rate 사용

Message, 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-232

Floppy driver의 추가 parameter는 runtime에 설정할 수 있으며 utility는 fdutils package에 있습니다. 이 package는 high-density 3.5-inch disk에서 최대 1992K의 high-capacity disk에 접근하는 새 mtools와 floppy driver 추가 문서도 포함합니다.

Fdutils contents
ComponentPurpose
floppycontrol and utilitiesDriver parameter를 runtime에 설정
Updated mtools최대 1992K high-capacity floppy 접근
DocumentationDriver FAQ와 추가 운용 정보

Runtime tuning과 media utility·documentation 역할입니다.

문제 보고와 changelog

233-255

Floppy driver 질문이나 bug report는 [email protected]으로 보냅니다. Usenet에는 가능하면 `comp.os.linux.hardware`를 사용하고 traffic이 많으므로 subject에 `floppy` 또는 `FLOPPY`를 넣습니다. Mount 중 문제라면 filesystem type도 subject에 명시합니다.

Bug report를 mail 또는 post하기 전에 FAQ를 반드시 읽습니다.

2004년 10월 30일 James Nelson <[email protected]>이 cleanup, update와 module-configuration reference를 추가했습니다. 원문 문서는 2000년 6월 3일 작성됐습니다.

Floppy bug report checklist
Read fdutils FAQCollect driver symptomInclude floppy in subjectAdd filesystem type for mount failuresMail maintainer or post to comp.os.linux.hardware

질문을 보내기 전 필요한 확인과 subject 정보를 정리합니다.