Переименовываем устройства в Linux (Переименовываем устройства в Linux с помощью udev)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Moonlight0x0
Сообщения: 5
ОС: Gentoo

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

Сообщение Moonlight0x0 »

На днях заинтересовался можно ли изменить имя файла устройства, например сетевой интерфейс называется wlp3s0, а я хочу старый, привычный wlan0, или жесткий диск - /dev/sda1, а сделать бы еще запоминающийся симлинк - /dev/sdaroot и т д. Linux как всегда радует своей полной настраиваемостью. Имена устройствам раздает специальный сервис называемый udev во время загрузки, используя определенные правила. Также есть возможность создать свои правила, добавив отдельный файл в папке /etc/udev/rules.d/ с расширением rules. Например для переименования сетевого интерфейса смотрим его характерные параметры командой:

Код: Выделить всё

$ udevadm info -a /sys/class/net/wlp3s0


Код: Выделить всё

    ATTR{iflink}=="4"
    ATTR{addr_len}=="6"
    ATTR{address}=="1c:3e:84:82:a2:52"
    ATTR{operstate}=="up"
    ATTR{carrier_changes}=="2"
    ATTR{broadcast}=="ff:ff:ff:ff:ff:ff"


Правило будем формировать на основе mac адреса:

Код: Выделить всё

$ nano /etc/udev/rules.d/10-own.rules


Код: Выделить всё

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


Как видите правила состоят с ключей - название==значение. Ключи бывают сравнительные - устанавливают соответствие значения в ключе и значения параметра устройства, и для выполнения действия, например в нашем случае переименования - ключ NAME. Если сходиться все условия указанные сравнительными ключами выполняется действие указанное в полследнем ключе. Это правило будет выполнено только для устройства значение параметра SUBSYSTEM которого равно net и ATTR{address} равно bc:ae:c5:be:8b:b7.
Чтобы создать символическую ссылку на жесткий диск можем использовать тот же принцип. Сначала смотрим параметры:


Код: Выделить всё

$ udevadm info -a -p /sys/block/sda/sda1


Код: Выделить всё

    KERNEL=="sda1"
    SUBSYSTEM=="block"
    DRIVER==""
    ATTR{ro}=="0"
    ATTR{size}=="716800"


Здесь нас уже будет интересовать размер, а вот и само правило:

Код: Выделить всё

SUBSYSTEM=="block", ATTR{size}=="976773168", SYMLINK+="sdaroot"


Для применения изменений нужно перезагрузить компьютер.
Подробнее о создании правил для udev можно почитать здесь
Спасибо сказали: