Рейтинг:0

Во время какого хука dracut клиент PXE может переименовывать предсказуемые имена интерфейсов с помощью правила udev?

флаг jp

Вкратце: во время загрузки initramfs (выполнение модулей dracut) на PXE-клиенте мне нужно переименовать заданные ядром (предсказуемые) имена интерфейсов (сейчас это непредсказуемые имена ethX). Таким образом, клиент PXE всегда будет загружаться с интерфейса с предсказуемым именем. В настоящее время я читаю информацию об оборудовании с помощью dmesg во время хука командной строки dracut. Могу ли я кот правило udev для /usr/lib/udev/rules.d/ вот чтобы система могла переименовывать интерфейсы, когда dracut позже запускает udev?

В основном у меня есть это в крючке dracut cmdline:

# Предоставляется аппаратное обеспечение для первого чтения
если dmesg | grep -q "ИМЯ НЕКОТОРОЙ_ДОСКИ"; тогда
    root=$(echo "$root" | sed -e 's/PLACEHOLDER_FILE/SOME_ROOTFS.sqsh/')
    # Кроме того, для этой платы необходимы некоторые правила udev.
# mkdir -p /etc/udev/rules.d
# echo "Установите правила этих досок!\n"
# echo << EOF > /etc/udev/rules.d/70-persistent-net.rules
#SUBSYSTEM=="net", DEVPATH="/devices/pci*/*1c.0/0000:07:00.0/net/*", NAME="eth0"
#SUBSYSTEM=="net", DEVPATH="/devices/pci*/*01.1/0000:05:00.0/net/*", NAME="eth1"
#SUBSYSTEM=="net", DEVPATH="/devices/pci*/*01.1/0000:05:00.1/net/*", NAME="eth2"
#EOF
Элиф dmesg | grep -q "НЕКОТОРАЯ_ДРУГАЯ_ПОРТА_ИМЯ"; тогда
    root=$(echo "$root" | sed -e 's/PLACEHOLDER_FILE/SOME_OTHER_ROOTFS.sqsh/')
    echo "Установить другие правила для доски!\n"
# mkdir -p /etc/udev/rules.d
# echo << EOF > /etc/udev/rules.d/70-persistent-net.rules
#SUBSYSTEM=="net", DEVPATH="/devices/pci*/*1c.5/0000:09:00.0/net/*", NAME="eth0"
#SUBSYSTEM=="net", DEVPATH="/devices/pci*/*02.2/0000:02:00.0/net/*", NAME="eth1"
#SUBSYSTEM=="net", DEVPATH="/devices/pci*/*02.2/0000:02:00.1/net/*", NAME="eth2"
#EOF
еще
    warn "Не обнаружено ни одной платы - по умолчанию SOME_OTHER_ROOTFS.sqsh"
    root=$(echo "$root" | sed -e 's/PLACEHOLDER_FILE/SOME_OTHER_ROOTFS.sqsh/')
фи

Больше информации: У меня и моей команды есть одноплатный компьютер, который загружается по PXE с внешнего сервера. Это следует из последовательности:

  1. SBC извлекает initramfs и загружает его.
  2. Initramfs выполняет модуль dracut, который считывает информацию об оборудовании SBC (во время хука dracut «cmdline»).
  3. SBC извлекает конкретную корневую файловую систему в зависимости от своего оборудования.

К сожалению, старые имена интерфейсов ethX (непредсказуемые) иногда приводят к тому, что SBC извлекает корневую файловую систему через неправильный сетевой интерфейс.

Мой план - удалить net.ifnames=0 и биосдевнаме=0 из командной строки ядра, используемой для загрузки PXE (шаг 1). Затем, после того как ядро ​​присвоило предсказуемые имена, я хочу расширить модуль dracut, чтобы добавить правила udev, чтобы переименовать их в старые имена. Я надеюсь, что когда dracut запускает udev, SBC всегда будет извлекать корневую файловую систему через правильный интерфейс.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.