Що відбувається при підключенні USB-накопичувача?


21

Який потік подій USB від простору ядра до простору користувача? Я отримую спливаюче вікно на своєму робочому столі, коли я підключаю USB-привід - яка послідовність подій, що призводить від виявлення нового USB-накопичувача до його монтажу та показу цього спливаючого вікна?

Відповіді:


6

Це передається udevв сучасних системах Linux. udevДемон почав з системою буде шукати /etc/udev/rules.dі /lib/udev/rules.dі буде працювати правила відповідності для подій ядра. Вставлення USB-накопичувача призведе до події, здійснить udevпошук відповідного правила та виконає його.

Самі правила визначатимуть, що робить ваша система. Останніми роками udevзв’язався з HAL, який би оповіщав програми через DBUS. Цей підхід зараз застарілий на користь уніфікованого udevрішення, яке, я вважаю, передбачає udevdспілкування dbusбезпосередньо або через dbus-send .

Ви можете відстежувати діяльність програми udevvia udevadm monitor.


2

Я ще не повністю впевнений у цьому, тому візьміть це із зерном солі та додатковими дослідженнями.

Він починається з підсистеми гарячої підключення ядра. Після налаштування пристрою він або викликає будь-яку програму простору користувача, щоб настроїти обробку подій echo hotplug_handler > /proc/sys/kernel/hotplugгарячої підключення (якщо такий встановлений ), або надсилає пакет даних через мережевий сокет kobject_uevent. Коли ядро ​​запускає обробник гарячої плаги, воно встановлює деякі змінні середовища. Коли ядро ​​надсилає пакет даних, воно включає пари key = value. Якщо ви хочете, ви можете налаштувати сценарій, який просто реєструє середовище, і встановити його як обробник (не у вашій виробничій системі, звичайно - тестова установка).

Зазвичай, udev налаштовується як обробник, і в ньому буде встановлено кілька правил щодо обробки подій. Звідти він може запускати інші програми, які роблять інші речі (наприклад, видають dbus-повідомлення). Ці правила udev сильно залежать від конкретного розподілу інтересів.

У цій темі є багато інформації, де хтось намагається написати якусь документацію - зверніть увагу, що перше повідомлення не є точним; продовжуйте читати.


2
Колись це було точно, але зараз не так давно: сучасні udevслухають події на мережевій розетці. (Старий спосіб мав проблеми з серіалізацією / паралельністю.)
ефекту

Оскільки я новачок у цій частині Linux ( udev , hotplug ), я хотів би мати уявлення про кожен описаний тут рядок. Тож ви можете, будь ласка, детальніше розглянути питання про запуски підсистеми гарячої підключення ядра .
Вересень

@ephemient: Дякую за відповідь. Скажіть, будь ласка, послідовність подій.
Вересень
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.