pxeboot с использованием dnsmasq в качестве DHCP-прокси для Rockylinux

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

сначала я установил apache и запустил его службу

yum install httpd && systemctl enabled httpd --now

затем я смонтировал dvd iso и скопировал его содержимое в каталог apache

mount -o ro ~/Downloads/rockylinux9.iso /mnt/iso

cp -rv /mnt/iso/* /var/www/html/install-media/

и скопировал файл kickstart в

cp ~/kickstart-rockylinux9.cfg /var/www/html/install-media/kickstart/

затем я установил tftp-server и syslinux и запустил tftp-server

yum install tftp-server syslinux

затем я создал эти каталоги и скопировал файлы ядра в путь ниже

mkdir -p /var/lib/tftpboot/{images,pxelinux.cfg}

cp /var/www/html/install-media/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/images/

затем я скопировал файлы меню из каталога syslinux

cp /usr/share/syslinux/{menu.c32,pxelinux.0} /var/lib/tftpboot/

наконец, создал файл меню /var/lib/tftpboot/pxelinux.cfg/default со следующим содержимым

default menu.c32
prompt 0
timeout 300
ontimeout 2

menu title PXE Boot Menu
label 1
  menu label ^1 - Install Rocky Linux 9
  kernel images/vmlinuz
  append initrd=images/initrd.img showopts method=http://192.168.1.254/install-media/ devfs=nomount ks=http://192.168.1.254/install-media/kickstart/kickstart-rockylinux9.cfg

Теперь критическая часть – это dnsmasq.conf, поскольку мой физический хост находится в мостовой сети с установленной на нем kvm. поэтому dnsmasq должен проксировать запрос DHCP к моему роутеру

# cat /etc/dnsmasq.conf

# Enable proxy DHCP for PXE
port=0
dhcp-range=192.168.1.0,proxy
# Specify PXE options
dhcp-boot=pxelinux.0,,192.168.1.254
enable-tftp
tftp-root=/var/lib/tftpboot

вот мой kickstart файл

# Generated by Anaconda 34.25.5.9
# Generated by pykickstart v3.32
#version=RHEL9
# Use graphical install
graphical

# Remove CDROM installation media line
# cdrom

# Specify the HTTP repository
repo --name="AppStream" --baseurl=http://192.168.1.254/install-media/

%addon com_redhat_kdump --disable
%end

# Keyboard layouts
keyboard --xlayouts="us"

# System language
lang en_US.UTF-8

# Network information
network --bootproto=dhcp --device=enp1s0 --noipv6 --activate
network --hostname=ks-sample2

# Packages to install
%packages
@^minimal-environment
%end

# Firstboot configuration
firstboot --enable

# Disk and partition configuration
ignoredisk --only-use=vda
clearpart --none --initlabel
part /boot --fstype="xfs" --ondisk=vda --size=1024
part pv.50 --fstype="lvmpv" --ondisk=vda --size=70655
volgroup rl --pesize=4096 pv.50
logvol swap --fstype="swap" --size=7167 --name=swap --vgname=rl
logvol / --fstype="xfs" --size=63484 --name=root --vgname=rl

я не могу загрузиться, после получения IP информации от DHCP
говорится, что загрузочные устройства не найдены.

enter image description here

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

To provide a thorough and detailed response to your issue with PXE boot using dnsmasq as a DHCP proxy for Rocky Linux, let’s break down the process and identify potential points of failure. Your configuration appears to be almost correct, but there might be a couple of areas to check and verify to ensure the PXE boot process works flawlessly. I will also provide additional details and suggestions in Russian to address each part of the setup.

Теоретическая часть (Theory)

PXE (Preboot Execution Environment) — это метод для загрузки операционной системы по сети. Данный метод используется для удалённой установки системы, и требует корректной конфигурации как сети, так и сервера, с которого осуществляется загрузка. Основные компоненты PXE-загрузки включают TFTP-сервер для доставки завантажчиков и ядер, DHCP-сервер для предоставления IP-адресов и указания на место размещения файлов загрузки, а также HTTP- или NFS-серверы для предоставления установки данных.

Для вашего случая основное внимание уделяется dhcp-прокси-серверу dnsmasq, который выполняет роль посредника между PXE-клиентами и маршрутизатором DHCP, обеспечивая правильную передачу загрузочных инструкций через сеть. Проблема, с которой вы столкнулись — это ошибка невозможности обнаружения загрузочных устройств, способна указывать на несколько проблем.

Пример (Example)

Исходя из вашего описания, вы уже настроили Apache для предоставления файлов установки и kickstart-конфигурации по HTTP, а также TFTP-сервер для доставки необходимых загрузчиков. Ниже приведен типичный сценарий настройки систем для PXE-загрузки на основе опыта:

  1. Настройка HTTP-сервера:

    yum install httpd && systemctl enable httpd --now
    mount -o ro ~/Downloads/rockylinux9.iso /mnt/iso
    cp -rv /mnt/iso/* /var/www/html/install-media/
    cp ~/kickstart-rockylinux9.cfg /var/www/html/install-media/kickstart/
  2. Конфигурация TFTP-сервера и загрузочных файлов:

    yum install tftp-server syslinux
    mkdir -p /var/lib/tftpboot/{images,pxelinux.cfg}
    cp /var/www/html/install-media/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/images/
    cp /usr/share/syslinux/{menu.c32,pxelinux.0} /var/lib/tftpboot/
  3. Меню PXE-загрузки:
    Файл /var/lib/tftpboot/pxelinux.cfg/default должен быть следующим:

    default menu.c32
    prompt 0
    timeout 300
    ontimeout 2
    
    menu title PXE Boot Menu
    label 1
     menu label ^1 - Install Rocky Linux 9
     kernel images/vmlinuz
     append initrd=images/initrd.img showopts method=http://192.168.1.254/install-media/ devfs=nomount ks=http://192.168.1.254/install-media/kickstart/kickstart-rockylinux9.cfg
  4. Настройка dnsmasq в режиме DHCP-прокси:
    Ваш файл конфигурации (/etc/dnsmasq.conf) в действительности нуждается в проверке:

    port=0
    dhcp-range=192.168.1.0,proxy
    dhcp-boot=pxelinux.0,,192.168.1.254
    enable-tftp
    tftp-root=/var/lib/tftpboot

    Убедитесь, что IP-адрес 192.168.1.254 действительно является адресом вашего сервера, и что это соответствует настройкам сети.

Применение (Application)

Чтобы устранить проблему, когда система говорит, что "No boot devices found", выполните следующие действия:

  1. Проверка TFTP: Убедитесь, что ваш TFTP-сервер работает правильно. Это можно проверить, используя команду tftp с другого хоста в сети и попытаться загрузить файл, например, vmlinuz.

  2. Проверка IP-адресов: Проверьте правильность IP-адресов, указанных в конфигурации. IP сервера должен быть в том же подсети, что и устройства, выполняющие PXE-загрузку.

  3. Проверка сетевых интерфейсов: Убедитесь, что нужные сетевые интерфейсы на сервере включены и активны.

  4. Логи и отладка: Рассмотрите возможность проверки логов dnsmasq для поиска информации о проблемах с адресацией или конфигурацией. Логи могут предоставить подсказки о том, где именно возникает ошибка.

  5. Конфигурация сети KVM: Поскольку вы используете KVM, убедитесь, что настройки bridge-сети корректно выполнены, и что трафик от гостей проходит без ограничений.

  6. Корректировка kickstart: Проверьте ваш kickstart-файл. Иногда небольшие изменения, как, например, явное указание на сетевые параметры, или удаление команд, которые могут конфликтовать с загрузкой, могут решить проблему.

Следуя этим рекомендациям, вы должны быть в состоянии устранить проблему с PXE-загрузкой через dnsmasq в роли DHCP-прокси для Rocky Linux. Если проблема остается, возможно, стоит еще раз пересмотреть конфигурации и проверить совместимость оборудования.

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

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