Сетевая загрузка с возможностью установки

Технология Intel PXE

Возможность загрузки ОС по сети реализована с помощью стандартной технологии PXE, которая состоит из следующих этапов:

  1. Встроенный в BIOS компьютера загрузчик PXE:
  • получает IP-адрес по протоколу BOOTP (протокол, родственный DHCP);
  • скачивает по протоколу TFTP с сервера TFTP файлы загрузчика, в т.ч. сам загрузчик и конфигурационный файл с описанием меню загрузки, и элементы vmlinuz и initrd в качестве минимальной версии ОС;
  • запускает минимальную версию ОС с указанными в конфигурационном файле параметрами.
  1. Минимальная версия ОС, запущенная на клиентском компьютере:
  • скачивает указанные в параметрах запуска initrd установочный образ и дополнительные компоненты полной версии ОС по протоколу HTTP с установленного на сервере PXE веб-сервера, сохраняя их в оперативной памяти;
  • запускает скачанную полную версию ОС на клиенте.

Таким образом, на клиентском компьютере запускается тот же установочный образ LiveCD, что и при загрузке с USB-накопителя или DVD-диска.

Следует учесть, что для сетевой загрузки ОС на клиентской системе требуется на 2 Гб оперативной памяти больше, чем для обычной установки.

Начальная настройка сервера для работы PXE

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

Для того чтобы ОС могла работать в качестве сервера PXE, необходимо установить и настроить серверные пакеты. Для настройки понадобятся сервера DHCP и TFTP (простейший веб-сервер для загрузки по HTTP уже предустановлен), а также загрузчик syslinux:

dnf install dhcp-server tftp-server syslinux

Настройка сервера DHCP (BOOTP)

Конкретная настройка DHCP-сервера специфична для каждой локальной сети. В качестве примера можно рассмотреть по шагам простейший случай:

  1. установить на сервере PXE для текущего сетевого соединения статический IP-адрес 192.168.1.1 и маску подсети 255.255.255.0;
option domain-name "rosa.lan";
option domain-name-servers ns1.rosa.lan, ns2.rosa.lan;
default-lease-time 3600;
max-lease-time 7200;
authoritative;allow booting;
allow bootp;
filename "pxelinux.0";
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option domain-search "rosa.lan";
option domain-name-servers 192.168.1.1;
range 192.168.1.10 192.168.1.100;
}
  1. заменить содержимое файла настройки /etc/dhcpd.conf на следующее:
sudo systemctl enable --now dhcpd
  1. включить сервис DHCP командой:
systemctl status dhcpd
  1. статус запущенного сервера (должен быть active) можно проверить командой:

Правильность подключения можно проверить, войдя в сеть с клиентского компьютера: он должен получить от сервера DHCP IP-адрес 192.168.1.10.

Настройка веб-сервера

В предустановленном на образах ОС языке Python есть простой веб-сервер, который можно использовать для тестовой PXE-установки (потребуется ISO-образ ОС), последовательно выполнив следующие команды:

  1. создать папку для веб-сервера:
mkdir -p "$HOME/webserver"
  1. перейти в папку $HOME/webserver:
cd "$HOME/webserver"
  1. создать папку для ISO-образа:
mkdir -p ISO
  1. монтировать папку для ISO-образа:
sudo mount -o loop "<путь к ISO-образу>" "$HOME/webserver/ISO"
  1. запустить HTTP-сервер из папки:
python3 -m http.server

Далее необходимо скопировать в папку $HOME/webserver файл kickstart-сценария a.ks, создание которого описано в п. Типовой сценарий автоматизированной установки.

Консоль, в которой будет работать веб-сервер, следует оставить открытой. Проверить правильность его настройки можно, открыв на компьютере браузер по адресу http://192.168.1.1:8000.

В браузере должны быть выведены файлы из директории веб-сервера, в том числе должны быть доступны папка ISO, ее содержимое, и файл kickstart-сценария a.ks, а в консоли веб-сервера должен быть выведен лог запросов к нему.

Настройка сервера TFTP

Для настройки сервера TFTP нужно выполнить следующие действия:

  1. скопировать в папку сервера TFTP компоненты первоначального загрузчика:
( cd /usr/share/syslinux && cp -v menu.c32 pxelinux.0 ldlinux.c32 libutil.c32 /var/lib/tftpboot/ )
  1. скопировать минимальную версию ОС из ISO-образа в папку TFTP-сервера (от имени пользователя, но не root):
( cd "$HOME/webserver/ISO/isolinux" ; sudo cp -v initrd0.img vmlinuz0 /var/lib/tftpboot/ )
  1. создать папку для дополнительных конфигурационных файлов TFTP-сервера:
mkdir -p /var/lib/tftpboot/pxelinux.cfg
  1. открыть на редактирование файл /var/lib/tftpboot/pxelinux.cfg/default (будет создан, если не существует):
nano /var/lib/tftpboot/pxelinux.cfg/default

со следующим содержимым:

default menu.c32
prompt 0
timeout 300
ONTIME local
menu title #================ PXE BOOT ===============#
label 1
menu label ^1) Automatically install ROSA
kernel /vmlinuz0
append initrd=/initrd0.img systemd.unit=anaconda.target enforcing=0 root=live:http://192.168.1.1:8000/ISO/LiveOS/squashfs.img inst.text inst.ks=http://192.168.1.1:8000/a.ks
label 2
menu label ^2) Install ROSA
kernel /vmlinuz0
append initrd=/initrd0.img enforcing=0 root=live:http://192.168.1.1:8000/ISO/LiveOS/squashfs.img

Для сохранения данных и выхода из редактора nano нажимают клавиши Ctrl+O и Ctrl+X соответственно.

В строках, начинающихся с append, определены параметры cmdline ядра для вариантов загрузки в меню. В первом случае запускается автоматизированная консольная установка по kickstart-сценарию, а во втором случае запускается LiveCD. При отсутствии выбора со стороны пользователя какого-либо пункта меню в течение 300 секунд будет произведена загрузка первого пункта.

Следует обратить внимание, что приведенный выше kickstart-сценарий автоматически стирает весь диск, т.е. в приведенной конфигурации, если не выбрать второй пункт меню, будет произведена автоматическая установка с форматированием диска. При запуске ОС по PXE можно выбрать нужный пункт меню. При необходимости можно адаптировать меню под свои потребности (дополнительная информация доступна по ссылке https://wiki.syslinux.org/wiki/index.php?title=PXELINUX).

  1. запустить и добавить в автозагрузку TFTP-сервер:
sudo systemctl enable --now tftp
  1. выполнить настройки BIOS клиентской машины на загрузку по сети (PXE) и произвести загрузку.

Настройка сети в LiveCD

По умолчанию при запуске LiveCD, включая режим работы исключительно установщика ОС, настройка сети осуществляется автоматически по протоколу DHCP.

В случае необходимости задания статических сетевых параметров соответствующая конфигурация может быть передана в ядро через параметр cmdline, используя синтаксис, поддерживаемый модулем dracut network-legacy.

Пример задания параметров сети вручную:

ip=192.168.122.50::192.168.122.1:255.255.255.0:::off

где:

  • 192.168.122.50 — IP-адрес сетевого интерфейса;
  • 192.168.122.1 — шлюз по умолчанию;
  • 255.255.255.0 — маска подсети;
  • off — отключение автоматической настройки через DHCP.

Дополнительные сведения о параметрах и форматах можно найти на справочной странице dracut.cmdline(7).