Вопрос или проблема
сначала я установил 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
говорится, что загрузочные устройства не найдены.
Ответ или решение
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-загрузки на основе опыта:
-
Настройка 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/
-
Конфигурация 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/
-
Меню 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
-
Настройка 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", выполните следующие действия:
-
Проверка TFTP: Убедитесь, что ваш TFTP-сервер работает правильно. Это можно проверить, используя команду
tftp
с другого хоста в сети и попытаться загрузить файл, например,vmlinuz
. -
Проверка IP-адресов: Проверьте правильность IP-адресов, указанных в конфигурации. IP сервера должен быть в том же подсети, что и устройства, выполняющие PXE-загрузку.
-
Проверка сетевых интерфейсов: Убедитесь, что нужные сетевые интерфейсы на сервере включены и активны.
-
Логи и отладка: Рассмотрите возможность проверки логов dnsmasq для поиска информации о проблемах с адресацией или конфигурацией. Логи могут предоставить подсказки о том, где именно возникает ошибка.
-
Конфигурация сети KVM: Поскольку вы используете KVM, убедитесь, что настройки bridge-сети корректно выполнены, и что трафик от гостей проходит без ограничений.
-
Корректировка kickstart: Проверьте ваш
kickstart
-файл. Иногда небольшие изменения, как, например, явное указание на сетевые параметры, или удаление команд, которые могут конфликтовать с загрузкой, могут решить проблему.
Следуя этим рекомендациям, вы должны быть в состоянии устранить проблему с PXE-загрузкой через dnsmasq в роли DHCP-прокси для Rocky Linux. Если проблема остается, возможно, стоит еще раз пересмотреть конфигурации и проверить совместимость оборудования.