Обсуждение: Systemd

хм, да действительно, продрал глаза и прочитал внимательней то, что сам же и выложил. Глянул, было ли что то подобное в предыдущем пакете (196). Как выяснилось, это нововведение этой версии (если я опять в архиве чего не упустил) - в смысле правило в директории /usr. Как то ж оно сильно на костыль похоже, да, но это уже камень в огород мейнтейнеров (тут у себя локально пытаешься как то без костылей сделать). А Поттерингу (или кто там написал такое дефолтное наименование интерфейсов) руки бы пообрывать
PGP 0x31361F01
arcanisrepo
arcanis
Как то ж оно сильно на костыль похоже, да, но это уже камень в огород мейнтейнеров (тут у себя локально пытаешься как то без костылей сделать). А Поттерингу (или кто там написал такое дефолтное наименование интерфейсов) руки бы пообрывать
И как же ты без костылей это сделал?

Я еще не пробовал. Желающие могут попробовать.

P.S. Не выдержал… Попробовал. Работает. Так и будет.
Тоже попробовал, отлично работает.
еще бы исправили такой же глюк с саундами, и глюк с порчей шрифтов, было бы вообще круто.
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
В общем, вся разница в том, что добавили ещё пару-тройку способов идентификации сетевых интерфейсов, кроме везде описанного по MAC-адресу. Хорошо.

А потом сделали дурацкое правило, которое автоматом присваивает интерфейсам … сами эти идентификаторы вместо имён. Жесть :)
/usr/lib/udev/rules.d/80-net-name-slot.rules
# do not edit this file, it will be overwritten on update
ACTION=="remove", GOTO="net_name_slot_end"
SUBSYSTEM!="net", GOTO="net_name_slot_end"
NAME!="", GOTO="net_name_slot_end"
NAME=="", ENV{ID_NET_NAME_ONBOARD}!="", NAME="$env{ID_NET_NAME_ONBOARD}"
NAME=="", ENV{ID_NET_NAME_SLOT}!="", NAME="$env{ID_NET_NAME_SLOT}"
NAME=="", ENV{ID_NET_NAME_PATH}!="", NAME="$env{ID_NET_NAME_PATH}"
LABEL="net_name_slot_end"

Правда, по-умолчанию это правило выключено. Чтобы сразу помидорами не закидали. И на том спасибо :)

В общем, если у вас уже есть свои правила udev для именования интерфейсов, или интерфейсы и так не путаются (все разных типов) – можно ничего не менять.
Если надо – можно написать своё правило ВМЕСТО /etc/udev/rules.d/80-net-name-slot.rules, и даже использовать в нём ДЛЯ ИДЕНТИФИКАЦИИ (а не для именования) упомянутые выше ID_NET_NAME_{ONBOARD,SLOT,PATH,MAC} или даже ID_OUI_FROM_DATABASE.

Что касается дефолтного правила “из коробки”, то я бы не советовал оставлять его в первозданном виде, поскольку:
1) оно не создаёт альтернативные имена интерфейсам, а ПЕРЕИМЕНОВЫВАЕТ их, что может приводить к неожиданностям,
2) это правило “массового поражения”, то бишь оно не направлено на именование каких-то заранее указанных интерфейсов, а переименовывает ВСЕ, которые ещё не были переименованы до того, то есть у которых NAME не задано. Любые вновь создаваемые сетевые интерфейсы любого типа могут быть автоматом переименованы, если у них найдутся подходящие под это правило идентификаторы.
Если использовать это правило по умолчанию то никаких неожиданностей быть не может. имена статичны и предсказуемы.
Да и с этим правилом свои поделки просто бессмысленны.
Думаю стоит полностью избавляться от своих костылей и привыкать к новым названиям….
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
Скажите если у меня вот такой костыль:
[server@dga-serv ~]$ cat  /etc/udev/rules.d/10-network.rules
# SERVER (beeline)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:1c:f0:9e:4e:a8", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="beeline"
# HTPC (local 192.168.0.x)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="90:94:e4:81:af:4d", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="htpc"
#DESKTOP (local 192.168.1.x)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:08:a1:9f:48:43", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="desktop"

После обновления он будет работать? И ещё можно ли как-то перелезть на новую версию systemd без перезагрузки?
Решил тоже попробовать. Убрал файлик, узнал новое имя, получилось такое - enp4s0f5.
 arch systemd-udevd[160]: renamed network interface eth0 to enp4s0f5
Перезагрузился, инет, понятно, не поднялся (у меня был dhcpcd@eth0), прочитал здесь, что надо просто enable сервис с новым именем интерфейса. Я сделал
sudo systemctl enable dhcpcd@enp4s0f5.service
, перезагрузился. Интерфейс не найден, инет не поднят.. Странно..
Arch awesome @各行其道@
Проверьте содержимое /etc/systemd/system/multi-user.target.wants/ и /sys/class/net
Dganic
Скажите если у меня вот такой костыль:
должен. У меня проблем обнаружено не было с самописным 10-network.rules
nafanja
И как же ты без костылей это сделал?
там было написано слово “пытаешься” =)
PGP 0x31361F01
arcanisrepo
corner
Проверьте содержимое /etc/systemd/system/multi-user.target.wants/ и /sys/class/net
Вот спасибо! Точно!
В общем странная ситуация оказалась.. В /sys/class/net ссылка на сервис с новым именем интерфейса была, а вот в /etc/systemd/system/multi-user.target.wants/ - не было. ((
Сделал еще раз sudo systemctl enable dhcpcd@enp4s0f5.service и обнаружил следующее:
ln -s '/usr/lib/systemd/system/dhcpcd@.service' '/etc/systemd/system/multi-user.target.wants/dhcpcd@eth0.service'
Он интерфейс то переименовал, а символическую ссылку делал со старым именем, пришлось руками сделать:
ln -s '/usr/lib/systemd/system/dhcpcd@.service' '/etc/systemd/system/multi-user.target.wants/dhcpcd@enp4s0f5.service'
, потом стартануть этот сервис и все заработало.
corner - Спасибо!
Arch awesome @各行其道@
надо было сначала disable на dhcpcd@eth0 сделать
 
Зарегистрироваться или войдите чтобы оставить сообщение.