📄 ide.txt
字号:
ide.txt -- Information regarding the Enhanced IDE drive in Linux 2.2/2.3/2.4=============================================================================== +-----------------------------------------------------------------+ | The hdparm utility for controlling various IDE features is | | packaged separately. Look for it on popular linux FTP sites. | +-----------------------------------------------------------------+See description later on below for handling BIG IDE drives with >1024 cyls.Major features of the 2.1/2.2 IDE driver ("NEW!" marks changes since 2.0.xx):NEW! - support for IDE ATAPI *floppy* drives - support for IDE ATAPI *tape* drives, courtesy of Gadi Oxman (re-run MAKEDEV.ide to create the tape device entries in /dev/) - support for up to *four* IDE interfaces on one or more IRQs - support for any mix of up to *eight* IDE drives - support for reading IDE ATAPI cdrom drives (NEC,MITSUMI,VERTOS,SONY) - support for audio functions - auto-detection of interfaces, drives, IRQs, and disk geometries - "single" drives should be jumpered as "master", not "slave" (both are now probed for) - support for BIOSs which report "more than 16 heads" on disk drives - uses LBA (slightly faster) on disk drives which support it - support for lots of fancy (E)IDE drive functions with hdparm utility - optional (compile time) support for 32-bit VLB data transfers - support for IDE multiple (block) mode (same as hd.c) - support for interrupt unmasking during I/O (better than hd.c) - improved handshaking and error detection/recovery - can co-exist with hd.c controlling the first interface - run-time selectable 32bit interface support (using hdparm-2.3) - support for reliable operation of buggy RZ1000 interfaces - PCI support is automatic when rz1000 support is configured - support for reliable operation of buggy CMD-640 interfaces - PCI support is automatic when cmd640 support is configured - for VLB, use kernel command line option: ide0=cmd640_vlb - this support also enables the secondary i/f when needed - interface PIO timing & prefetch parameter support - experimental support for UMC 8672 interfaces - support for secondary interface on the FGI/Holtek HT-6560B VLB i/f - use kernel command line option: ide0=ht6560b - experimental support for various IDE chipsets - use appropriate kernel command line option from list below - support for drives with a stuck WRERR_STAT bit - support for removable devices, including door lock/unlock - transparent support for DiskManager 6.0x and "Dynamic Disk Overlay" - works with Linux fdisk, LILO, loadlin, bootln, etc.. - mostly transparent support for EZ-Drive disk translation software - to use LILO with EZ, install LILO on the linux partition rather than on the master boot record, and then mark the linux partition as "bootable" or "active" using fdisk. (courtesy of Juha Laiho <jlaiho@ichaos.nullnet.fi>). - auto-detect of disk translations by examining partition table - ide-cd.c now compiles separate from ide.c - ide-cd.c now supports door locking and auto-loading. - Also preliminary support for multisession and direct reads of audio data. - experimental support for Promise DC4030VL caching interface card - email thanks/problems to: peterd@pnd-pc.demon.co.uk - the hdparm-3.1 package can be used to set PIO modes for some chipsets.NEW! - support for setting PIO modes with the OPTi 82C621, courtesy of Jaromir Koutek.NEW! - support for loadable modulesNEW! - optional SCSI host adapter emulation for ATAPI devicesNEW! - generic PCI Bus-Master DMA supportNEW! - works with most Pentium PCI systems, chipsets, add-on cardsNEW! - works with regular DMA as well as Ultra DMANEW! - automatically probes for all PCI IDE interfacesNEW! - generic support for using BIOS-configured Ultra-DMA (UDMA) transfers*** IMPORTANT NOTICES: BUGGY IDE CHIPSETS CAN CORRUPT DATA!!*** =================*** PCI versions of the CMD640 and RZ1000 interfaces are now detected*** automatically at startup when PCI BIOS support is configured.****** Linux disables the "prefetch" ("readahead") mode of the RZ1000*** to prevent data corruption possible due to hardware design flaws.****** For the CMD640, linux disables "IRQ unmasking" (hdparm -u1) on any*** drive for which the "prefetch" mode of the CMD640 is turned on.*** If "prefetch" is disabled (hdparm -p8), then "IRQ unmasking" can be*** used again.****** For the CMD640, linux disables "32bit I/O" (hdparm -c1) on any drive*** for which the "prefetch" mode of the CMD640 is turned off.*** If "prefetch" is enabled (hdparm -p9), then "32bit I/O" can be*** used again.****** The CMD640 is also used on some Vesa Local Bus (VLB) cards, and is *NOT**** automatically detected by Linux. For safe, reliable operation with such*** interfaces, one *MUST* use the "ide0=cmd640_vlb" kernel option.****** Use of the "serialize" option is no longer necessary.This is the multiple IDE interface driver, as evolved from hd.c.It supports up to six IDE interfaces, on one or more IRQs (usually 14 & 15).There can be up to two drives per interface, as per the ATA-2 spec.Primary: ide0, port 0x1f0; major=3; hda is minor=0; hdb is minor=64Secondary: ide1, port 0x170; major=22; hdc is minor=0; hdd is minor=64Tertiary: ide2, port 0x1e8; major=33; hde is minor=0; hdf is minor=64Quaternary: ide3, port 0x168; major=34; hdg is minor=0; hdh is minor=64fifth.. ide4, usually PCI, probedsixth.. ide5, usually PCI, probedTo access devices on interfaces > ide0, device entries must first becreated in /dev for them. To create such entries, simply run the includedshell script: /usr/src/linux/scripts/MAKEDEV.ideApparently many older releases of Slackware had incorrect entriesin /dev for hdc* and hdd* -- this can also be corrected by running MAKEDEV.ideide.c automatically probes for most IDE interfaces (including all PCI ones),for the drives/geometries attached to those interfaces, and for theIRQ numbers being used by the interfaces (normally 14, 15 for ide0/ide1).For special cases, interfaces may be specified using kernel "command line"options. For example, ide3=0x168,0x36e,10 /* ioports 0x168-0x16f,0x36e, irq 10 */Normally the irq number need not be specified, as ide.c will probe for it: ide3=0x168,0x36e /* ioports 0x168-0x16f,0x36e */The standard port, and irq values are these: ide0=0x1f0,0x3f6,14 ide1=0x170,0x376,15 ide2=0x1e8,0x3ee,11 ide3=0x168,0x36e,10Note that the first parameter reserves 8 contiguous ioports, whereas thesecond value denotes a single ioport. If in doubt, do a 'cat /proc/ioports'.In all probability the device uses these ports and IRQs if it is attachedto the appropriate ide channel. Pass the parameter for the correct idechannel to the kernel, as explained above.Any number of interfaces may share a single IRQ if necessary, at a slightperformance penalty, whether on separate cards or a single VLB card.The IDE driver automatically detects and handles this. However, this mayor may not be harmful to your hardware.. two or more cards driving the same IRQcan potentially burn each other's bus driver, though in practice thisseldom occurs. Be careful, and if in doubt, don't do it!Drives are normally found by auto-probing and/or examining the CMOS/BIOS data.For really weird situations, the apparent (fdisk) geometry can also be specifiedon the kernel "command line" using LILO. The format of such lines is: hdx=cyls,heads,sects,wpcom,irqor hdx=cdromwhere hdx can be any of hda through hdh, Three values are required(cyls,heads,sects). For example: hdc=1050,32,64 hdd=cdromeither {hda,hdb} or {hdc,hdd}. The results of successful auto-probing mayoverride the physical geometry/irq specified, though the "original" geometrymay be retained as the "logical" geometry for partitioning purposes (fdisk).If the auto-probing during boot time confuses a drive (ie. the drive workswith hd.c but not with ide.c), then an command line option may be specifiedfor each drive for which you'd like the drive to skip the hardwareprobe/identification sequence. For example: hdb=noprobeor hdc=768,16,32 hdc=noprobeNote that when only one IDE device is attached to an interface,it should be jumpered as "single" or "master", *not* "slave".Many folks have had "trouble" with cdroms because of this requirement,so ide.c now probes for both units, though success is more likelywhen the drive is jumpered correctly.Courtesy of Scott Snyder and others, the driver supports ATAPI cdrom drivessuch as the NEC-260 and the new MITSUMI triple/quad speed drives.Such drives will be identified at boot time, just like a hard disk.If for some reason your cdrom drive is *not* found at boot time, you can forcethe probe to look harder by supplying a kernel command line parametervia LILO, such as: hdc=cdrom /* hdc = "master" on second interface */or hdd=cdrom /* hdd = "slave" on second interface */For example, a GW2000 system might have a hard drive on the primaryinterface (/dev/hda) and an IDE cdrom drive on the secondary interface(/dev/hdc). To mount a CD in the cdrom drive, one would use something like: ln -sf /dev/hdc /dev/cdrom mkdir /cd mount /dev/cdrom /cd -t iso9660 -o roIf, after doing all of the above, mount doesn't work and you seeerrors from the driver (with dmesg) complaining about `status=0xff',this means that the hardware is not responding to the driver's attemptsto read it. One of the following is probably the problem: - Your hardware is broken. - You are using the wrong address for the device, or you have the drive jumpered wrong. Review the configuration instructions above. - Your IDE controller requires some nonstandard initialization sequence before it will work properly. If this is the case, there will often be a separate MS-DOS driver just for the controller. IDE interfaces on sound cards usually fall into this category. Such configurations can often be made to work by first booting MS-DOS, loading the appropriate drivers, and then warm-booting linux (without powering off). This can be automated using loadlin in the MS-DOS autoexec.If you always get timeout errors, interrupts from the drive are probablynot making it to the host. Check how you have the hardware jumperedand make sure it matches what the driver expects (see the configurationinstructions above). If you have a PCI system, also check the BIOSsetup; I've had one report of a system which was shipped with IRQ 15disabled by the BIOS.The kernel is able to execute binaries directly off of the cdrom,provided it is mounted with the default block size of 1024 (as above).Please pass on any feedback on any of this stuff to the maintainer,whose address can be found in linux/MAINTAINERS.Note that if BOTH hd.c and ide.c are configured into the kernel,hd.c will normally be allowed to control the primary IDE interface.This is useful for older hardware that may be incompatible with ide.c,and still allows newer hardware to run on the 2nd/3rd/4th IDE portsunder control of ide.c. To have ide.c also "take over" the primaryIDE port in this situation, use the "command line" parameter: ide0=0x1f0The IDE driver is partly modularized. The high level disk/cdrom/tape/floppydrivers can always be compiled as loadable modules, the chipset driverscan only be compiled into the kernel, and the core code (ide.c) can becompiled as a loadable module provided no chipset support and no specialpartition table translations are needed.When using ide.c/ide-tape.c as modules in combination with kerneld, add: alias block-major-3 ide-probe alias char-major-37 ide-taperespectively to /etc/modules.conf.When ide.c is used as a module, you can pass command line parameters to thedriver using the "options=" keyword to insmod, while replacing any ',' with';'. For example: insmod ide.o options="ide0=serialize ide2=0x1e8;0x3ee;11"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -