Специальные файлы устройств Linux

Специальные файлы устройств предназначены для ввода данных с аппаратных устройств и вывода данных на них. Настоящую работу но вводу и выводу данных проделывает драйвер устройства, а специальные файлы играют роль своеобразных «порталов» связи с драйверами.

Различают символьные и блочные специальные файлы устройств, у которых минимальной единицей обмена информацией с драйверами является блок (обычно размером в 512 байт) или символ (1 байт), соответственно.

Специальные файлы устройств

john@ubuntu:~$ ls  -l /dev/sd* /dev/input/mouse* /dev/video* /dev/snd/pcm*
crw-r——    1 root root       13,  32     марта 24  23:47 /dev/input/mouse0
brw-rw—-    1 root disk        8,    0      марта 27  15:02 /dev/sda
brw-rw—-    1 root disk        8,    1       марта 24  23:48 /dev/sda1
brw-rw—-    1 root disk        8,    2      марта 24  23:47 /dev/sda2

brw-rw—-     1 root disk       8,   5       марта 24 23:45 /dev/sda5
crw-rw—T+  1 root audio  116,  4       марта 27 19:02 /dev/snd/pcmC0D0c
crw-rw—T+  1 root audio  116,  3       марта 27 13:48 /dev/snd/pcmC0D0p
crw-rw—T+  1 root audio  116,  2       марта 24 23:47 /dev/snd/pcmC0D3p
crw-rw—-+  1 root video     81,  0       марта 24 23:45 /dev/videoO

Все драйверы ядра пронумерованы главными (мажорными, major) числами , а аппаратные устройства, находящиеся под их управлением, — дополнительными (минорными, minor) числами.

Например, все IDE-диски работают под управлением драйвера hd, имеющего 3major (первичный контроллер) и 22major (вторичный контроллер), и нумеруются как Ominor (мастер-диск) и 64minor (слэйв-диск). Аналогично, SCSI-диски работают под управлением драйвера sd, имеющего 8major, и нумеруются 0minor(первый диск), 16minor (второй диск) и т. д.

Основной характеристикой специальных файлов устройств является пара чисел major, minor (иногда называемых характеристическими числами), привязывающая их к конкретному драйверу и управляемому им устройству. Имена специальных файлов и их местоположение в дереве каталогов не имеют никакого значения, но по соглашению MAKEDEV(8) их принято располагать в каталоге /dev и именовать созвучно именам драйверов.

Специальными файлами дисковых устройств пользуются программы, управляющие структурами самого носителя, например таблицами разделов fdisk и parted, или механикой накопителя eject, или файловыми системами разделов носителя mount, fsck, mkfs и пр.

Чтение таблицы разделов диска

john@ubuntu:~$ sudo fdisk -l /dev/sda

Диск /dev/sda: 500.1 Гб, 500107862016 байт
255 головок, 63 секторов/треков, 60801 цилиндров, всего 976773168 секторов

Units = секторы of 1 * 512 = 512 bytes
Размер сектора (логического/физического): 512 байт / 4096 байт

I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Идентификатор диска: 0x000c8d62

Устр-во  Загр       Начало           Конец         Блоки      Id     Система
/dev/sda1      *            2048          499711         248832    83          Linux
/dev/sda2                501758     976771071  488134657      5          Расширенный
Partition  2  does  not  start  on  physical  sector  boundary.
/dev/sda5                501760      976771071  488134656     8e        Linux LVM

Открытие лотка DVD

john@ubuntu;~$ ls -l /dev/dvd

lrwxrwxrwx  1  root  root    3   марта  28 14:55 /dev/dvd -> sr0

john@ubuntu:~$  eject /dev/dvd

Особенное место занимают драйверы терминалов — оконечных устройств для взаимодействия с пользователями.

Аппаратные терминалы (например, VT100), подключающиеся посредством последовательного интерфейса RS232, доступны при помощи специальных файлов /dev/ttySN драйвера приемопередатчика последовательного порта ttyS. Виртуальные терминалы, реализующиеся консолью (стандартной клавиатурой и дисплеем в алфавитно-цифровом режиме), доступны при помощи специальных файлов /dev/ttyN  драйверов консоли console_ioctl и tty_ioctl.

Специальные файлы терминалов

john@ubuntu:~$ ls -la /dev/tty?
crw—w—-  1 root               tty 4, 0 марта 22 23:43 /dev/tty0
crw———  1 john              tty 4, 1 марта 25 10:46 /dev/ttyl
crw———  1 mike             tty 4, 2 марта 25 10:47 /dev/tty2
crw———  1 marcel          tty 4, 3 марта 25 10:48 /dev/tty3
crw———  1 troll               tty 4, 4 марта 25 10:47 /dev/tty4
crw———  1 bubble         tty 4, 5 марта 25 10:47 /dev/tty5
crw-rw—- 1 root                tty 4, 5 марта 25 10:47 /dev/tty6

Именно эти специальные файлы терминалов используют команды write и wall для отсылки сообщений пользователям, зарегистрировавшимся в системе, setfont для смены шрифтов, chvt для переключения между терминалами, a setleds для управления светодиодами клавиатуры.

Включение светодиодов CAPS LOCK и SCROLL LOCK

john@ubuntu:~$ tty

/dev/tty1

john@ubuntu:~$ setleds -L +num +scroll

Кроме специальных файлов настоящие аппаратных устройств, в арсенале Linux имеются специальные файлы псевдоустройств, такие как /dev/null, /dev/full и /dev/zero, симулирующих всегда пустое, всегда полное и бесконечно нулевое устройство, см. null.

Всегда пустое устройстово /dev/null широко применяется на практике в качестве «подавляющего» стока информации при перенаправлениях, а бесконечно нулевое устройство /dev/zero зачастую используют в качестве источника для получения нулевых файлов нужной величины.

Псевдоустройства /dev/random и /dev/urandom организуют доступ к ядерному генератору случайных и псевдослучайных чисел random, основанных на внешних событиях периферийных устройств.

Потоки случайных чисел используются в качестве источников энтропии для криптоалгоритмов, в частности используются библиотекой W:[0penSSL], или служат команде shred источником случайных байтов для надежного стирания данных.

Специальные файлы устройств Linux: 1 комментарий

  1. Уведомление: Дискреционное разграничение доступа Linux | Debian GNU/Linux

Добавить комментарий