Настройка установки PXE с использованием ISO-образа дистрибутива Linux

Я выполнил приведенную ниже команду awk

команда

awk '$0 !~ /\(/{gsub(")","",$0);}1' filename

выход

http://foo.com/abc_(Programming_Language)
http://example.com/test
0
03.05.2021, 00:36
1 ответ

Обратите внимание, что собственная документация Linux Lite предлагает использовать диспетчер загрузки PLoP, если загрузка с USB недоступна.:PLoP — это менеджер загрузки, который можно -в базовой поддержке USB-накопителей.

https://www.plop.at/en/bootmanager/download.html

https://www.howtogeek.com/howto/16822/boot-from-a-usb-drive-even-if-your-BIOS-wont-let-you/

Однажды я использовал его для запуска установки на основе USB -в старой системе, в которой не было поддержки USB в BIOS.

Но если вы хотите использовать PXE, общая последовательность событий при загрузке PXE выглядит следующим образом:

  1. Расширение PXE BIOS (или встроенное ПО UEFI -в сетевой драйвер в современных системах )активирует сетевую карту и отправляет DHCP-запрос с добавлением нескольких специальных идентификаторов:

    • Для параметраvendor-class-identifier(PXE #60 )задана строка, начинающаяся со слова PXEClientи содержащая код, идентифицирующий используемую архитектуру процессора. При желании это можно использовать для предоставления специализированных решений загрузки PXE для различных типов клиентов, но в простых настройках DHCP-сервер может просто игнорировать это.
    • Запрос DHCP укажет, что клиент хочет знать значения параметров DHCP #66 и #67, :имя сервера TFTP и имя загрузочного файла , который клиент должен загружаться соответственно.
  2. Сервер DHCP фактически имеет два способа предоставления имени сервера TFTP и имени загрузочного файла. :он может либо использовать упомянутые выше -параметры DHCP, либо, поскольку может использовать старые поля BootP next-serverи bootfile-nameв пакете DHCP для предоставления информации.

(Некоторые расширения PXE BIOS могут содержать ошибки и поддерживать только одно или другое.Я видел прошивку PXE, которая добавляла дополнительный нулевой байт к имени загрузочного файла, если использовалась опция DHCP #67, но работала правильно, используя устаревший стиль BootP. Для устранения подобных проблем может потребоваться использование Wireshark или tcpdumpдля просмотра фактических запросов и ответов DHCP и TFTP, чтобы понять, что происходит не так.)

  1. Расширение PXE BIOS настроит сетевой интерфейс, используя ответ DHCP, загрузит указанный файл с указанного сервера TFTP и выполнит этот файл. В принципе, все, что происходит после этого, полностью контролируется программным кодом в том файле (загрузчика PXE ). На практике двумя наиболее распространенными загрузчиками PXE в кругах Linux в наши дни, вероятно, будут либо PXELINUX из семейства SYSLINUX, либо iPXE . Оба они, по сути, начнут с настройки сети и сделают еще один запрос DHCP с другим специальным идентификатором. Это позволяет серверу DHCP использовать другую опцию DHCP, чтобы сообщить загрузчику PXE, где загрузить файл конфигурации загрузчика.

    • для PXELINUX это необязательно :если нет дополнительных опций, он попытается загрузить свою конфигурацию с того же TFTP-сервера, с которого был загружен сам загрузчик. Например, если путь TFTP для загрузки PXELINUX был /pxe/pxelinux.0, то он попытается загрузить свою конфигурацию из /pxe/pxelinux.cfg/default.
    • для iPXE указание имени файла конфигурации с использованием параметров DHCP является обязательным, но iPXE имеет встроенную -поддержку HTTP, поэтому он может принимать обычный URL-адрес HTTP в качестве значения параметра DHCP.
  2. Файл конфигурации загрузчика может включать определение красивого загрузочного меню или просто указать загрузчику загрузить конкретное ядро ​​Linux и файл initrd/initramfs для него. Это работает так же, как обычный GRUB, за исключением того, что загрузка происходит по сети, а не с диска.Файл конфигурации загрузчика может включать параметры загрузки для ядра Linux, как и конфигурация GRUB. В сценариях сетевой установки обычно требуется использовать параметр загрузки, чтобы указать, где установщик должен найти образ ISO или его содержимое :. В современных дистрибутивах значение этого параметра обычно принимает форму URL-адреса HTTP.

  3. Как только загрузчик PXE успешно загрузил ядро ​​и файл initramfs в оперативную память клиентской системы, его работа выполнена :он запускает ядро ​​Linux и передает ему содержимое initramfs и любые параметры загрузки ядра, а затем загрузчик перезаписывается, когда ядро ​​переводит систему из 16 -битного режима совместимости в настоящий 32 -битный защищенный режим и перестраивает карту виртуальной памяти в соответствии со своими потребностями. Драйвер сетевого адаптера Linux сбрасывает сетевой адаптер при запуске драйвера, поэтому конфигурация IP-адреса обычно просто теряется. (Современная система UEFI запускается уже в 64-битном -защищенном режиме, но UEFI имеет свои сложности в безопасной загрузке.)

  4. В большинстве дистрибутивов, предлагающих установку по сети -, initramfs включает собственный DHCP-клиент, поэтому загрузочные сценарии просто отправят DHCP-запрос (еще раз ), чтобы получить параметры сетевого адреса. Затем запускается первая часть установщика внутри initramfs, подключается к URL-адресу, указанному в параметрах загрузки ядра, для загрузки дополнительных частей и, в конце концов, начинает процесс установки ОС.

Итак, на ваши вопросы:

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

2.)Программа установки в ISO должна поддерживать сетевые -установки.

3. )По сути, вам нужно найти два файла :файл ядра и файл initramfs. Наиболее распространенный 32-битный -загрузчик Linux на образах ISO, вероятно, ISOLINUXиз семейства SYSLINUX :, вы можете просто прочитать файл конфигурации isolinux.cfgили syslinux.cfg, найти пути к файлам ядра и initramfs и любые необходимые параметры загрузки и скопируйте их в конфигурацию выбранного сетевого загрузчика. Некоторые дистрибутивы предлагают отдельный набор kernel+initramfs, предназначенный для загрузки по сети :, просмотрите содержимое ISO для каталогов с именем images/netbootили аналогичным.

Поскольку вы укажете пути TFTP, которые будут использоваться для извлечения этих файлов, вы можете размещать их где угодно. Но вы можете упростить задачу и просто поместить их в любой каталог, который является «корневым каталогом TFTP» по умолчанию для выбранного вами TFTP-сервера.

После того, как вы справились с передачей нужного ядра и файлов initramfs клиенту, вам просто нужно выяснить, как предоставить остальную часть содержимого ISO. Обычно это просто вопрос размещения либо ISO-образа, либо его извлеченного содержимого (, либо смонтированного по циклу -ISO-образа )в любое удобное место на веб-сервере и добавления параметра загрузки ядра, указывающего URL-адрес ISO в конфигурацию загрузчика PXE.

  • Для современных RHEL/CentOS/Fedora и их клонов требуемые параметры загрузки ядра будут примерно такимиip=dhcp inst.stage2=http://some.www.server/root/of/ISO
  • Debian/Ubuntu будет иметь достаточную функциональность в своих initramfs установщика, чтобы связываться с серверами репозитория дистрибутива (, такими как deb.debian.org), напрямую, поэтому, если исходящие соединения разрешены, вам может вообще не понадобиться полный ISO.
1
28.07.2021, 11:35

Теги

Похожие вопросы