У меня новая установка Debian 10 (Buster), и есть проблема со схемой Predictable Name.

У меня есть 4 встроенных сетевых адаптера и 4-портовый сетевой адаптер PCIe.

Соглашение об именах работает для встроенного порта, но 4-портовый PCIe работает для первых 2 портов правильно ens2f1 и ens2f0, но последние 2 имеют имена rename8 и rename9 .

Я прочитал всю эту статью здесь: https://wiki.debian.org/NetworkInterfaceNames

Я понимаю, почему они получили такие имена, вот краткое объяснение:
Из-за приоритета, используемого файлом правил /lib/udev/rules.d/80-net-setup-link.rules в ID_NET_NAME, мои имена для этих интерфейсов взяты из ID_NET_NAME_SLOT, проблема в том, что _SLOT совпадает с ens2f0 и rename8, аналогично для ens2f1 и rename9 при тестировании с udevadm Вот вывод для ens2f0 и rename8:

# udevadm test-builtin net_id /sys/class/net/ens2f0 2>/dev/null
ID_NET_NAMING_SCHEME=v240
ID_NET_NAME_MAC=enx00151757e989
ID_OUI_FROM_DATABASE=Intel Corporate
ID_NET_NAME_PATH=enp13s0f0
ID_NET_NAME_SLOT=ens2f0

# udevadm test-builtin net_id /sys/class/net/rename8 2>/dev/null
ID_NET_NAMING_SCHEME=v240
ID_NET_NAME_MAC=enx00151757e98b
ID_OUI_FROM_DATABASE=Intel Corporate
ID_NET_NAME_PATH=enp14s0f0
ID_NET_NAME_SLOT=ens2f0
  1. Могу ли я просто переопределить файл /lib/udev/rules.d/80-net-setup-link.rules и заставить его использовать ID_NET_NAME_PATH?
    Изменение этой строки:
    NAME=="", ENV{ID_NET_NAME}!="", NAME="$env{ID_NET_NAME}"
    Кому
    NAME=="", ENV{ID_NET_NAME_PATH}!="", NAME="$env{ID_NET_NAME_PATH}"

  2. Как бы мне переопределить этот файл, куда бы я поместил новый файл правил, так как в файле написано "не редактируйте этот файл, он будет перезаписан при обновлении"?

Я почти уверен, что понимаю, как работает этот «сценарий».
В этой строке NAME=="", ENV{ID_NET_NAME}!="", NAME="$env{ID_NET_NAME}" он сначала проверяет, равен ли NAME "", затем убеждается, что ENV{ID_NET_NAME} не равен "", а затем устанавливает новый NAME на основе приоритета ID_NET_NAME.

Вот полный файл, который у меня есть (знаю, что он должен быть одинаковым для всех, но для ясности публикую его):

# do not edit this file, it will be overwritten on update

SUBSYSTEM!="net", GOTO="net_setup_link_end"

IMPORT{builtin}="path_id"

ACTION!="add", GOTO="net_setup_link_end"

IMPORT{builtin}="net_setup_link"

NAME=="", ENV{ID_NET_NAME}!="", NAME="$env{ID_NET_NAME}"

LABEL="net_setup_link_end"
  1. Могу ли я изменить его тоже выглядеть примерно так?
SUBSYSTEM!="net", GOTO="net_setup_link_end"

IMPORT{builtin}="path_id"

ACTION!="add", GOTO="net_setup_link_end"

IMPORT{builtin}="net_setup_link"

NAME=="", ENV{ID_NET_NAME_PATH}!="", NAME="$env{ID_NET_NAME_PATH}"
NAME=="", ENV{ID_NET_NAME_SLOT}!="", NAME="$env{ID_NET_NAME_SLOT}"
NAME=="", ENV{ID_NET_NAME_MAC}!="", NAME="$env{ID_NET_NAME_MAC}"
NAME=="", ENV{ID_NET_NAME}!="", NAME="$env{ID_NET_NAME}"

LABEL="net_setup_link_end"
1
AJ Smith 'Smugger' 28 Сен 2020 в 18:32
Поэтому сейчас я в основном просто ищу ответ на № 4. Я мог бы отредактировать этот вопрос, чтобы удалить № 4 и ответить на вопрос тем, что я узнал, и задать № 4 в отдельном вопросе, но я дам время другим, чтобы просмотреть это, прежде чем делать это, если мне не порекомендуют иное.
 – 
AJ Smith 'Smugger'
28 Сен 2020 в 07:51

1 ответ

Лучший ответ
  1. Да, вы можете изменить его, чтобы использовать приоритет ID_NET_NAME_PATH, а не только ID_NET_NAME.

  2. Файл переопределения находится здесь: /etc/udev/rules.d/80-net-setup-link.rules

  3. Да, этот скрипт будет работать (самопроверено)

  4. Был перемещен в новый вопрос: Проверка того, существует ли уже имя сетевого интерфейса в правилах схемы предсказуемых имен udev?

0
AJ Smith 'Smugger' 28 Сен 2020 в 18:51