Ядро Linux предоставляет унифицированный интерфейс к устройствам — файлы устройств. Большинству устройств (за исключением, разве что, сете- вых интерфейсов) в Linux соответствуют специальные файлы устройств, размещающиеся в каталоге /dev. Эти файлы не используют блоки данных в файловой системе. Команда ls –l для файлов устройств вместо размера выводит два параметра: мажор и минор. Мажор — это номер драйвера для этого вида устройств в ядре Linux, а минор — номер экземпляра устройства, обслуживаемого данным драйвером.
Файлы устройств бывают блочными (в выводе первый ls –l символ b) и символьными (в выводе первый ls –l символ c). Блочные устройства в Linux — все те, информацию на которые можно записывать исключительно блоками и считывать так же. Блочные файлы устройств — интерфейс к уст- ройствам, имеющим файловую систему. Примерами символьных устройств являются терминал, клавиатура и мышь. Обмен информацией с такими уст- ройствами осуществляется посимвольно.
Схема именования файлов устройств фиксируется специальным соглашени- ем, которое можно найти в каталоге с исходным кодом ядра (обычно
/usr/src/linux) в файле Documentation/devices.txt. Соглашение устанавливает, что файлы устройств IDE жестких дисков называются:
r /dev/hda — Primary Master;
r /dev/hdb — Primary Slave;
r /dev/hdc — Secondary Master;
r /dev/hdd — Secondary Slave.
Имена SCSI-дисков (и SATA) начинаются с sd, первому SCSI-диску соответ- ствует файл устройства /dev/sda, второму — /dev/sdb и т. д. в соответствии со SCSI ID данного жесткого диска.
В ядре Linux для IDE-дисков предусматривается мажор 3, а минор зависит от номера раздела: 0 — для всего диска, 1 — для первого раздела и т. д. Для разделов SCSI и SATA дисков (мажор 8) предусматривается аналогичный порядок (пример 11.2).
Пример 11.2. Файлы устройств жестких дисков
$ ls -l /dev/hda{,1}
brw-rw----
1 root
disk
3,
0 Oct
/dev/hda
brw-rw----
1 root
disk
3,
1 Oct
/dev/hda1
$ ls -l /dev/sda{,1}
brw-rw----
1 root
disk
8,
0 Oct
/dev/sda
brw-rw----
1 root
disk
8,
1 Oct
/dev/sda1
Первичным разделам жестких дисков соответствуют миноры с первого по четвертый. Таким образом, например, для первичных разделов на первом SCSI-диске создаются файлы устройств /dev/sda1, /dev/sda2, /dev/sda3 и
/dev/sda4.
Логические разделы нумеруются, начиная с пяти. Причем даже если на диске нет всех четырех первичных разделов (один из них должен быть расширен- ным для создания логических разделов), то все равно первому логическому разделу будет соответствовать устройство с минором 5. Так, например, пер- вому логическому разделу на Secondary Master IDE-диске будет соответство- вать файл устройства /dev/hdc5.
В примере 11.3 приведен листинг, полученный при выполнении команды sfdisk -l, показывающий разделы на диске и их размер в цилиндрах и бло- ках.
Пример 11.3. Дисковые разделы
# sfdisk -l
Disk /dev/sda: 19457 cylinders, 255 heads, 63 sectors/track
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0
Device Boot Start End #cyls #blocks Id System
/dev/sda1
0+
1073-
1074-
Unknown
/dev/sda2
1073+
8854-
7782-
62501953+
HPFS/NTFS
/dev/sda3
* 8855
Extended
/dev/sda4
-
Empty
/dev/sda5
19083+
374-
3004123+
Linux swap/Solaris
/dev/sda6
8855+
3656-
Linux
/dev/sda7
12511+
6572-
52789558+
Linux
На SATA-диске в примере 11.3 размещены три первичных раздела (/dev/sda1,
..., /dev/sda3), причем третий (/dev/sda3) раздел является расширенным (ex- tended). В нем размещены три логических раздела (/dev/sda5, ..., /dev/sda7). Знаки "плюс" и "минус" сообщают о том, что имело место округление. Если вывести информацию в секторах, его не будет.