Linux предоставляет многие интерфейсы устройств ядра через специальные объекты файловой системы — узлы устройств. Обычно они находятся в /dev вместе с полезными символическими ссылками и конечными точками связи. Открытие узла соединяет приложение с драйвером ядра, а не с байтами обычного файла.
Устройства · Урок 1
Каталог /dev
Узнайте, как Linux предоставляет интерфейсы устройств и псевдоустройства через узлы в `/dev`.
Исследование `/dev`
Просмотрите каталог, не разыменовывая и не читая устройства:
$ ls -l /dev
Записи могут представлять физические накопители, терминалы, ввод, логические устройства или псевдоустройства ядра. Не каждому аппаратному компоненту нужен видимый узел, а одно устройство может иметь несколько ссылок или интерфейсов.
Первый символ длинного списка указывает тип объекта. Символьные и блочные узлы обозначаются c и b; далее рассматриваются их major- и minor-номера.
Что происходит, когда программа открывает узел устройства в /dev?
Псевдоустройства
Некоторые узлы предоставляют службы ядра без физического оборудования. /dev/null принимает и отбрасывает записанные данные:
$ command > /dev/null
Другие примеры: /dev/zero выдаёт нулевые байты, а /dev/urandom — случайные байты подсистемы ядра. У каждого своя семантика, которую нельзя выводить лишь из имени.
Что /dev/null делает с записанными данными?
Динамическое управление устройствами
В современных Linux ядровая devtmpfs создаёт базовые узлы при появлении устройств. Пользовательский менеджер вроде udev обрабатывает события, назначает разрешения и владельцев и создаёт ссылки или имена по правилам. Точное разделение обязанностей зависит от системы.
Постоянные ссылки /dev/disk/by-id/ или /dev/disk/by-uuid/ безопаснее в конфигурации, чем имена порядка обнаружения вроде /dev/sda, способные измениться с топологией и порядком устройств.
Почему в конфигурации могут предпочесть /dev/disk/by-id/... вместо /dev/sda?
Безопасное взаимодействие
Стандартные инструменты умеют открывать узлы, но произвольные чтения и записи от этого не становятся безопасными. Чтение может раскрыть ввод или данные, а запись на диск, терминал или в прошивку — повредить данные или нарушить работу. Поэтому доступ ограничивают разрешения, группы, ACL, capabilities и службы-посредники.
Сначала используйте средства обнаружения только для чтения, подтвердите точный узел и личность устройства и следуйте его документации. Не перенаправляйте данные в незнакомую запись /dev на важной системе.
Почему нельзя записывать произвольные данные в незнакомый узел?
Для безопасного исследования используйте лабораторию Изучение аппаратных устройств в Linux.
Урок завершён
Вы завершили Каталог /dev
Теперь вы умеете описывать /dev как набор живых интерфейсов к ядру.
Отличать узлы устройств от обычных файлов.
Распознавать псевдоустройства вроде
/dev/null.Связывать динамические узлы и постоянные ссылки с управлением устройствами.
Считать прямой доступ специфичным для интерфейса и потенциально разрушительным.
Сохраните прогресс
Создайте бесплатный аккаунт, чтобы сохранить этот урок и продолжить на любом устройстве.
Создать бесплатный аккаунт