Специальные файлы устройств предназначены для ввода данных с аппаратных устройств и вывода данных на них. Настоящую работу но вводу и выводу данных проделывает драйвер устройства, а специальные файлы играют роль своеобразных «порталов» связи с драйверами.
Различают символьные и блочные специальные файлы устройств, у которых минимальной единицей обмена информацией с драйверами является блок (обычно размером в 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 | Debian GNU/Linux