Налаштування 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 читайте:
- Куди встановлюються програми в ubuntu
- Rename (ren) - перейменувати файл або каталог у командному рядку windows.
- Як перенести бібліотеку itunes на інший комп`ютер
- Як примонтировать флешку в linux
- Як приховати файли на android
- Які ставити права доступу на хостингу
- Як подивитися usb пристрої linux
- Установка двох linux на комп`ютер
- Копіювання жорсткого диска в linux
- Налаштування zram в linux
- Процес завантаження linux
- Команда del (erase)
- Налаштування selinux
- Cтруктура файлової системи linux
- Системи ініціалізації linux
- Групи користувачів linux
- Virtualbox не бачить usb в ubuntu
- Команда dd linux
- Підключення пристрою linux
- Права доступу до файлів
- Типи файлів в linux