LINUX.ORG.RU

Имена сетевых интерфейсов

 


0

1

У меня есть флешка с установленной на ней Gentoo. Использую ее для того, чтобы тыкаться ею в разные компьютеры. Я заметил, что в последнее время сетевые интерфейсы (как проводные, так и беспроводные) он называет как угодно, но только не привычными eth0 и wlan0. Всякий раз, когда я на отдельном компьютере загружаюсь с флешки, первым делом после загрузки смотрю dmesg и там непременно показывается строка (дословно) «systemd переименовал ваш интерфейс eth0 в enps0». Ну и соответственно, каждый раз приходится править конфиги. Новые имена совершенно разные. На одном компе проводной интерфейс он переименовывает в enps0, на другом - в eno1. Собственно говоря, пара вопросов:
1. С какой стати в Gentoo появился systemd? Я слышал, он недавно появился в Sabayon, а в Gentoo как был OpenRC, так и остался, по-моему.
2. Зачем он переименовывает имена интерфейсов, к которым уже все привыкли? Я раньше не сталкивался с именами интерфейсов, отличными от ethN и wlanN.
3. Есть ли возможность отключить это переименование?

★★★★★

Последнее исправление: Rinaldus (всего исправлений: 1)

Зачем он переименовывает имена интерфейсов, к которым уже все привыкли?

Все привыкли ходить в библиотеку, слушать винил и подтирать жопу лопухом.

anonymous
()
$ echo 'USE="${USE} -systemd"' >> /etc/portage/make.conf
$ emerge eudev
$ emerge -e world

Пишу по памяти, при запуске прошу отдебажить.

P. S. Мое мнение: Gentoo дистростроители сделали 2 вещи правильно:
1. Добавили systemd, так как есть люди, которым systemd нравится.
2. Сделали его отключаемым, так как есть люди, которым systemd не нравится.
Вопрос о том, что должно быть по дефолту - спорный. Я, как не-любитель systemd, тоже предпочел бы его по дефолту не видеть.

Kroz ★★★★★
()
Ответ на: комментарий от Kroz

К

echo 'USE="${USE} -systemd"' >> /etc/portage/make.conf

сие не относится вообще никак. Читать внимательно и до полного просветеления:

2013-03-29-udev-upgrade
  Title                     Upgrading udev to version >=200
  Author                    Samuli Suominen <ssuominen@gentoo.org>
  Posted                    2013-03-29
  Revision                  2

This replaces the earlier news item about the udev 197 upgrade and
describes the predictable network interface names in more detail.

If you skip anything in this news item, your system will not be
bootable, or your networking will be down, or both.

Pay attention also to every message printed by emerge of sys-fs/udev
and sys-fs/udev-init-scripts as this news item may not be complete.

1. udev-postmount init script:

Remove the udev-postmount init script from your runlevels.

2. devtmpfs support:

You need at least version 2.6.32 of the kernel for devtmpfs
functionality. Once you have this, make sure CONFIG_DEVTMPFS=y is set
in the kernel configuration. See the gentoo udev guide for the option in
make menuconfig [1].

If you have a line for /dev in /etc/fstab, make sure it is configured
for file system type devtmpfs (not tmpfs or any other type). Also, you
can remove this line if you prefer, since devtmpfs is mounted
automatically.

3. Old interface naming rules:

If the system still has old network interface renaming rules in
/etc/udev/rules.d, like 70-persistent-net.rules, those will need
to be either modified or removed.

If you choose to modify them, you must use free namespace (like net*
or internet*) instead of kernel namespace (like eth* or wlan*)
because in-place renaming has been deprecated, see small
documentation of it if you like[2].

The file 70-persistent-net.rules, like the 70-persistent-cd.rules
should be removed, so if you modify, rename the file also to something
else like 70-my-network.rules to silence the deprecation warning coming
from the end of the sys-fs/udev emerge.

This is the old format with reserved namespace:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="yy:yy:yy:yy:yy:yy", NAME="eth1"

This is the new format with free namespace:

SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="net0"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="yy:yy:yy:yy:yy:yy", NAME="net1"

4. predictable network interface names:

If /etc/udev/rules.d/80-net-name-slot.rules is an empty file or a
symlink to /dev/null, the new names will be disabled and the kernel will
do all the interface naming, and the resulting names may vary by kernel
configuration, hardware configuration and kernel version.

Also, the forementioned old 70-persistent-net.rules might interfere with
the new predictable interface names.

You can get attributes of your network interfaces using a command like
the following (replace eth0 with the name of the appropriate interface):

# udevadm test-builtin net_id /sys/class/net/eth0 2> /dev/null

You can copy /lib/udev/rules.d/80-net-name-slot.rules to
/etc/udev/rules.d and specify the attributes and in which order
they will be used for naming. See upstream wiki[3] for detailed list
of options.

You can prepare the system for the new names before booting for example
by renaming /etc/init.d/net.* symlinks, editing /etc/conf.d/net, etc.

The feature can also be completely disabled using net.ifnames=0 on the
kernel command line.

If you only have one interface card, you don't necessarily have much
use for this feature as the name almost always stays at eth0, you can
easily disable it using forementioned methods.

This feature can also replace the functionality of sys-apps/biosdevname,
but you can still keep using it if you want.

In a normal new installation there are no files in /etc/udev/rules.d
and if you haven't edited any files you have in there, you should most
likely backup and delete them all if they don't belong to any packages.

The official wiki has a dedicated page for udev upgrade notes[4].

[1] http://www.gentoo.org/doc/en/udev-guide.xml
[2] http://www.kernel.org/doc/htmldocs/device-drivers/API-device-rename.html
[3] http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames
[4] http://wiki.gentoo.org/wiki/Udev/upgrade
init_6 ★★★★★
()

Некоторое время назад кодовые базы systemd и udev были слиты воедино. Так же изменена фактически и нумерация версий udev.

Udev и systemd собирается из одного и того же архива с исходными кодами.

Всё же нужно читать новости portage, на что вам и указал init_6. Кроме указанных в новости способов переключения на старые имена интерфейсов можете воспользоваться ещё двум, указать в параметрах, передаваемых ядру 'net.ifnames=0' или создать ссылку /usr/lib/udev/rules.d/80-net-name-slot.rules -> /dev/null

kostik87 ★★★★★
()

2. Зачем он переименовывает имена интерфейсов, к которым уже все привыкли? Я раньше не сталкивался с именами интерфейсов, отличными от ethN и wlanN.

Чтобы имена интерфейсов были всегда одни и те же при перезагрузке, и не возникал race condition.

ValdikSS ★★★★★
()

1. С какой стати в Gentoo появился systemd? Я слышал, он недавно появился в Sabayon, а в Gentoo как был OpenRC, так и остался, по-моему.

в gentoo есть systemd только по желанию, было бы странно если бы поддержки системд не было. Дефолт - openrc в ближайшее время смена дефолта даже не обсуждается

2. Зачем он переименовывает имена интерфейсов, к которым уже все привыкли? Я раньше не сталкивался с именами интерфейсов, отличными от ethN и wlanN.

т.к. это upstream поведение, раньше регулировалось use-flag-ом, потом была написана подробная новость как работает новое поведение и как оставить старое. Вообще т.к. при переименовании устройст в пространстве имен ядра возможны race condition, которые не лечатся.

3. Есть ли возможность отключить это переименование?

уже написали.

qnikst ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.