Устройства и виртуальные файловые системы в Linux

  • HAL (hardware abstraction level) — программная подсистема, которая предоставляет абстракцию железа для ОС. Сама выбирает нужный драйвер для общения с железом. Сейчас не используется, вместо нее udev;
  • Dbus - программная шина, позволяющая процессам обмениваться информацией, а так же получать информацию от ядра и передавать ее программам;
  • Udev - современный менеджер устройств. Работает на уровне пользователя, а не ядра. Управляется событиями, а не по расписанию как HAL. Держит в системе только файлы активных устройств. Сохраняет имена устройств при переподключении. Создает файлы устройств в каталоге /dev.
    Каталог /dev содержит файлы устройств, как правило это указатели на драйверы устройств, когда процесс обращается к файлу устройства он обращается к драйверу. Тут нет файлов видеокарт и сетевых карт потому что они работают с пакетами, а не с байтами
  • /dev/mem - образ оперативной памяти;
  • /dev/null - всегда принимает на запись любые значения и возвращает успех, используется для отправки вывода в мусор, например ls > /dev/null 2>&1 - отправка всего вывода и ошибок от ls в null, то есть отбрасывание их;
  • /dev/random /dev/urandom - интерфейс к системному генератору случайных чисел;
  • /dev/tty - аппаратный терминал;
  • /dev/pts/ - псевдотерминалы;
  • /dev/sdX - блочные устройства (носители данных).
    Типы объектов файловой системы:
  • l - link (ссылка);
  • d - directory (каталог);
  • b - block (блочное устройство);
  • c - character (символьное устройство)
    Sysfs — виртуальная файловая система, выводит на уровень пользователя информацию от ядра системы о присутствующих в системе устройствах и драйверах. Монтируется в каталог /sys. Является частью udev. Если кратко, то sysfs содержит информацию об устройствах, а с помощью devfs осуществляется обращение к устройствам.
  • /sys/devices - все устройства, зарегистрированные в системе, в виде дерева;
  • /sys/bus - программная шина, служит для передачи данных между функциональными блоками (сетевая шина, usb шина, шина процессора и т. д.);
  • /sys/drivers - драйвера;
  • /sys/block - блочные устройства, они появляются в этом каталоге если есть и само устройство и драйвер;
  • /sys/class - группировка устройств по классам;
  • /sys/class/net - сетевые интерфейсы, например ens192, lo;
  • /sys/class/block - дисковые устройства, например sda, sda1, sdb, dm (относится к lvm).
    Procfs — виртуальная файловая система, содержит информацию о всех процессах системы. Монтируется в каталог /proc.
  • /proc/cpuinfo - информация о процессоре;
  • /proc/devices - перечень настроенных устройств;
  • /proc/mounts - смонтированные файловые системы;
  • /proc/sys - каталог с файлами, которые позволяют редактировать параметры системы.
    Вывод информации об оборудовании
  • lscpu информация о процессоре
  • lspci информация об устройствах PCI
  • lsusb информация о шине USB (пакет usbutils)
    udevadm - утилита для работы с устройствами
  • udevadm info получение информации из БД, нужно указать путь к устройству
  • udevadm trigger создать событие на которое udev должен среагировать
  • udevadm settle дождаться завершение обработки всех событий
  • udevadm control управление демоном udev
  • udevadm monitor слежка за событиями
  • udevadm test симулирование запуска события
  • udevadm info -h помощь по udevadm info
  • udevadm info /dev/sda вывод информации об устройстве
  • udevadm info -a /sys/class/net/ens192 вывод полной информации об устройстве
  • udevadm monitor --property --kernel вывод событий property и kernel
  • udevadm test /sys/block/sda тестирование устройства
    Модули ядра — это программные модули, расширяющие функционал ядра, а так же драйверы
  • lsmod информация о модулях ядра
  • modinfo e1000 вывод информации о драйвере сети
  • modinfo vmxnet3 вывод информации о vmware virtual nic driver
  • insmod установка модуля ядра
  • rmmod удаление модуля ядра
  • modprobe деликатное удаление или добавление модулей с зависимостями
  • modprobe e1000 добавление модуля сети
  • rmmode e1000 удаление модуля сети