Quick Jumps:
|
Guide Navigation:
|
Devices
Under UNIX, a device is any piece of hardware in the system that a user or
process would explicitly use. Examples of devices include disk drives, tape
drives, soundcards, keyboards, and so on. System components such as the
motherboard, processor, and so on aren't generally considered devices since
users and processes have no reason to access them directly.
The way UNIX treats devices demonstrates the fascination that its originators
had with files. Rather than having to write data to a specific memory address,
notify a device driver, and all kinds of other garbage that some operating
systems require; UNIX only requires that data be read from or written to a file.
The "file" that is used to interact with a device isn't really a file in the
traditional sense, but more of a special file that acts as an alias to a device
driver. Unless you want to write device drivers, there's really no reason to
ever think of these special files as anything but just that - files.
System administration usually focuses on two classes of these special files -
disk devices and magnetic tape devices. For the most part, just knowing what
special file is associated with which device is all the information you'll need.
The operating system or helper programs take care of the rest. For example, to
mount a new disk partition or rewind a backup tape all you need to know is the
special file name for the disk partition or the tape drive.
The special files for hard disks come in two forms: character (which is
unbuffered) and block (which is buffered). Character devices are called raw
devices on some versions of UNIX, including Linux. Every operating system has a
slightly different system for naming hard disk special files, but most follow
either the Linux or Solaris convention.
Solaris uses a highly precise (but slightly complicated) system for naming its
special files. The file itself is named based on the physical disk's controller number
(c), target number (t),
and the partition number (s) (called a "slice"
in Solaris, hence the "s"). For example, the
third slice on the master disk attached to the first IDE controller in a Solaris
system would be identified as c0t0s3, while the
third slice on the slave disk on the same controller would be
c0t1s3. If the device is a SCSI disk, a SCSI
device number (d) is added to the file name.
So the third partition of a disk on the first SCSI controller with a device
number of 7 would be c0t0d7s3. It's complicated,
but it makes sense. The character special files for Solaris disks are located
in /dev/rdsk, and the block special files are
located in /dev/dsk.
The special file names for magnetic tape drives under Solaris are much simpler.
The name of the file is simply a number - the first tape drive in the system is
identified as 0, the second as
1, and so on. The special files are located in
/dev/rmt, so the full pathname to the special
file for the first tape drive is /dev/rmt/0.
The system Linux uses for naming special files isn't even close to being as
complicated as the one Solaris uses, but it's also not as precise. The first
hard disk in a Linux system is identified as hda,
the second as hdb, and so on. A number
attached to the hard disk identifier identifies the partition. For example, the
third partition on the first disk is referenced as hda3.
SCSI disks are referenced in a similar fashion - the first SCSI disk is
sda, the second is sdb,
and so on. The partitions are identified the same way as non-SCSI disks, so the
third partition on the first SCSI disk is referenced as
sda3. The block special files for disks are
located in /dev. Character special files are
rarely used on Linux systems, and are located in /dev/rd.
Just to make life complicated, the character special files on Linux follow the
same naming scheme as character special files on Solaris rather than the standard
Linux convention.
The special file names for magnetic tape drives in Linux are very similar to the
names used under Solaris. Instead of having a separate directory for tape
devices, they are located in /dev with the other
devices. The first magnetic tape drive in the system is referenced as
/dev/rmt0, the second as
/dev/rmt1, and so on.
|