Как уже говорилось, с точки зрения ОС Linux, все подключаемые к компьютеру устройства (жесткие и съемные диски, терминал, принтер, модем и т. д.), представляются файлами. Если, например, надо вывести на экран какую-то информацию, то система как бы производит запись в файл /dev/tty01.
Физические устройства бывают двух типов: символьными (или байт-ориентированными) и блочными (или блок-ориентированными). Различие между ними состоит в том, как производится считывание и запись информации в эти устройства. Взаимодействие с символьными устройствами производится посимвольно, в режиме потока байтов. К таким устройствам относятся, например, терминалы. На блок-ориентированных устройствах информация записывается (и, соответственно, считывается) блоками. Примером устройств этого типа являются жесткие диски. На диск невозможно записать или считать с него один байт: обмен с диском производится только блоками.
Взаимодействием с физическими устройствами в Linux управляют драйверы устройств, которые либо встроены в ядро, либо подключаются к нему как отдельные модули. Для взаимодействия с остальными частями операционной системы каждый драйвер образует коммуникационный интерфейс, который выглядит как файл. Большинство таких файлов для различных устройств как бы "заготовлены заранее" и располагаются в каталоге /dev.
Если вы заглянете в каталог /dev, то увидите там огромное количество файлов физических устройств. ("Заглянуть в каталог" означает выполнить последовательно две команды cd и ls.) В Таблица 11 .5 приведена небольшая справка по именам наиболее часто используемых специальных файлов.
Таблица 11.5 Основные специальные файлы
Имя
Значение
/dev/console
Системная консоль, т.е. монитор и клавиатура, физически подключенные к компьютеру
/dev/hd
Жесткие диски с IDE-интерфейсом. Устройство /dev/hda1 соответствует первому разделу на первом жестком диске (/dev/hda), т.е. на диске, подключенном как Primary Master
/dev/sd
Жесткие диски с SCSI-интерфейсом
/dev/fd
Файлы дисководов для гибких дисков. Первому дисководу соответствует /dev/fd0, второму /dev/fd1
/dev/tty
Файлы поддержки пользовательских консолей. Название сохранилось с тех пор, когда к системе UNIX® подключались телетайпы в качестве терминалов. В Linux эти файлы устройств обеспечивают работу виртуальных консолей (переключаться между которыми можно с помощью <Alt>+<F1>— <Alt>+<F6>)
/dev/pty
Файлы поддержки псевдо-терминалов. Применяются для удаленных рабочих сессий с использованием telnet
/dev/ttS
Файлы, обеспечивающие работу с последовательными портами. /dev/ttS0 соответствует COM1 в MS-DOS, /dev/ ttS1— COM2. Если ваша мышь подключается через последовательный порт, то /dev/mouse является символической ссылкой на соответствующий /dev/ttSN
/dev/cua
Специальные устройства для работы с модемами
/dev/null
Это устройство— просто черная дыра. Все, что записывается в /dev/null, навсегда потеряно. На это устройство можно перенаправить вывод ненужных сообщений. Если /dev/null используется как устройство ввода, то оно ведет себя как файл нулевой длины
Каждому типу устройств в системе может соответствовать несколько файлов устройств. Поэтому файлы устройств характеризуются двумя номерами: старшим и младшим. Старший номер устройства говорит ядру о том, к какому драйверу относится данный файл, а младший номер показывает, к какому именно устройству данного типа следует обращаться.
Для файлов устройств команда ls -l вместо размера файла выдает старший и младший номера данного устройства.
Более подробную информацию об устройствах можно найти здесь:
less /usr/src/linux/Documentation/devices.txt
man MAKEDEV
Как написано в /usr/src/linux/Documentation/devices.txt, может понадобиться создание некоторых символьных ссылок на файлы устройств для настройки системы. Это - не рекомендация, а просто практический совет. Если ссылки существуют, то они используются для следующих целей:
/dev/mouse Используемый порт мыши
/dev/tape Используемое tape устройство
/dev/cdrom Используемое CD-ROM устройство
/dev/cdwriter Используемое CD-writer устройство (RedHat использует /dev/cdrecorder)
/dev/scanner Используемый сканер.
/dev/modem Используемый порт модема
/dev/root Используемая корневая файловая система
/dev/swap Используемое swap устройство
Например, если у меня будут проблемы с мышью, я буду делать что-то вроде этого (под root):
ls -l /dev/mouse
[посмотреть, присутствует ли устройство mouse и куда оно указывает]
ln -s /dev/ttyS0 /dev/mouse
[создать символьную ссылку - теперь /dev/mouse ссылается на первый последовательный порт]
Для SCSI (и ATAPI) устройств, /dev/tape и /dev/cdrom должны ссылаться на "cooked"- устройства (/dev/st* and /dev/sr*, соответственно), а /dev/cdwriter и /dev/scanner должны ссылаться на соответствующие SCSI устройства (/dev/sg*).
В /dev могут находиться непереходные сокеты и именованные pipes (Non-transient sockets and named pipes). Основные приведены здесь: