Здравствуйте.
В этот раз мы автоматизируем нашу работу и заставим в автоматическом режиме установить Astra Linux на клиентский пк.
Данная статья является вольным пересказом статей с Вики астры тут и тут. Те статьи взяты за основу.
Существуют два типа загрузки ОС старый (Legacy) и новый (UEFI). В этой статье я рассмотрю Legacy Mode, и про UEFI напишу после. Так же в статье будет много конфиг файлов, которые очень неудобно смотреть в разметке Дзена. Их я обрывками покажу в статье, а сами файлы прикреплю в конце, для скачки.
Исходные данные:
Сервер 192.168.50.9 с именем pxe, на котором установлены локальные копии репозитория из прошлой статьи.
Начнем. Первым делом нам необходимо установить TFTP-сервер, для загрузки по сети (не путать с FTP), и скачать все необходимые пакеты. Выполняем команду:
sudo apt install tftpd-hpa pxelinux syslinux
Следом нам необходимо установить DHCP-сервер. Либо на эту же машину, либо на отдельную. Для простоты, установим его на эту же машину.
sudo apt install fly-admin-dhcp
Конечно для установки хватит и команды:
sudo apt install isc-dhcp-server
но я ставлю графическую оболочку, для того чтобы после настройки, можно было наглядно увидеть что мы настроили. Только удобство, ничего более.
Не забываем после установки DHCP указать интерфейс на котором он будет работать:
sudo nano /etc/default/isc-dhcp-server:
INTERFACESv4="eth0"
В примере выше интерфейс всего один - eth0.
После настройки интерфейса - приступаем к настройке самого DHCP. Конфигурационный файл для удобства будет выложен в конце статьи.
authoritative;
option domain-name "astra.ipa";
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
option domain-name-servers 77.88.8.8;
allow booting;
allow bootp;
option fqdn.no-client-update on;
option fqdn.rcode2 255;
option pxegrub code 150 = text ;
next-server 192.168.50.9;
option architecture code 93 = unsigned integer 16 ;
if option architecture = 00:07 {
filename "bootx64.efi";
} elsif option architecture = 00:09 {
filename "bootx64.efi";
} else {
filename "pxelinux.0";
}
subnet 192.168.50.0 netmask 255.255.255.0 {
range 192.168.50.100 192.168.50.199;
option broadcast-address 192.168.50.255;
option routers 192.168.50.1;
option subnet-mask 255.255.255.0;
}
Давайте немного пробежимся по параметрам. Как вы видите там мы разрешаем загрузку по сети, указываем настройки. И самое главное - строка next-server и показывает, где у нас установлен TFTP-сервер.
next-server 192.168.50.9;
Так как у нас он установлен локально, то и адрес указываем текущей машины.
if option architecture = 00:07 {
filename "bootx64.efi";
} elsif option architecture = 00:09 {
filename "bootx64.efi";
} else {
filename "pxelinux.0";
}
Данный кусок кода указывает нам как раз - какое ядро загрузки грузить Legacy или UEFI. Уходя в теорию - наш компьютер при опросе сервера, дает ответ, где указывает в какой архитектуре он загружается. Мы получая этот ответ, понимаем - какой файл ему отсылать для загрузки. Как видите в UEFI режиме грузится файл bootx64.efi, в Legacy - pxelinux.0
После правки конфигурационного файла не забываем перезагрузить DHCP-сервер и проверить его работоспособность:
sudo systemctl restart isc-dhcp-server
sudo systemctl status isc-dhcp-server
Все. DHCP-сервер готов. Теперь осталось подготовить нужные файлы для загрузки. Берем установочный диск с Астрой и монтируем его в систему. В моем примере я монтирую образ астры в /media/cdrom0/. Ваш путь может отличаться.
sudo mount /dev/sr0 /media/cdrom0/
монтируем диск
sudo mkdir -p /srv/tftp/se/
создаем папку /tftp/se/
sudo cp /media/cdrom0/netinst/linux /srv/tftp/se/
sudo cp /media/cdrom0/netinst/initrd.gz /srv/tftp/se
копируем содержимое из папки netinstall установочного диска Астры к нам в папку с TFTP-сервером.
А вот дальше небольшой нюанс. Для установки Астры нам необходимо будет указать репозитории для установки системы. И сетевые репозитории main, update, base, extended - не подойдут, так как там отсутствуют некоторые пакеты, необходимые для установки. Выход - скопировать либо весь установочный диск Астры локально в папку с дистрибутивом, либо хватит и двух папок dists и pool. В примере ниже я копирую две папки вместо всего диска в отдельную папку distib с указанием версии Астры.
sudo mkdir -p /srv/distrib/174/{pool,dists}/
sudo cp -r /media/cdrom0/pool/* /srv/distrib/174/pool
sudo cp -r /media/cdrom0/dists/* /srv/distrib/174/dists
Теперь наши репозитории нужно сделать видимыми. Так как моя машина использовалась в прошлой статье как сервер репозиториев - мне останется лишь сделать символьную ссылку для веб доступа.
sudo ln -s /srv/distrib/ /var/www/html/
Вам же в своем решении нужно самостоятельно решить где и как у вас будут храниться репозитории установочного диска.
Дальше нам остается только скопировать нужные библиотеки pxelinux и syslinux для успешной загрузки окружения.
sudo cp /usr/lib/PXELINUX/pxelinux.0 /srv/tftp/
sudo cp /usr/lib/syslinux/modules/bios/{chain.c32,ldlinux.c32,libcom32.c32,libutil.c32,menu.c32} /srv/tftp/
В зависимости от статей и реализаций - список модулей всегда различный. Мы же идем по шагам от вики Астры.
Все. Мы добавили все необходимые для загрузки файлы. Теперь очередь - написать меню, которое будет открываться при старте.
Для этого мы создаем папку:
sudo mkdir -p /srv/tftp/pxelinux.cfg
И создаем внутри конфигурационный файл:
sudo nano /srv/tftp/pxelinux.cfg/default
Внутри файла записываем:
ui menu.c32
PROMPT 0
MENU TITLE NetBoot OS
TIMEOUT 50
DEFAULT local
LABEL local
MENU LABEL Boot from local drive
kernel chain.c32
append hd0
LABEL netinstall
MENU LABEL Astra Linux 1.7.4 Smolensk Install
kernel se/linux
append initrd=se/initrd.gz modprobe.blacklist=evbug auto=true priority=critical debian-installer/locale=en_US console-keymaps-at/keymap=ru hostname=astrapxenew domain=astra.ipa astra-license/license=true url=tftp://192.168.50.9/se/174/preseed_smolensk.cfg interface=auto netcfg/dhcp_timeout=60 astra_install=1 vga=788 debian-installer/allow_unauthenticated=true network-console/enable=false
Конфигурационный файл также приложу в конце. Как мы видим здесь мы указываем что будет написано в Титуле. Делаем 2 записи - загрузка с локального диска и установка Астры 1.7.4 версии Смоленск. В длинной строке передаются как раз все параметры. Обратите внимание на параметр url=tftp://192.168.50.9/se/174/preseed_smolensk.cfg именно в этом файле мы указываем файл автоответов.
По идее мы уже можем запускать наш сервер и вручную устанавливать ОС, так же кликая далее далее, установить. Файл автоответов же позволяет максимально автоматизировать процесс установки, не прибегая к взаимодействию с пользователем. Вы выбираете установку по сети - через некоторое время получаете готовый к использованию компьютер.
Файл автоответов громадный, пример его также можно посмотреть на wiki астры, его я так же кину в конце статьи. И сам по себе он обширен - настройка всех параметров установки: какое ПО установить, какие сервисы, как разбить диск, какие имена и учетные данные. Сам файл preseed (автоответов) может занять не одну статью. Поэтому я кину свой готовый preseed файл, в котором изменены настройки:
репозиторий - 192.168.50.9
учетная запись - astra
пароль - 12345678
А затем в отдельной статье мы просто рассмотрим фишки файла preseed. Возможно кто-то даже подскажет варианты более удачные, чем мои.
Итак после всех манипуляций также перезапускаем сервисы:
sudo systemctl restart isc-dhcp-server
sudo systemctl restart tftpd-hpa
И проверяем что у нас все заработало.
Все конфиг файлы доступны по ссылке.
Дальше мы посмотрим на загрузку в UEFI. Добавим файлы необходимые для загрузки в этом режиме. И посмотрим отдельно на строчки в preseed файле, посмотрим полезные настройки, которые можно применить.