Гид по технологиям

Настройка сетевой загрузки утилит через PXE

8 min read Сетевая загрузка Обновлено 23 Nov 2025
PXE: сетевой запуск утилит — руководство
PXE: сетевой запуск утилит — руководство

Настройка сетевой загрузки утилит через PXE

Кратко: это руководство объясняет, как сделать утилиты загрузочными по сети через PXE — три основных подхода: только ядро, ядро+initrd и MEMDISK, а также метод с NFS. Приведены примеры для Ultimate Boot CD (UBCD), чек-листы для администраторов, рекомендации по совместимости и пошаговая методология для подготовки образов и записи пунктов меню PXE.

Быстрые ссылки

  • Обзор
  • Рекомендации, предпосылки и требования
  • Методы: Kernel, Kernel+Initrd, Kernel+Initrd+NFS, MEMDISK
  • Примеры и наборы меню для UBCD
  • Методология подготовки образа
  • Чек-листы для ролей
  • Советы по отладке и безопасность
  • Краткое резюме

Important: Это руководство рассчитано на опытных администраторов. Новичкам рекомендуется сначала изучить базовую работу PXE, TFTP и Syslinux/pxelinux.

Обзор

В этой статье объясняется, как превратить отдельные утилиты в сетевые загрузочные образы (PXEable). Не все программы можно адаптировать автоматически; часто требуется понять механизм загрузки каждой утилиты и подготовить соответствующие файлы: kernel (bzImage), initrd, образ диска (.img/.iso) или конфигурацию MEMDISK.

Определение: PXE — Preboot eXecution Environment, стандарт для загрузки по сети. Initrd — initial ramdisk, временная файловая система в RAM. MEMDISK — утилита из пакета Syslinux для эмуляции дисков в RAM.

Рекомендации, предпосылки и требования

  • Предполагается, что у вас уже поднят FOG/pxe сервер и TFTP-сервис, как описано в статьях по теме.
  • В примерах используется редактор VIM, но вы можете использовать любой удобный редактор.
  • В качестве исходной коллекции используется Ultimate Boot CD (UBCD), потому что он бесплатен и содержит полезные примеры.

Почему не просто PXE ISO?

Хотя технически можно PXE-загрузить ISO, большинство ISO ожидают физический CD/DVD и ищут файлы после загрузочного сектора в оптическом приводе. Это приводит к ошибкам загрузки. Обходы:

  • Записать ISO на диск и вставить в приводы — противоречит цели сетевой загрузки.
  • Извлечь содержимое ISO и изменить загрузчик/скрипты, чтобы использовать RAM-драйверы — трудоёмко и специфично для каждого образа.

Мы рекомендуем адаптировать утилиты под PXE, а не просто пытаться передать ISO как есть.

Методы и когда их применять

Ниже перечислены основные подходы. Для каждого указан сценарий применения и пример конфигурации для pxelinux/syslinux.

1. Метод только с ядром

Когда применять: утилита представляет собой автономный исполняемый «ядроподобный» файл (пример: memtest86+).

Преимущества: просто, быстро, передачи минимальны.

Пример меню:

LABEL Run Memtest86+
kernel fog/memtest/memtest
append -

Пояснение: LABEL задаёт имя, kernel указывает путь в TFTP, append может отключать унаследованные параметры.

Заметка: В некоторых установках append не нужен. В FOG часто не используются дополнительные параметры.

2. Метод ядро + initrd

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

Преимущества: широкая совместимость с Linux-базированными утилитами.

Пример для UBCD (cpustress):

MENU LABEL StressCPU V2.0 (requires CPU with SSE)
TEXT HELP
Torture-test your CPU in order to make sure that you don't have overheating
problems. Requires SSE-equipped x86 CPUs. Executes a special version of the
Gromacs innerloops that mixes SSE and normal assembly instructions to heat
your CPU as much as possible.
ENDTEXT
KERNEL howtogeek/utils/cpustress/bzImage
INITRD howtogeek/utils/cpustress/initrd.gz
APPEND root=/dev/ram0 ramdisk_size=12000 noapic ubcdcmd=stresscpu2

Пояснения к директивам:

  • MENU LABEL — отображаемое имя.
  • TEXT HELP — текст справки в меню.
  • KERNEL — путь к ядру в TFTP.
  • INITRD — путь к initrd.
  • APPEND — параметры ядру/загружаемой программе.

Замечания и нюансы:

  • Иногда в исходных конфигурациях используется директива LINUX вместо KERNEL; когда вы явно загружаете Linux-ядро, LINUX предпочтительнее, но KERNEL также работает.
  • Параметр quiet удалён в примере, так как современные версии Syslinux ведут себя иначе.
  • Многие утилиты принимают параметр, который выбирает режим запуска (пример ubcdcmd). Его можно менять, создавая несколько пунктов меню.

3. Метод ядро + initrd + NFS

Когда применять: когда корневая файловая система должна монтироваться по NFS. Часто используется для дистрибутивов, которые поддерживают remote root.

Примерный сценарий: Ubuntu LiveCD, где initrd загружает ядро, а затем указывает kernel параметр root=/dev/nfs и передаёт ip=… и nfsroot=server:/path.

Преимущества: позволяет экономить RAM и использовать полный rootfs на сервере.

Ограничения: требуется сеть на момент монтирования и корректные параметры IP/DHCP/NFS.

4. MEMDISK метод

Когда применять: эмуляция дисков (обычно флоппи-образов .img). MEMDISK перехватывает обращения BIOS к диску и перенаправляет их на область в RAM, где расположен образ.

Преимущества: позволяет запускать старые флоппи-утилиты и некоторые образы без изменений.

Пример для UBCD TestMemIV:

MENU LABEL TestMemIV
TEXT HELP
Tests system memory and memory on Nvidia video cards.
ENDTEXT
LINUX memdisk
INITRD howtogeek/utils/testmem4.img.gz

Примечание: НЕ берите memdisk из стороннего источника, если он несовместим с версией pxelinux/pxelinux.0 на вашем сервере — используйте memdisk, поставляемый с вашим pxelinux/syslinux, или тот, который рекомендуется для вашей версии FOG.

Ограничения MEMDISK:

  • Многие современные образцы и программы ожидают CD-ROM и не будут работать только с флоппи-эмуляцией.
  • Часто комплектные BootCD используют общий флеш-образ и параметр autostart; для полного переноса потребуется глубокая доработка.

Пример: перенос утилиты из UBCD шаг за шагом

  1. Найдите файлы утилиты на CD/ISO: например ubcd/boot/cpustress.
  2. Скопируйте файлы bzImage и initrd.gz в TFTPD: /tftpboot/howtogeek/utils/cpustress/.
  3. Добавьте пункт меню в /tftpboot/howtogeek/menus/utils.cfg на основе ubcd/menus/syslinux/cpu.cfg.
  4. Подправьте пути и параметры (ROOT, APPEND) под вашу среду.
  5. Перезагрузите TFTP/pxe сервис и протестируйте на клиенте.

Мини-методология проверки образа:

  • Проверка целостности файлов (md5/sha1, если доступны).
  • Тест локальной загрузки в виртуальной машине с аналогичной конфигурацией черпающих служб (TFTP, DHCP настройки).
  • Тест с реальным клиентом на отдельной сети или VLAN, чтобы изолировать проблемы.

Чек-листы и роли

Ниже — упрощённые чек-листы по ролям. Используйте как основу для SOP.

Чек-лист для инженера сети

  • Убедиться, что DHCP предоставляет корректный PXE-адрес.
  • Проверить TFTP-пути и права на файлы.
  • Убедиться, что файлы доступны по TFTP (tftp client GET).
  • Проверить совместимость версии pxelinux/syslinux и memdisk.

Чек-лист для системного администратора (образ/утилита)

  • Найти и извлечь bzImage/initrd или .img из ISO.
  • Поместить файлы в структуру /tftpboot/ с понятными путями.
  • Настроить меню (KERNEL/INITRD/APPEND/LABEL/TEXT HELP).
  • Протестировать загрузку в виртуальной среде.

Чек-лист для инженера безопасности

  • Проверить, не содержит ли утилита вредоносных скриптов.
  • Ограничить доступ к TFTP и FTP-серверам внутри доверенной сети.
  • Убедиться, что NFS-экспорт ограничен по IP и правам.

Таблица совместимости и рекомендации

Тип образаПоддержка PXEПреимуществаОграничения
Чистый kernel (memtest)ВысокаяПростая настройка, малые затратыПодходит не для всех утилит
Kernel + initrdВысокаяШирокая совместимость для Linux-утилитТребуется корректный initrd и параметры
Kernel + initrd + NFSСредняяПолный rootfs, экономия RAMТребует NFS и стабильной сети
MEMDISK (floppy img)Высокая для старых утилитБыстрое эмулирование флоппиНе подходит для CD-меню и сложных образов

Заметьте: эта таблица описательная и не включает все возможные комбинации.

Отладка и типичные ошибки

  1. Клиент не находит pxelinux.0 — проверьте DHCP опции 66/67 и TFTP.
  2. Файлы не загружаются по TFTP — проверьте права и лог TFTP-сервера.
  3. Ошибка “no init found” после загрузки initrd — вероятно, неправильный initrd или отсутствует корневой FS.
  4. UBCD утилита просит CD-ROM — значит, она ожидает физический привод; попробуйте MEMDISK или распакуйте ISO и адаптируйте скрипты.
  5. Ошибки NFS-монтирования — проверьте параметры root=/dev/nfs, ip= и nfsroot= в APPEND, а также экспорт NFS на сервере.

Практическая отладка: используйте serial-консоль или VNC, если BIOS/ферма поддерживает, чтобы видеть сообщения загрузчика. Логи сервера (TFTP, DHCP, NFS) — первичные источники информации.

Безопасность и конфиденциальность

  • ТFTP не имеет шифрования. Не открывайте TFTP демон для незнакомых сетей.
  • Ограничьте доступ по VLAN/ACL. Разрешите доступ только доверенным подсетям.
  • Если образы содержат персональные данные, удалите их из образа и соблюдайте внутренние правила обработки данных.

Короткая заметка о GDPR и локальной политике: PXE-образы часто не хранят персональные данные, но если вы передаёте профили пользователей или лог-файлы в initrd/образах, проконсультируйтесь с офицером по защите данных.

Критерии приёмки

  • Клиент успешно загружает выбранную утилиту без вмешательства.
  • Утилита выполняет ожидаемые тесты/диагностику в штатном режиме.
  • Все используемые сетевые сервисы ограничены и логируются.

Практическая галерея исключений — когда подход не работает

  • Приложение жёстко привязано к физическому CD-ROM и использует уникальные драйверы оптического привода.
  • Утилита использует сложную аппаратную инициализацию, несовместимую с эмуляцией MEMDISK.
  • Программа загружает сопутствующие бинарники со внешних URL, которые недоступны в вашей сети.

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

Decision flowchart (Mermaid)

flowchart TD
  A[Начать: есть утилита] --> B{Есть ли bzImage?}
  B -- Да --> C{Есть ли initrd?}
  B -- Нет --> D{Есть ли .img/.iso?}
  C -- Да --> E[Использовать Kernel+Initrd]
  C -- Нет --> F[Попробовать только Kernel]
  D -- Да --> G{Это флоппи-образ?}
  G -- Да --> H[Использовать MEMDISK]
  G -- Нет --> I[Распаковать ISO и адаптировать или отказаться]
  F --> Z[Тест и отладка]
  E --> Z
  H --> Z
  I --> Z

Шаблон SOP для добавления новой утилиты в PXE

  1. Подготовка
    • Определите тип образа (kernel/initrd/.img/.iso).
    • Создайте директорию в /tftpboot с понятной структурой (например howtogeek/utils//).
  2. Копирование
    • Скопируйте bzImage/initrd/img/файлы в созданную директорию.
    • Убедитесь, что права доступа безопасны.
  3. Конфигурация меню
    • Добавьте пункт в меню pxelinux.cfg или include-файл.
    • Укажите KERNEL/INITRD/APPEND/TEXT HELP.
  4. Тестирование
    • Проверка загрузки через виртуальную машину.
    • Тест на минимальном клиенте в контролируемой сети.
  5. Документирование
    • Задокументируйте изменения, пути, параметры APPEND и любые нестандартные шаги.

Полезные сниппеты и советы

  • Получить файл по TFTP локально: tftp -c get
  • Проверить доступность NFS: showmount -e
  • Протестировать memdisk совместимость: используйте memdisk из той же версии syslinux, что и ваш pxelinux.0.

Краткое резюме

  • PXE позволяет гибко загружать утилиты, но подход зависит от формата утилиты: kernel, initrd, NFS-root или MEMDISK.
  • Самый универсальный путь для Linux-утилит — Kernel+Initrd. MEMDISK пригоден для флоппи-образов.
  • Всегда тестируйте в виртуальной среде, а затем на изолированной сети.
  • Безопасность TFTP/NFS важна: ограничьте доступ и ведите логирование.

И в завершение: вы теперь вооружены методами и чек-листами, чтобы превращать многие утилиты в сетевые образы. Не все образы поддаются пересборке — но с пониманием механизмов загрузки вы сможете адаптировать большинство диагностических и спасательных наборов.


Итак, запирая врата и проходя через Зал Огня, Мужество ждёт героя света, чтобы пробудиться…

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Knockout-эффект в Photoshop и Illustrator — руководство
Дизайн

Knockout-эффект в Photoshop и Illustrator — руководство

HashTab: проверка контрольных сумм в Windows
Безопасность

HashTab: проверка контрольных сумм в Windows

Экспорт и импорт списков отправителей в Outlook
Почта

Экспорт и импорт списков отправителей в Outlook

Как проверить трафик и выбрать маршрут в Google Maps
Навигация

Как проверить трафик и выбрать маршрут в Google Maps

Microsoft Cruel Solitaire на Windows 10 — как запустить
Игры

Microsoft Cruel Solitaire на Windows 10 — как запустить

Как задать рабочее время и место в Outlook
Инструкции

Как задать рабочее время и место в Outlook