dhcpcd завершил работу во время загрузки сети Ubuntu.

Вопрос или проблема

Вот обзор моей установки:

  1. У меня есть TFTP-сервер, который размещает файлы vmlinuz и initrd.img. Я использую ядро ubuntu-lowlatency, предназначенное для HPC-машин (https://unix.stackexchange.com/questions/739769/how-do-you-install-the-linux-lowlatency-kernel-and-why-does-it-stops-at-version). Эти файлы были получены из локальной установки на том же устройстве, для которого я пытаюсь настроить загрузку по сети.

  2. Файловая система корня обслуживается через NFS. Я получил базовое изображение корня, извлекая ubuntu-server-minimal.squashfs с живого CD. Однако я думаю, что эта информация на данном этапе не имеет значения, поскольку загрузка не достигает этой точки.

Для сетевой загрузки я использую iPXE, и ядро, и файл initrd загружаются, и процесс загрузки начинается нормально. В консоли я вижу сообщения, связанные с загрузкой драйверов mellanox, но сразу после этого появляются следующие строки:

запрос DHCP-соединения
аренда 192.168.1.12 на 7200 секунд
добавление маршрута к 192.168.1.0/24
добавление основного маршрута через 192.168.1.151
выход из-за oneshot
dhcpcd завершен
connect: connection timed out

На этом этапе процесс зависает, и примерно через 5 минут говорит, что не удалось подключиться к серверу nfs, потому что сетевое устройство не готово. Что мне делать, чтобы исправить эту ошибку и продолжить процесс гладкой загрузки?

Ответ или решение

Проблемы с DHCP во время сетевой загрузки Ubuntu, особенно когда dhcpcd (демон DHCP клиента) завершает работу, могут быть источником значительных преград в установке PXE (Preboot Execution Environment) загрузки. Эти проблемы могут быть вызваны множеством факторов, от некорректных настроек DHCP-сервера до неверных конфигураций клиента и сетевых интерфейсов.

Теория

DHCPCD — это daemon, который управляет получением IP-адреса для клиентских устройств через протокол DHCP. "Exiting due to oneshot" указывает на то, что dhcpcd сконфигурирован для "однократного" (oneshot) выполнения, а затем завершает работу. Это поведение приемлемо для среды, где нужна быстрая настройка сети для одноразовых задач, но не подходит для постоянного мониторинга и управления сетевой конфигурацией, особенно в условиях сетевой загрузки.

Пример

Ваш случай — это типичный сценарий, когда начало загрузки проходит успешно, система получает IP-адрес от DHCP-сервера, но затем, по завершении работы dhcpcd, возникает потеря сетевого соединения, прерывая доступ к NFS-серверу для получения корневой файловой системы. Это может быть связано с рядом факторов:

  1. Топология сети и маршруты. После получения IP-адреса и добавления маршрутов, отсутствует поддержание соединения, необходимого для продолжения работы NFS.

  2. Конфигурация dhcpcd. Ваша конфигурация возможно настроена для одноразового получения IP без поддержания активного соединения.

  3. Аппаратное обеспечение. Некорректная работа сетевых драйверов после первичной инициализации может приводить к проблемам с соединением.

  4. Настройка NFS. В случае проблем с зависимостями, настройка NFS может не сработать, если соединение теряется на этапе монтирования.

Применение

Чтобы исправить эту проблему и обеспечить корректное функционирование сетевой загрузки, можно предпринять следующие шаги:

  1. Проверка и обновление конфигурации dhcpcd.

    • Проверьте конфигурационные файлы dhcpcd.conf, в которых можно отключить режим "oneshot". Это обеспечит работу dhcpcd в режиме, поддерживающем соединение.
    • Убедитесь, что настройки позволяют повторное получение и обновление DHCP-аренды, необходимой для долгосрочного поддержания соединения.

    Пример конфигурации может выглядеть так:

    # тестирование потока DHCP-информации
    option rapid_commit
    interface eth0
    background
    persistent
    lease /var/lib/dhcpcd/dhcpcd-eth0.lease
    noipv4ll
  2. Настройка сетевых интерфейсов после загрузки ядра.

    • Используйте скрипты initrd для повторной активации интерфейса:
      Создайте скрипт, выполняющий перезапуск сети после загрузки:
      #!/bin/sh
      ifconfig eth0 up
      dhcpcd --noarp -b eth0
  3. Перепроверка NFS-конфигурации.

    • Убедитесь, что ваш NFS-сервер доступен и исправно функционирует. Проверка включает: доступность порта, наличие необходимых полномочий на стороне сервера.
    • Убедитесь, что на стороне сервера файл /etc/exports корректно настроен и разрешает доступ с клиента на импортируемый каталог.
  4. Конфигурация среды загрузки.

    • Проверьте конфигурацию PXE и iPXE. Дополнительные параметры загрузки ядра могут быть необходимы, чтобы убедиться, что вся инфраструктура поддерживает долгосрочные подключения.
    • Добавьте дополнительные проверочные команды, передаваемые через параметры загрузки ядра:
      ip=dhcp root=/dev/nfs nfsroot=192.168.1.151:/srv/nfs/ubuntufs
  5. Обновление прошивки и драйверов сетевых адаптеров.

    • Обновите все актуальные драйвера сетевых карт, так как несоответствие версии драйверов и ядра может затруднить установление стабильного соединения.

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

Оцените материал
Добавить комментарий

Капча загружается...