Beginners guide to udev in linux

Create UDEV Rules File

Create the «/etc/udev/rules.d/99-oracle-asmdevices.rules» file.

# vi /etc/udev/rules.d/99-oracle-asmdevices.rules

The file should contain the following lines for Oracle Linux 5. The parameter must match the command you used to retrieve the SCSI ID, and the parameter must match the value returned from your disks.

KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_", NAME="asm-disk1", OWNER="oracle", GROUP="dba", MODE="0660"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VB46dec7e0-192e8000_", NAME="asm-disk2", OWNER="oracle", GROUP="dba", MODE="0660"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VBce8c63bb-ac67a172_", NAME="asm-disk3", OWNER="oracle", GROUP="dba", MODE="0660"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VB7437a3b7-95b199cd_", NAME="asm-disk4", OWNER="oracle", GROUP="dba", MODE="0660"

The equivalent for Oracle Linux 6 is shown below.

KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_", NAME="asm-disk1", OWNER="oracle", GROUP="dba", MODE="0660"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="SATA_VBOX_HARDDISK_VB46dec7e0-192e8000_", NAME="asm-disk2", OWNER="oracle", GROUP="dba", MODE="0660"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="SATA_VBOX_HARDDISK_VBce8c63bb-ac67a172_", NAME="asm-disk3", OWNER="oracle", GROUP="dba", MODE="0660"
KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="SATA_VBOX_HARDDISK_VB7437a3b7-95b199cd_", NAME="asm-disk4", OWNER="oracle", GROUP="dba", MODE="0660"

The equivalent for Oracle Linux 7 and 8 is shown below.

KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_", SYMLINK+="asm-disk1", OWNER="oracle", GROUP="dba", MODE="0660"
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="SATA_VBOX_HARDDISK_VB46dec7e0-192e8000_", SYMLINK+="asm-disk2", OWNER="oracle", GROUP="dba", MODE="0660"
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="SATA_VBOX_HARDDISK_VBce8c63bb-ac67a172", SYMLINK+="asm-disk3", OWNER="oracle", GROUP="dba", MODE="0660"
KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="SATA_VBOX_HARDDISK_VB7437a3b7-95b199cd_", SYMLINK+="asm-disk4", OWNER="oracle", GROUP="dba", MODE="0660"

Что такое Linux?

Linux – это еще один термин, который сложнее описать, чем вы можете себе представить. Технически, полный дистрибутив Linux представляет собой «Unix-подобную» операционную систему, но это только начало.

Многие люди используют Linux как сокращенное обозначение того, что было бы более точно описано как GNU/Linux. Сам Linux – это просто ядро, часть операционной системы, которая выполняет основные вычисления и взаимодействует с оборудованием. Утилиты которые работают поверх этого ядра, так же важны.

GNU – это рекурсивная аббревиатура, обозначающая «GNU – это не Unix». Проект GNU не содержит никакого исходного кода Unix, но предоставляет все утилиты, которые вы ожидаете найти в операционной системе Unix. В этом ключевое отличие Unix от Linux.

History

udev was introduced in Linux 2.5. The Linux kernel version 2.6.13 introduced or updated a new version of the uevent interface. A system using a new version of udev will not boot with kernels older than 2.6.13 unless udev is disabled and a traditional /dev directory is used for device access.

In April 2012, udev’s codebase was merged into the systemd source tree, making systemd 183 the first version to include udev. In October 2012, Linus Torvalds criticized Kay Sievers’s approach to udev maintenance and bug fixing related to firmware loading, stating:

In 2012, the Gentoo Linux project created a fork of systemd’s udev codebase in order to avoid dependency on the systemd architecture. The resulting fork is called eudev and it makes udev functionality available without systemd. A stated goal of the project is to keep eudev independent of any Linux distribution or init system. The Gentoo project describes eudev as follows:

On May 29, 2014, support for firmware loading through udev was dropped from systemd, as it has been decided that it is kernel’s task to load firmware. Two days later, Lennart Poettering suggested this patch be postponed until kdbus starts to be utilized by udev; at that point, it is planned to switch udev to use kdbus as the underlying messaging system, and to get rid of the userspace-to-userspace netlink-based transport.

Design

Device drivers are part of the Linux kernel, in which their primary functions include device discovery, detecting device state changes, and similar low-level hardware functions. After loading a device driver into memory from the kernel, detected events are sent out to the userspace daemon udevd. It is the device manager, udevd, that catches all of these events and then decides what shall happen next. For this, udevd has a very comprehensive set of configuration files, which can all be adjusted by the computer administrator, according to their needs.

  • In case a new storage device is connected over USB, udevd is notified by the kernel and itself notifies the udisksd-daemon. That daemon could then mount the file systems.
  • In case a new Ethernet cable is plugged into the Ethernet NIC, udevd is notified by the kernel and itself notifies the NetworkManager-daemon. The NetworkManager-daemon could start dhclient for that NIC, or configure according to some manual configuration.

The complexity of doing so forces application authors to re-implement hardware support logic. Some hardware devices also require privileged helper programs to prepare them for use. These must often be invoked in ways that can be awkward to express with the Unix permissions model (for example, allowing users to join wireless networks only if they are logged into the video console). Application authors resort to using setuid binaries or run service daemons to provide their own access control and privilege separation, potentially introducing security holes each time.

HAL was created to deal with this, but is now deprecated in most Linux distributions.

Вход в систему

Операционная система UNIX — это
многопользовательская система с
разделением времени. Начинать
сеанс работы с ней нужно с
сообщения о том, кто Вы. Это не зависит
от того, работаете Вы за терминалом
в своем кабинете или по
коммутируемой линии связываетесь с
большим узлом общего пользования. В
этом заключается одно из отличий UNIX
от DOS, Windows и Macintosh — операционных
систем, в которых понятие
«многопользовательский»
отсутствует. UNIX должна знать, кто
Вы, чтобы выделять Вас и Ваше
хозяйство среди десятков, сотен и
даже тысяч других пользователей.

Диалог при входе в UNIX примерно
такой:

ttc
ttc!login: krol
Password:
Last login: Sat Sep 7 17:16:35
ttc
%

На вопрос login вводите свое
пользовательское имя, далее
вводите, пароль, данный вам
администратором системы. После
появления % можно работать.

Пользовательское имя — это имя, с
которым связан Ваш вход в систему;
администратор системы присваивает
его, регистрируя данного
пользователя. Пароль позволяет подтвердить,
что Вы действительно тот, за кого
себя выдаете, и таким образом
предотвратить незаконный вход в
систему. Вводимый пароль не
отображается на экране, чтобы никто
его не увидел. Администратор
системы, вероятно, назначит Вам
какой-нибудь начальный пароль, а
затем расскажет, как выбрать и
поменять его.

Знак % — это приглашение,
свидетельствующее о том, что UNIX
готова к приему команд. В Вашей
системе приглашение может быть
иным, очень часто приглашение UNIX
включает имя компьютера.

В некоторых системах может
понадобиться «телефонный
пароль» при регистрации по
телефонной линии. Если такой пароль
Вам нужен, его можно получить у администратора
системы.

Кроме того, может быть задан
вопрос о типе используемого
терминала. Вид. сообщения UNIX о типе
терминала зависит от конкретной
ситуации, но обычно это выглядит
примерно так:

Last login: Sat Sep 7 17:16:35 
ttc
TERM=(vt100)?
%

Строка (vt100)? означает: «Думаю, —
Вы используете терминал VT100. Если
да, нажмите и продолжайте
работу. В противном случае сообщите
мне о типе терминала». VT100 —
удачное предположение, поскольку
большинство наиболее
распространенных коммуникационных
программных пакетов — поддерживают эмуляцию
VT100, т.е. заставят Ваш компьютер
работать как VT100. Сервер TTC
поддерживает также терминал VT100WIN
для пользователей работающих через программу telnet из Windows. Этот
тип терминала позволит вам
отображать русский текст на экране.
Поэтому при входе в систему вы
можете ответит . Если после
этот вы по-прежнему не можете
работать с русским текстом,
обратитесь к администратору
системы.

Если UNIX получит неверную
информацию о типе терминала, может
возникнуть путаница: например,
система будет неправильно
реагировать на нажатие клавиши ,
символы будут отображаться
инверсно и т.д. В случае
возникновения подобных проблем
обратитесь к администратору
системы.

Для завершения сеанса работы в UNIX
дайте команду logout или exit.

What is udev?

The /dev directory

Most Linux users understand that /dev/sda1 is just a fast way of referring to the first partition on the first disk that the kernel found. That’s pretty easy, right?

But consider hotpluggable devices like USB, IEEE 1394, hot-swappable PCI, etc. What is the first device for each of these? And for how long? What will the other devices be named when the first one disappears? How will that affect ongoing transactions? Wouldn’t it be fun if a printing job were suddenly moved from a high-end laser printer to an almost-dead matrix printer just because someone decided to pull the plug on the laser printer (which just happened to be the first printer)?

Enter the device manager. A modern device manager (including udev and eudev) must:

  • Run in userspace.
  • Dynamically create and remove device files.
  • Provide consistent device naming.
  • Provide a userspace application program interface (API).

Every time a change happens within the device structure, the kernel emits a uevent which gets picked up by the device manager. The device manager then follows the rules declared in the /etc/udev/rules.d, /run/udev/rules.d and /lib/udev/rules.d directories. Based on the information contained within the uevent, it finds the rule or rules it needs to trigger and performs the required actions. These actions may involve the creation or deletion of device files, and may also trigger the loading of particular firmware files into kernel memory.

Источник

Философия Unix задокументирована Дугом Макилроем в Bell System Technical Journal за 1978 год:

  1. Сделайте так, чтобы каждая программа хорошо выполняла одну задачу. Чтобы выполнить новую работу, создавайте заново, а не усложняйте старые программы, добавляя новые «функции».
  2. Ожидайте, что выходные данные каждой программы станут входными данными для другой, еще неизвестной программы. Не загромождайте вывод посторонней информацией. Избегайте строго столбчатых или двоичных форматов ввода. Не настаивайте на интерактивном вводе.
  3. Проектируйте и создавайте программное обеспечение, даже операционные системы, которое следует опробовать на раннем этапе, в идеале в течение нескольких недель. Не бойтесь выбросить неуклюжие детали и собрать их заново.
  4. Используйте инструменты, а не неквалифицированную помощь, чтобы облегчить задачу программирования, даже если вам нужно объехать, чтобы создать инструменты, и вы ожидаете, что выбросите некоторые из них после того, как вы закончите их использовать.

Позже он был резюмирован Питером Х. Салусом в книге «Четверть века Unix» (1994):

  • Пишите программы, которые делают одно дело и делают это хорошо.
  • Напишите программы для совместной работы.
  • Напишите программы для обработки текстовых потоков, потому что это универсальный интерфейс.

В своей отмеченной наградами статье о Unix 1974 года Ритчи и Томпсон цитируют следующие конструктивные соображения:

  • Упростите написание, тестирование и запуск программ.
  • Интерактивное использование вместо пакетной обработки .
  • Экономия и элегантность дизайна за счет ограничений по размеру («спасение через страдания»).
  • Самоподдерживающаяся система: все программное обеспечение Unix поддерживается под Unix.

В общих чертах, UNIX характеризуется:

Принцип работы

udev запускается как демон и принимает через сокет netlink события uevents от ядра, которые генерируются при инициализации или удалении устройства из системы. Задаваемые пользователем (системой) правила сверяются со свойствами события и соответствующего устройства, и совпавшее правило (которых может быть несколько) может назвать и создать соответствующий файл устройств, а также выполнить другие программы для инициализации и конфигурации устройства. Например, таким образом можно реализовать автоматическое монтирование внешних накопителей при их подключении.

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

Типичный способ использования udev на Linux-системе — позволить посылать события HAL или DeviceKit, чтобы они произвели последующие зависящие от устройств действия. Например, HAL/DeviceKit может уведомить остальные программы о новом устройстве при помощи широковещательного сообщения в D-Bus. Таким образом, рабочие среды типа GNOME или KDE могут автоматически смонтировать USB-накопитель и открыть файловый менеджер для просмотра его содержимого.

Изучите основы Udev в Linux

Демон udev, systemd-udevd (или systemd-udevd.service) взаимодействует с ядром и получает события устройства непосредственно от него каждый раз, когда вы добавляете или удаляете устройство из системы, или когда устройство меняет своё состояние.

Udev основан на правилах — правила гибкие и очень мощные. Каждое полученное событие устройства сопоставляется с набором правил, считываемых из файлов, расположенных в /lib/udev/rules.d, /usr/lib/udev/rules.d и /run/udev/rules.d.

Вы можете записать файлы пользовательских правил в каталог /etc/udev/rules.d/ (файлы должны заканчиваться расширением .rules) для обработки устройства

Обратите внимание, что файлы правил в этом каталоге имеют наивысший приоритет.. Чтобы создать файл узла устройства, udev необходимо идентифицировать устройство с помощью определённых атрибутов, таких как label, serial number (метка, серийный номер), его основной и дополнительный номер, номер устройства шины и многое другое

Эта информация экспортируется файловой системой sysfs.

Чтобы создать файл узла устройства, udev необходимо идентифицировать устройство с помощью определённых атрибутов, таких как label, serial number (метка, серийный номер), его основной и дополнительный номер, номер устройства шины и многое другое. Эта информация экспортируется файловой системой sysfs.

Каждый раз, когда вы подключаете устройство к системе, ядро обнаруживает и инициализирует его, и в каталоге /sys/ создаётся каталог с именем устройства, в котором хранятся атрибуты устройства.

Главный файл конфигурации для udev — это /etc/udev/udev.conf, а для управления поведением демона udev во время выполнения вы можете использовать утилиту udevadm.

Чтобы отобразить полученные события ядра (uevents) и события udev (которые udev отправляет после обработки правила), запустите udevadm с командой monitor. Затем подключите устройство к вашей системе и наблюдайте с терминала, как обрабатывается событие устройства.

На следующем снимке экрана показан фрагмент события ADD после подключения USB-накопителя к тестовой системе:

udevadm monitor

Чтобы узнать имя, присвоенное вашему USB-диску, используйте утилиту lsblk, которая считывает файловую систему sysfs и udev db для сбора информации об обрабатываемых устройствах.

lsblk

Исходя из вывода предыдущей команды, USB-диск называется sdb4 (абсолютный путь должен быть /dev/sdb4). Чтобы запросить атрибуты устройства из базы данных udev, используйте команду info.

udevadm info /dev/sdb4

Background

Essentially, what udev does is apply rules defined in files in the «/etc/udev/rules.d» directory to the device nodes listed in the «/dev» directory. The rules can be defined in a variety of ways, but what we need to do is identify the device and say what we want udev to do with it.

In this case I know all my disk devices are named «/dev/sd?1», where the «?» represents a letter from a-d, so I can identify the devices of interest using the following rule parameters.

KERNEL=="sd?1", BUS=="scsi"

I want to tie each specific device to an alias, so it is always identified the same way, regardless of the device name Linux assigns it. So I need to be able to test each device that matches the previous pattern to see if it is the disk I am interested in. Each disk has a unique SCSI ID, so I can place a test into the rule, telling it how to perform the test, and the result it should return for a positive match. The following rule parameters explain how to test the device and what result constitutes a match in Oracle Linux 5.

PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_"

The command works a little differently in Oracle Linux 6, so for that the following test works better.

PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_"

The command is located in a different place in Oracle Linux 7 and 8, so for that the following test is correct.

PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_"

Once we have identified the specific device of interest, we need to indicate what actions should be performed on it. The following parameters specify an alias, the ownership and the permissions for the device.

NAME="asm-disk1", OWNER="oracle", GROUP="dba", MODE="0660"

So the whole rule for each disk will look something like this in Oracle Linux 5.

KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -s /block/$parent", RESULT=="SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_", NAME="asm-disk1", OWNER="oracle", GROUP="dba", MODE="0660"

Or this in Oracle Linux 6.

KERNEL=="sd?1", BUS=="scsi", PROGRAM=="/sbin/scsi_id -g -u -d /dev/$parent", RESULT=="SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_", NAME="asm-disk1", OWNER="oracle", GROUP="dba", MODE="0660"

Or this in Oracle Linux 7 and 8.

KERNEL=="sd?1", SUBSYSTEM=="block", PROGRAM=="/usr/lib/udev/scsi_id -g -u -d /dev/$parent", RESULT=="SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_", SYMLINK+="asm-disk1", OWNER="oracle", GROUP="dba", MODE="0660"

This means that the device pointing to the partition «sd*1» on the disk with the SCSI ID of «SATA_VBOX_HARDDISK_VBd306dbe0-df3367e3_» will always be called «/dev/asm-disk1», regardless of the letter «?» Linux assigns when the device is discovered. In addition, the device will have the correct ownership and permissions for ASM.

There are a number of wildcards and matching patterns that can be used if you don’t want to write device-specific rules.

Now we know roughly what we are trying to achieve, we will look at each step necessary for setting up the disks for ASM to use.

Linux захватывает мир штормом

В дополнение к различным предложениям Unix, было также доступно несколько Unix-подобных вариантов. Одним из них был MINIX, который был предназначен для академического использования. Разработчик программного обеспечения из Хельсинки по имени Линус Торвальдс был разочарован ограничениями MINIX и стремился создать подобное ядро, которое могло бы использовать преимущества нового компьютера, который он купил.

В то же время Ричард Столлман искал ядро для своего проекта GNU. Он начал проект GNU в 1983 году, создавая бесплатные замены для различных утилит Unix. В то время у него не было бесплатного ядра с открытым исходным кодом. Торвальдс уже использовал утилиты GNU со своим ядром и в конце концов так же поступили и другие.

Linux начал стремительно развиваться и к середине 1990-х проект приобрел популярность благодаря свободному дизайну как ядра, так и набора инструментов GNU. Несмотря на то, что стали доступны различные другие бесплатные операционные системы Unix, коммерческий характер первых 20 лет работы Unix нависал над ними. Это все еще влияет на битву Unix против Linux и по сей день.

Конфигурация

RC-сервисы

RC-именем является udev, а не eudev. Оно должно быть зарегистрировано на уровне запуска sysinit.

 * rc-update: udev already installed in runlevel `sysinit'; skipping

Миграция с udev на eudev

Миграция с udev 216 на eudev 1.10-r2 (март 2015) осуществляется прямо:

Если система использует multilib и для старого пакета udev установлен USE-флаг , не забудьте также поменять его:

Файл Переключение с udev на eudev в package.use

# sys-fs/udev abi_x86_32
sys-fs/eudev abi_x86_32

Оставить классическое именование ‘eth0’

Имена сетевых устройств, такие как eth0 или wlan0 и так далее, как предусмотрено ядром, обычно меняются во время загрузки системы (смотрите dmesg) с помощью /lib/udev/rules.d/80-net-name-slot.rules правила udev.

Чтобы сохранить классическое именование это правило может быть перезаписано пустым файлом с таким же именем в каталоге /etc/udev/rules.d:

Также можно добавить в командную строку ядра, изменить политику по умолчанию или добавить собственную.

Использование нового ‘предсказуемого’ именования

Новая схема именования интерфейсов отличается от старой, поэтому символьные ссылки интерфейсов необходимо создать заново. Создайте ссылки на /etc/init.d/net.lo для любых имен интерфейсов, которые необходимо добавить. Не забудьте заменить в нижеприведенных примерах на имена Ethernet-интерфейсов, присутствующих в системе. Узнать, какие интерфейсы присутствуют в системе, можно с помощью команды ifconfig:

Создайте символьные ссылки для существующих сетевых интерфейсов в каталогах /etc/init.d/ и /etc/conf.d/:

Добавьте скрипт(ы) в уровень запуска default, чтобы интерфейс(ы) стартовали автоматически:

Как и где Unix используется сегодня?

Прямо сейчас популярность может быть основным различием между Linux и Unix. Тем не менее, есть свободно доступные дистрибутивы Unix, которые работают под управлением того же программного обеспечения, что и Linux. Двумя наиболее популярными являются FreeBSD и OpenBSD, оба варианта BSD, как следует из названий.

Любое устройство Apple, которое вы покупаете в эти дни, будь то MacBook, iPhone или даже Apple Watch, работает под управлением Unix-подобной операционной системы. На iPhone или Apple Watch вы никогда не узнаете об этом, используя их. Однако это не так на компьютере Mac.

Просто запустите приложение Mac Terminal, и вы получите доступ к стандартным утилитам Unix, таким как ls, pwd и даже редакторам, таким как vim.

Installation

ImportantWhen updating udev, check the udev upgrade guide for information that can prevent unbootable systems.

Kernel

udev requires the following kernel options:

KERNEL

General setup  --->
     Configure standard kernel features (expert users)  --->
         Enable deprecated sysfs features to support old userspace tools
         Enable signalfd() system call
Enable the block layer  --->
     Block layer SG support v4
Networking support  --->
    Networking options  --->
        <*> Unix domain sockets
Device Drivers  --->
    Generic Driver Options  --->
        ()  path to uevent helper
         Maintain a devtmpfs filesystem to mount at /dev
    < > ATA/ATAPI/MFM/RLL support (DEPRECATED)  --->
File systems  --->
     Inotify support for userspace
    Pseudo filesystems --->
         /proc file system support
         sysfs file system support

FILE

USE="udev"

Постоянное имя устройства

В данном примере, мы дадим постоянное имя для 3G модема.

1. Подсоедините устройство. 2. Выполните следующую команду на соответствующем устройстве:

$udevinfo -a -p $(udevinfo -q path -n /dev/ttyS1)

Udevinfo starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

looking at device ‘/class/tty/ttyS1’:
KERNEL==»ttyS1″
SUBSYSTEM==»tty»
DRIVER==»»
ATTR{dev}==»4:65″

looking at parent device ‘/devices/pci0000:00/0000:00:1e.0/0000:15:00.0/0.0’:
KERNELS==»0.0″
SUBSYSTEMS==»pcmcia»
DRIVERS==»serial_cs»
ATTRS{modalias}==»pcmcia:m00A4c1AAFf02fn00pfn00pa32607776pbD9E73B13pcAF9C4D7Fpd00000000″
ATTRS{prod_id3}==»NRM6831″
ATTRS{prod_id2}==»Merlin UMTS Modem»
ATTRS{prod_id1}==»Novatel Wireless»
ATTRS{card_id}==»0x1aaf»
ATTRS{manf_id}==»0x00a4″
ATTRS{func_id}==»0x02″
ATTRS{pm_state}==»on»
ATTRS{function}==»0x00″

looking at parent device ‘/devices/pci0000:00/0000:00:1e.0/0000:15:00.0’:
KERNELS==»0000:15:00.0″
SUBSYSTEMS==»pci»
DRIVERS==»yenta_cardbus»
ATTRS{msi_bus}==»1″
ATTRS{broken_parity_status}==»0″
ATTRS{enable}==»2″
ATTRS{numa_node}==»0″
ATTRS{modalias}==»pci:v00001180d00000476sv000017AAsd000020C6bc06sc07i00″
ATTRS{local_cpus}==»00000003″
ATTRS{irq}==»16″
ATTRS{class}==»0x060700″
ATTRS{subsystem_device}==»0x20c6″
ATTRS{subsystem_vendor}==»0x17aa»
ATTRS{device}==»0x0476″
ATTRS{vendor}==»0x1180″

looking at parent device ‘/devices/pci0000:00/0000:00:1e.0’:
KERNELS==»0000:00:1e.0″
SUBSYSTEMS==»pci»
DRIVERS==»»
ATTRS{msi_bus}==»1″
ATTRS{broken_parity_status}==»0″
ATTRS{enable}==»1″
ATTRS{numa_node}==»0″
ATTRS{modalias}==»pci:v00008086d00002448sv00000000sd00000000bc06sc04i01″
ATTRS{local_cpus}==»00000003″
ATTRS{irq}==»0″
ATTRS{class}==»0x060401″
ATTRS{subsystem_device}==»0x0000″
ATTRS{subsystem_vendor}==»0x0000″
ATTRS{device}==»0x2448″
ATTRS{vendor}==»0x8086″

looking at parent device ‘/devices/pci0000:00’:
KERNELS==»pci0000:00″
SUBSYSTEMS==»»
DRIVERS==»»
ATTRS{uevent}==»»

3. Создайте файл в /etc/udev/rules.d и назовите его z21_persistent-local.rules.

ATTRS{prod_id2}=="Merlin UMTS Modem", ATTRS{prod_id1}=="Novatel Wireless", SYMLINK+="MerlinUMTS"
## Alternatively we could use :
# ATTRS{card_id}=="0x1aaf", ATTRS{manf_id}=="0x00a4", SYMLINK+="MerlinUMTS"

4. Перезапустите скрипты (или выполните перезагрузку ;)

udevtest  $(udevinfo -q path -n /dev/ttyS1) --force

более подробный пример semu5 on comp.os.linux.questions. А также Написание udev правил.

udev 208 to 216

The following special attention is required:

  • Since this version, kernel settings and are mandatory. Kernel setting is recommended for amd64/ia64/x86, for example, keyboard rules.
  • File /lib/udev/rules.d/80-net-name-slot.rules was replaced with /lib/udev/rules.d/80-net-setup-link.rules. If currently using an empty (or single-comment) /etc/udev/rules.d/80-net-name-slot.rules to disable predictable network interface names, the 80-net-setup-link.rules should now be used. For example:

This keeps the override both pre- and post-upgrade; then run:

once the upgrade has been made. The hardlink can be made, in order to protect against not noticing the upgrade in a busy or non-professional situation.

  • However, 80-net-setup-link.rules is only a trigger for the actual configuration file 99-default.link at /lib/systemd/network/ which can be overrided at /etc/systemd/network/
  • The most reliable way of disabling the new network interface scheme is still the kernel bootline parameter:
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: