Вопрос или проблема
У меня на компьютере в локальной сети установлены DHCP/TFTP/Syslinux
. С его помощью я могу загружать любые образы на любые другие компьютеры в локальной сети, включая бездисковые, например, Memtest86+
, и это работает.
Также у меня есть несколько загрузочных ISO-образов, которые я использую при установке различных ОС на виртуальные машины.
Могу ли я подключить оба варианта, т.е. загрузить какой-либо произвольный ISO через PXE?
Наличие только DHCP/TFTP и SYSLINUX недостаточно для того, чтобы иметь возможность PXE загрузки/установки “любого” загрузочного ISO.
Посмотрите на Serva (я причастен к разработке Serva), начиная здесь и продолжая здесь.
Там вы можете увидеть, как автоматически установить ОС MS Windows через PXE, а также как установить дистрибутивы Linux и загрузить их живые версии.
В конечном итоге вы можете воспроизвести то, что делает Serva, с вашим любимым PXE-сервером.
Вы также можете посмотреть Microsoft WDS и MDT, но они ориентированы только на ОС от Microsoft.
Ответ или решение
Для загрузки образа ISO через PXE необходимо соблюдать несколько шагов и учитывать некоторые особенности, так как не все ISO-образы могут быть загружены по сети без предварительной подготовки. Вот полный процесс, который поможет вам настроить PXE-загрузку образа ISO:
Шаг 1: Подготовка среды
-
Убедитесь, что у вас установлены необходимые компоненты.
Убедитесь, что на сервере настроены DHCP, TFTP и SYSLINUX. Они обеспечивают выделение IP-адресов и передачу загрузочных файлов по сети. -
Проверьте конфигурацию DHCP.
Убедитесь, что ваш DHCP-сервер настроен на указание TFTP-сервера и файла, который будет загружаться при PXE-запуске. Обычно это файл типаpxelinux.0
и файл конфигурацииpxelinux.cfg/default
.
Шаг 2: Настройка SYSLINUX
-
Скопируйте необходимые файлы SYSLINUX.
Убедитесь, что у вас есть все необходимые файлы SYSLINUX в каталоге TFTP-сервера (например,/srv/tftp
):pxelinux.0
ldlinux.c32
libutil.c32
libcom32.c32
- и т.д.
-
Создайте файл конфигурации PXELINUX.
Файл конфигурации обычно располагается в каталогеpxelinux.cfg
. Создайте файлdefault
:vi /srv/tftp/pxelinux.cfg/default
Добавьте в него следующее содержимое для указания конкретного образа ISO:
default menu.c32 prompt 0 timeout 300 label Start_ISO menu label Boot from ISO kernel /path/to/isolinux/kernel append initrd=/path/to/isolinux/initrd.img bootiso=/path/to/your.iso
Шаг 3: Подготовка ISO-образа
-
Используйте подходящие инструменты для извлечения файлов.
Не все ISO-образы могут быть загружены напрямую. Некоторые из них требуют специального подхода. Например, для Linux-дистрибутивов вы можете извлечь необходимые файлы из ISO-образа и разместить их в доступном для TFTP каталоге.Используйте инструменты, такие как:
isoinfo
для извлечения файлов из ISO.cp
для копирования необходимых файлов в директорию TFTP.
-
Настройте корректные пути к файлам.
Убедитесь, что вы указали правильные пути к ядру и initrd в файле конфигурации.
Шаг 4: Тестирование
-
Перезагрузите клиентский компьютер.
Настройте клиентский компьютер для загрузки с сети (PXE). Обычно это делается в BIOS или UEFI. -
Отслеживайте процесс загрузки.
При успешной загрузке вы должны увидеть меню загрузки и возможность выбрать образ ISO для загрузки.
Альтернативные решения
Если процесс настройки становится слишком сложным или у вас возникают проблемы с использованием SYSLINUX, рассмотрите возможность использования более простых инструментов, таких как Serva или Fogs. Эти решения могут существенно упростить процесс загрузки через PXE.
Заключение
С помощью данных шагов вы сможете настроить загрузку ISO-образов через PXE. Учтите, что каждый ISO-образ может требовать индивидуального подхода, и убедитесь, что у вас есть доступ к нужным файлам из вашего ISO.