Налаштування udev rules в linux

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

Всі файли пристроїв зберігаються в каталозі / dev. Цей каталог генерується під час завантаження спеціальним сервісом - udev, на основі підключених до комп`ютера пристроїв і певних правил. За замовчуванням в udev вже закладені всі необхідні для нормальної роботи пристроїв правила. Але деякі користувачі хочуть мати можливість самим настроювати пристрої і вибирати їм імена і права доступу. Крім того, розуміння процесу генерації файлів пристроїв, дає можливість глибше зрозуміти роботу операційної системи.

Правила udev можуть:

  • Перейменувати пристрій, наприклад, жорсткий диск або мережеву карту;
  • Створити додаткове ім`я для пристрою;
  • Поміняти права доступу до пристрою;
  • Встановити власника і групу;
  • Виконати скрипт при підключенні або відключенні пристрою.

Загальна інформація

Правила Udev зберігаються в папці /etc/udev/rules.d. Файл правил обов`язково повинен мати розширення .rules. Зазвичай в цій папці вже є кілька файлів udev rules, але їх чіпати не рекомендується, для своїх правил краще створити окремий файл, наприклад:

SUBSYSTEM == "block", ATTR (size) == "1343153213", NAME = "mydisk"

Це правило виконатися тільки для пристрою підсистеми block і з розміром 1343153213 байт. Звідки брати ці значення ми розглянемо нижче, а поки розберемося що ж означають ті чи інші ключі. Спочатку ключі відповідності:

  • SUBSYSTEM - підсистема пристрої;
  • KERNEL - ім`я видається пристрою ядром;
  • DRIVER - драйвер обслуговуючий пристрій;
  • ATTR - sysfs атрибут пристрої;
  • SUBSYSTEMS - підсистема батьківського пристрою;

Пристрій може мати батьківські пристрої, наприклад жорсткий диск має батьківський пристрій SSCI, яке в свою чергу має батьківський пристрій шину BUS. Іноді необхідно отримати інформацію з батьківського пристрою, для цього використовуються ключі SUBSYSTEMS, KERNELS, DRIVERS, ATTRS відповідно.

Для дій використовуються ключі:

  • NAME - встановити ім`я файлу пристрою
  • SYMLINK - альтернативне ім`я пристрою
  • RUN - виконати скрипт при підключенні пристрою
  • GROUP - група у якій є доступ до файлу
  • OWNER - власник файлу пристрою
  • MODE - маска прав доступу

Відео: How to Execute a Script When Usb plug-in Linux udev rules




Розглянемо докладніше ключ ATTR. Він дозволяє отримати інформацію про пристрій, доступну в sysfs. Наприклад, ATTR {size} = 13413423124 якщо розмір пристрою дорівнює 13413423124. Подивитися всі можливі sysfs параметри для пристрою можна безпосередньо в файлової системі / sys. Наприклад, для диска / dev / sda є каталог / sys / block / sda / в якому можна знайти файли size, stat, ro, range і т д. Також подивитися всі можливі Udev параметри для пристрою можна за допомогою утиліти udevadm. Наприклад, для диска / dev / sda:

looking at device `/devices/pci0000:00/0000:00:11.0/ata1/host0/target0:0:0/0:0:0:0/block/sda`:
KERNEL == "sda"
SUBSYSTEM == "block"
DRIVER == ""
ATTR {ro} == "0"
ATTR {size} == "976773168"
ATTR {stat} == "205 0 3408 339 0 0 0 0 0 234 339"
ATTR {range} == "16"
ATTR {discard_alignment} == "0"
ATTR {events} == ""
ATTR {ext_range} == "256"
ATTR {events_poll_msecs} == "- 1"
ATTR {alignment_offset} == "0"
ATTR {inflight} == "0 0"
ATTR {removable} == "0"
ATTR {capability} == "50"
ATTR {events_async} == ""

...

Опція -n задає ім`я пристрою, -p шлях в sysfs. Наприклад, те ж саме отримаємо якщо виконати:

$ Nano /etc/udev/rules.d/10-local.rulesSUBSYSTEM=="block ", ATTR {size} ==" 976773168 ", name =" root "


Отримаємо пристрій / dev / root, яке буде вказувати на кореневий розділ (sda1), те ж саме можна зробити для приводу оптичних дисків:

...

ATTRS {model} == "DVDRAM GH22NS70"

Відео: Software write blocking with udev rules

...

# Ln -s / dev / sr0 / dev / cdrom

Як перейменувати мережеву карту

Налаштування udev linux на цьому не закінчується. Мережева карта, теж пристрій і теж управляється udev. Файли мережевих пристроїв зберігаються в / sys / class / net. Тому отримуємо інформацію про неї за допомогою udevadm:

SUBSYSTEM == "net", ATTR {address} == "bc: ae: c5: be: 8b: b7", NAME = "eth0"

Перезавантажуємо комп`ютер і тепер пристрій називається eth0.

Як запустити скрипт при підключенні пристрою

Наприклад, ми хочемо автоматично скопіювати всі дані з флешки при її підключенні до комп`ютера. Ми знаємо що флешка буде називатися / dev / sdb, тоді можна створити правило udev такого виду:

creating link `/ dev / root` to `/ dev / sda`

Значить все працює, настройка udev виконана успішно.

Відео: [DEPRECATED] Install and set up the Android SDK, ADB and fastboot on Linux Mint 17 64-Bit

Якщо ж в правилі допустити синтаксичну помилку, наприклад, UBSYSTEM замість SUBSYSTEM, udevadm test видасть щось подібне:


unknown key "UBSYSTEM" in /etc/udev/rules.d/10-local.rules:2
invalid rule "/etc/udev/rules.d/10-local.rules:2"

Тут ми бачимо саму причину помилки, невірний ключ, а також файл і рядок в якій допущена помилка.

Відео: Setup Hardware Devices debugging for Android Studio on Ubuntu 15.10 behind VirtualBox

висновки

На цьому все. Тепер ви знаєте як створити правило udev і взяти повністю під контроль всі ваші пристрої. Якщо потрібна більш детальна інформація щодо створення і використання правил udev читайте:

$ Man udev
Поділися в соціальних мережах:

Схожі
Системи ініціалізації linuxСистеми ініціалізації linux
Підключення пристрою linuxПідключення пристрою linux
Файлова система linuxФайлова система linux
Процес завантаження linuxПроцес завантаження linux
Команда del (erase)Команда del (erase)
Як приховати файли на androidЯк приховати файли на android
Налаштування selinuxНалаштування selinux
Типи файлів в linuxТипи файлів в linux
Як перенести бібліотеку itunes на інший комп`ютерЯк перенести бібліотеку itunes на інший комп`ютер
Команда dd linuxКоманда dd linux
» » Налаштування udev rules в linux