Вивчаємо:
- одержання інформації про обладнання;
- керування пристроями;
- поняття sysfs, udev, dbus, udevadm
Терміни та утиліти:
- /sys/
- /proc/
- /dev/
- modprobe
- lsmod
- lspci
- lsusb
- udevadm
Апаратна частина сучасних комп’ютерних пристроїв – це окремий курс. У цьому уроці поверхово розглядаються базові маніпуляції з комплектуючими ПК із ОС Linux.
При роботі з пристроями Linux можна зіткнутися з такими поняттями:
- HAL - демон, що представляє шар абстрагування від конкретної АЧ, завдяки якому ОС може звертатися до пристроїв через їх абстрактні уявлення (конкретну інструкцію пристрою передаватиме драйвер), на даний момент є застарілим;
- Dbus - шина, через яку процеси обмінюються інформацією, зокрема, додатки отримують через неї інформацію про обладнання з ядра;
- udev - менеджер пристроїв, що на зміну HAL.
Переваги udev:
- працює на рівні користувача (більше свободи дій);
- подієво-керований (а не опитує ядро за розкладом як HAL);
- зручні конфігураційні файли (а не xml як у HAL);
- містить у системі лише файли активних пристроїв (а не всіх пристроїв як HAL);
- содержит имена устройств неизменными (в HAL имя зависит от порядка подключения).
У директорії /dev знаходиться інформація про інтерфейси роботи з драйверами ядра, наприклад:
- /dev/sda - перший жорсткий диск;
- /dev/sr0 - CD-ROM;
_Примітка: у каталозі /dev, як правило, відсутня інформація про мережеві карти та відеокарти, оскільки робота з ними трохи складніша, ніж прості операції читання-запису.
У /dev лежать спеціальні файли пристроїв, які можна вважати покажчиками драйвери.
За допомогою цих файлів відбувається звернення до пристроїв.
База даних підключених пристроїв зберігається в директорії /sys, де вони розташовані за каталогами і іменуються автоматично згідно з ідентифікаторами, наприклад:
- /sys/block - перелік блокових пристроїв;
- /sys/bus – перелік шин;
Якщо /dev містить файли пристроїв для роботи з програмами, /sys містить інформацію про ці пристрої.
Метафора: /sys – це упаковка, а /dev – вміст.
Інформація про стан ОС і всі запущені процеси знаходиться в директорії /proc, наприклад:
- /proc/cpuinfo - інформація про процесор;
- /proc/mounts – підключені файлові системи;
Найцікавіша директорія - /proc/sys, оскільки вона містить інформацію про систему, а й дозволяє її редагувати «на лету».
Для роботи з модулями ядра, наприклад з драйверами пристроїв, призначені наступні команди:
- lsmod – інформація про модулі ядра;
- lspci - інформація про пристрої PCI;
- lspcmciа – інформація про пристрої PCMCIA;
- lsusb – інформація про шину USB;
- rmmod – видалити модуль;
- insmod – встановити модуль;
- modprobe – делікатно виконати події з модулем.
На окрему увагу заслуговує інструменти роботи з udev – udevadm, який може запускатися з наступними опціями:
- info – отримання інформації із БД;
- trigger - запитати події для пристрою;
- settle - дочекатися завершення обробки;
- control – управління демоном;
- monitor – стежити за подіями;
- test – симулювати запуск події.
Примітка: ми не розглядаємо на цьому етапі такі просунуті дії, як створення власних правил обробки подій обладнання, проте ви можете їх вивчити.