Менеджер устройств, пришедший на смену HAL.
Инструменты для работы с udev – udevadm, в арсенале которого имеется большое количество различных опций:
Опция | Описание опции |
---|---|
info | получение информации из БД |
trigger | запросить события для устройства |
settle | дождаться завершения обработки |
control | управление демоном |
monitor | следить за событиями |
test | симулировать запуск события |
Примеры использования udevadm:
Получим информацию о сетевой карте
-a
– вывод атрибутов-a
– путьudevadm info -a -p /sys/class/net/ens160
Включаем мониторинг событий происходящих на уровне ядра (в данном случае наблюдалось включение-отключение флешки)
udevadm monitor --property --kernel
Протестируем события, которые могут произойти с блочным устройством
udevadm test /sys/block/sda/
sysfs – виртуальная файловая система. Экспортирует информацию о драйверах и устройствах на уровень пользователя. Монтируется в /sys
devices/
– все устройства ядраbus/
– перечень шинdrivers/
– каталоги драйверовblock/
– каталоги блочных устройствclass/
– группировка устройств по классам
procfs — специальная файловая система, используемая в UNIX-подобных операционных системах. Позволяет получить доступ к информации из ядра о системных процессах. Необходима для выполнения таких команд как ps, w, top. Обычно её монтируют на /proc
Содержит информация о всех запущенных процессах
Примеры использования
Получаем информацию о процессоре
cat /proc/cpuinfo
Посмотрит информацию обо всех смонтированных файловых системах
cat /proc/mounts
Покажет сколько одновременно открытых файлов может использовать пользователь
cat /proc/sys/fs/file-max
Изменим значение file-max
echo 1000000 > /proc/sys/fs/file-max
Посмотрим разрешена ли пересылка пакетов межу сетевыми картами
cat /proc/sys/net/ipv4/ip_forward
/dev/sd буква
– жесткий диск в системах на ядре Linux/dev/sd буква номер
– раздел диска/dev/sr номер
– CD-ROM/dev/eth номер
– Сетевой интерфейс Ethernet/dev/wlan номер
– Сетевой интерфейс Wireless/dev/lp номер
– Принтеры/dev/video номер
– Устройство изображений, камеры, фотоаппараты и т.д./dev/bus/usb/000/номер
– Устройство номер на шине USB первого контролера (000)/dev/dsp
– звуковой вывод
Для того чтобы устройство работало, ему нужен модуль ядра, т.е. драйвер.
Пример работы
Посмотрим какие у нас есть модули ядра
lsmod ... sysimgblt 16384 1 drm_kms_helper psmouse 155648 0 fb_sys_fops 16384 1 drm_kms_helper ...
Среди прочих модулей был замечен такой – psmouse
, получим информацию о данном модуле
modinfo psmouse filename: /lib/modules/5.4.0-42-generic/kernel/drivers/input/mouse/psmouse.ko license: GPL description: PS/2 mouse driver ...
Видим что это драйвер PS/2. Удалим его
rmmod psmouse
проверим, действительно устройство отсутствует
lsmod | grep psmouse
Теперь попробуем его установить используя утилиту insmod
insmod psmouse insmod: ERROR: could not load module psmouse: No such file or directory
Так как insmod не умеет работать с зависимостями. Для аккуратной установки используем утилиту modprobe, которая проверит все зависимости и установит модуль
modprobe psmouse
Проверяем, устройство появилось!
Основные понятия:
Все перечисленные выше технологи настраиваются автоматически, контроллером материнской платы.
Получим информацию о прерываниях
cat /proc/interrupts
Получить информацию об адресации IO по портам
cat /proc/ioports
Получить информацию об адресации IO в памяти
cat /proc/iomem
Получить информацию о DMA
cat /proc/dma 4: cascade
Смотрим, что куда смонтировано
blkid /dev/sr0: UUID="2020-04-23-08-02-07-00" LABEL="Ubuntu-Server 20.04 LTS amd64" TYPE="iso9660" PTUUID="36b64baf" PTTYPE="dos" /dev/sda2: UUID="ecf92244-9c11-4633-8fc1-ee48a7a905a7" TYPE="ext4" PARTUUID="e5d3495a-106d-49a0-b285-557eed8d28f7" /dev/sda3: UUID="IuZpdo-8Lk9-Z7yd-7WdX-AEqc-oncR-rQnvqT" TYPE="LVM2_member" PARTUUID="04f32575-3552-447b-b1e4-d905f89a838a" ...