Цепочка PXE/TFTP на одном сервере

Цепочка PXE/TFTP на одном сервере

Моя существующая сетевая среда обеспечивает следующее:

  • DHCP-сервер, который отправляет PXE-клиентов на определенный TFTP-сервер
  • TFTP-сервер с файлом SYSLINUX "pxelinux.0" для загрузки

Установка SYSLINUX по умолчанию устанавливает тайм-аут «загрузки с локального диска», что позволяет существующим клиентам корректно перезагружать систему, а также предоставляет возможность загрузки в среду восстановления или подготовки.

Я тестирую новую среду подготовки, которая находится на другом сервере TFTP, нежели тот, на который указывает DHCP-сервер. Существующие клиенты зависят от текущей среды, но я хотел бы направить тестовых клиентов на новый сервер TFTP для подготовки.

В идеале я хотел бы иметь возможность использовать определенную опцию меню из командной строки SYSLINUX, которая заставила бы клиент загружаться с другого (жестко заданного, а не предоставленного DHCP-сервером) TFTP-сервера.

Я попытался установить пользовательский образ gPXE как опцию меню в SYSLINUX. Пользовательский образ (повторно) получил адрес DHCP и перешел на жестко закодированный сервер TFTP, но в нем отсутствует часть, которую, как я думаю, gPXE не способен выполнить.

Новая система подготовки основана на Cobbler и зависит от обычной последовательности PXE, где клиент ищет файл, названный по его MAC-адресу, прежде чем остановиться на менее конкретном и в конечном итоге на общем файле. Насколько я могу судить, похоже, что gPXE не способен выполнить эту последовательность загрузки на основе MAC-адреса.

Может кто-нибудь подскажет другой способ? Я уже несколько дней ломаю голову над этой проблемой. Заранее спасибо!

решение1

Цепочка PXE/TFTP на одном сервере

Установите другой загрузчик PXE в качестве ядра.

Это пример, который я использовал для загрузки загрузчика BSD PXE по цепочке из загрузчика Linux PXE.

LABEL openbsd
    MENU LABEL ^OpenBSD 3.9
    KERNEL openbsd_3.9/pxeboot.0

Цепочка PXE/TFTP с другим сервером

pxechain.comиспользуется для последовательной загрузки других PXE-серверов.

pxechain.comдоступен в syslinux-commonпакете в Debian/Ubuntu илиархив проекта syslinuxпод другим именем файла pxechn.c32.

Пример:

LABEL pxeserver2
        menu label Switch to 2nd PXE server...
        kernel pxechain.com
        append 192.168.10.254::pxelinux.0

Пример2:(БлагодаряАкула) Если имя файла конфигурации pxelinux и/или путь к нему различаются на обоих серверах pxe, вам следует явно определить их с помощью опций -p и -c, в противном случае это не сработает (будет попытка использовать значение, определенное dhcp, которое использовалось для текущей загрузки).

В конфигурации сервера DC-ISO2:

LABEL DC-ISO1
        MENU LABEL DC-ISO1 (BIOS mode)
        KERNEL pxechn.c32
        APPEND 192.168.1.1::pxelinux.0 -c default -p /
        TEXT HELP
Boot the legacy dc-iso1 menu in bios mode.
        ENDTEXT

На старом сервере DC-ISO1 конфигурация:

LABEL DC-ISO2
        MENU LABEL DC-ISO2 (BIOS mode)
        KERNEL pxechn.c32
        APPEND 192.168.1.2::/configs/pxelinux.0 -p /configs/ -c bios.cfg
        TEXT HELP
Boot the new dc-iso2 menu in bios mode.
        ENDTEXT

Технически теперь вы можете даже отключить DHCP-сервер DC-ISO1 (но не TFTP), и вы всегда будете сначала загружаться с DC-ISO2, при этом имея возможность переключаться между меню обоих серверов.

решение2

Возьмем pxelinux.0 из Ubuntu 10.4 LTS. Он пройдет "нормальную" итерацию: MAC - IP в HEX - ... по умолчанию.

Было бы проще указать вашему DHCP-серверу НЕ отвечать на определенные запросы и настроить другой DHCP в той же сети (неавторитетный), который будет отвечать на запросы вашего тестового сервера (и не отвечать ни на что другое).

Связанный контент