Previous Next Contents

4. Floppy and other block devices.

4.1 The Floppy Disk Driver (floppy.o).

There are many floppy driver options, and they are all listed in README.fd in linux/drivers/block. For detailed, up to date, information refer directly to this file.


Load command:
        /sbin/modprobe floppy.o 'floppy="<options>"'

        Option explanations below..

mask,allowed_drive_mask - Sets the bitmask of allowed drives to mask. By default, only units 0 and 1 of each floppy controller are allowed. This is done because certain non-standard hardware (ASUS PCI motherboards) mess up the keyboard when accessing units 2 or 3. This option is somewhat obsoleted by the cmos option.

all_drives - Sets the bitmask of allowed drives to all drives. Use this if you have more than two drives connected to a floppy controller.

asus_pci - Sets the bitmask to allow only units 0 and 1. (The default)

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.

0,daring - Tells the floppy driver that your floppy controller should be used with caution.

one_fdc - Tells the floppy driver that you have only floppy controller (default)

two_fdc or 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

thinkpad - Tells the floppy driver that you have a Thinkpad. Thinkpads use an inverted convention for the disk change line.

0,thinkpad - Tells the floppy driver that you don't have a Thinkpad.

omnibook or 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, 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.

dma - Tells the floppy driver that a workable DMA channel is available (the default).

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.

fifo - Enables the FIFO (default)

[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.

[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)

unexpected_interrupts - Print a warning message when an unexpected interrupt is received (default behavior)

no_unexpected_interrupts or 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 interrupt only affect performance, and can safely be ignored.)

4.2 Loopback block device support (loop.o).

Enabling this option will allow you to mount a file as a file system. This is useful if you want to check an ISO9660 file system before burning the CD, or want to use floppy images without first writing them to floppy.

This option also allows one to mount a filesystem with encryption. To use these features, you need a recent version of mount and other patches for DES and IDEA. They can be found at http://www.binary9.net/nicholas/linuxkernel/patches. Note that this loop device has nothing to do with the loopback device used for network connections from the machine to itself.


Load command:
        /sbin/modprobe loop.o

        No module parameters.

4.3 Multiple devices driver support (RAID).

This driver lets you combine several harddisk partitions into one logical block device.

Tools that can be used to manage md devices can be found at sweet-smoke.ufr-info-p7.ibp.fr/public/Linux/md035.tar.gz. Same location contains also a document md-FAQ.

There are various levels of Redundant Array of Inexpensive (or Independent) Disks defined.

Only RAID-0 is available for Linux at the moment. Linear mode is not considered as part of RAID definition. The Raid Advisory Board does not consider RAID-0 to be part of RAID definition either, due to missing data redundancy.

Usefull modes for implementation are RAID-0, RAID-1, RAID-5 and RAID-6.

Multiple device in Linear (append) mode (linear.o).

If you use this, then your multiple devices driver will be able to use the so-called linear mode, i.e. it will combine the harddisk partitions by simply appending one to the other.


Load command:
        /sbin/modprobe linear.o

        No module parameters.

Multiple device in RAID-0 (striped) mode (raid0.o).

If you use this, then your multiple devices driver will be able to use the so-called raid0 mode, i.e. it will combine the harddisk partitions into one logical device in such a fashion as to fill them up evenly, one chunk here and one chunk there. This will increase the throughput rate if the partitions reside on distinct disks.


Load command:
        /sbin/modprobe raid0.o

        No module parameters.

4.4 RAM disk support (rd.o).

Enabling this option will allow you to use a portion of your RAM memory as a block device, so that you can make filesystems on it, read and write to it and do all the other things that normal block devices (such as harddrives) can do. It is usually used to load and store a copy of a minimal root file system off of a floppy into RAM during the initial install of Linux.


Load command:
        /sbin/modprobe rd.o

        No module parameters.
        Boottime parameters available, see BootPrompt-HOWTO.

4.5 XT harddisk support (xd.o).

Very old 8 bit hard disk controllers used in the IBM XT computer. No, the existence of XT disk support does NOT mean that you can run Linux on an IBM XT :).


Load command:
        /sbin/modprobe xd.o

        No module parameters.


Previous Next Contents