However, not all Linux distributions default to using libata. *buntu Feisty and Gutsy are all over the map; some versions of them use the new naming convention, some don't, and I haven't figured out which ones, or why. You can see how your own system handles these names with a couple of simple commands. This example from Kubuntu Gutsy shows the old style:
$ ls /dev|grep '[s|h]d[a-z]' hda hda1 hda2 hdc hdd sda sda1 sda2 $ mount|grep ^'/dev' /dev/hda1 on / type ext3 (rw,errors=remount-ro) /dev/sda1 on /home type ext3 (rw) /dev/sda2 on /media/sda2 type ext3 (rw) /dev/hda2 on /var type ext3 (rw)
The first command shows all the ATA and SCSI devices detected by your kernel. The second command shows which ones are mounted. On this system there is one PATA hard disk with two partitions (hda), two CD/DVD drives (hdc, hdd), and one SATA disk with two partitions (sda). When I boot into Fedora 8, which defaults to libata, it looks like this:
$ ls /dev|grep '[s|h]d[a-z]' sda sda1 sda2 sdb sdb1 sdb2Where are the two CD/DVD drives? These get /dev/sr* names under libata:
$ ls /dev|grep sr sr0 sr1
In addition to cleaning up a pile of old kernel messes, libata supports power management, SMART (Self-Monitoring, Analysis and Reporting Technology System), and SATA port multiplier (PMP). PMP means you can use a single controller with multiple SATA devices. The one downside is you don't get as many partitions on PATA disks- under the old IDE subsystem you could have 64 partitions, but you only get 15 under libata. So if you like to carve your PATA disks into vast numbers of partitions, you'll either need to use the old subsystems and drivers, or join the 21st century and use LVM. (Or try the experimental kernel patch by Carl-Daniel Hailfinger that lets you have 127 partitions on a single hard disk; see Resources.)
# /dev/sda1 UUID=b099f554-db0b-45d4-843e-0d6a1c43ba44 /home ext3 defaults 0 2Yes, UUIDs are long and unattractive. But they are unique, so no matter what udev or anything else on your system tries to do with them, they will always be the same. How do you know what the UUID is?
# vol_id -u /dev/sda1 b099f554-db0b-45d4-843e-0d6a1c43ba445
On Fedora it's /lib/udev/vol_id.
Another option is to use filesystem labels. Red Hat, Fedora, and all of their extended family like to use them. Labels are quick and easy to create or change. An entry in /etc/fstab looks like this:
LABEL=/1 / ext3 defaults 1 1vol_id --export [device name] displays complete information, including labels. Where does this label come from? Fedora creates it at installation. To create or change filesystem labels, you need to use a command specific to your filesystem. e2label is for Ext3. For ReiserFS, use reiserfstune, and you must unmount the filesystem first. On XFS use xfs_admin, and for JFS you need jfs_tune. For FAT filesystems use mlabel, which is part of mtools.
With libata, how do you know which of your PATA drives are masters or slaves, and on which IDE controller? Just look at the output of dmesg|grep ata, and then use this table to figure out what's what:
ata1.00 primary master ata1.01 primary slave ata2.00 secondary master ata2.01 secondary slavedmesg also tells you if the kernel sees your PATA and ATAPI drives as hd or sd. Run dmesg|grep '[s|h]d[a-z]' to find out.
- Merging libata PATA support into the base kernel
- libATA FAQ
- support for 127 Partitions on SATA, IDE and SCSI
- Manage Linux Storage with LVM and Smartctl