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 деликатное удаление или добавление модулей с зависимостями