NetInstall: различия между версиями
Snowmix (обсуждение | вклад) (Изменение установки для систем на базе p9) |
Нет описания правки |
||
(не показано 18 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
= Сетевая установка ALT Linux = | == Сетевая установка ALT Linux. Начальные условия == | ||
Процесс сетевой установки можно разделить на несколько стадий: | |||
* на новом компьютере | # Получение IP-адреса в сети сетевой картой, а также получение адреса TFTP-сервера. | ||
# Загрузка PXE-загрузчика. На этом этапе происходит загрузка PXE-загрузчика по протоколу TFTP. | |||
# Загрузка и запуск ядра ОС и начальной файловой системы. Начальная файловая система подгружается в ОЗУ. Она содержит необходимые утилиты, скрипты и драйвера для получения доступа к корневой файловой системе. | |||
# Получение IP-адреса ядром ОС по протоколу DHCP. | |||
# Монтирование корневой файловой системы (может происходить по протоколу NFS или путем предварительной выгрузки в ОЗУ по протоколам FTP и HTTP). | |||
# Запуск установки ОС. | |||
Для осуществления успешной сетевой установки требуются: | |||
* на новом компьютере — сетевой интерфейс с поддержкой PXE; | |||
* сервер DHCP с поддержкой BOOTP; | * сервер DHCP с поддержкой BOOTP; | ||
* сервер TFTP; | * сервер TFTP; | ||
* сервер FTP (желательно с анонимным доступом), HTTP или NFS. | * сервер FTP (желательно с анонимным доступом), HTTP или NFS. | ||
Не обязательно размещать установочные пакеты на сервер, на котором размещены службы DHCP и TFTP. Сервер DHCP определяет файл загрузчика и сервер TFTP, с которого клиент может загрузить загрузчик, установочное ядро и начальные файлы виртуального диска. Файлы загрузчика, которые размещаются на сервере TFTP, могут дополнительно определять сервер, с которого клиент может получить установочные пакеты. | |||
{{Note|Настроить сервер сетевых установок можно также в модуле [[ЦУС]] [[Alterator-netinst|Сервер сетевых установок]]. Но в настоящий момент модуль [[Alterator-netinst|Сервер сетевых установок]] не позволяет настроить установку в EFI-режиме для PXE-установки.}} | |||
== Сетевая инсталляция ALT 10.x (упрощенная инструкция) == | |||
{{Note|Указанные в данном разделе методы были протестированы на дистрибутивах Альт Сервер 10.2 и Альт Рабочая станция 10.2. Для других дистрибутивов десятой платформы данные действия должны подходить, но могут быть отличия в путях нахождения ядра Linux.}} | |||
=== Настройка PXE Legacy (предварительная настройка перед EFI) === | |||
Сервер сетевой установки можно построить на базе Альт Сервер 10.х. Он уже имеет некоторые необходимые конфигурации для публикации файлов сетевой установки. | |||
После установки Альт Сервер необходимо с помощью Альтератора (ЦУС) настроить DHCP. Для базового использования достаточно примера из [https://docs.altlinux.org/ru-RU/alt-server/10.1/html/alt-server/server-network--dhcp.html документации к дистрибутиву] | |||
Затем можно настроить PXE сервер с помощью того же Альтератора. [https://docs.altlinux.org/ru-RU/alt-server/10.2/html/alt-server/netinst.html Пример в документации] также есть. | |||
'''В итоге шаги следующие:''' | |||
# Установить Альт Сервер | |||
# Включить DHCP с помощью Альтератора | |||
# Включить сервер сетевой установки | |||
Готово. Настроенный сервер позволит производить сетевую установку в Legacy режиме. | |||
=== Настройка PXE EFI === | |||
В результате прошлых действий был сконфигурирован сервер сетевой установки в Legacy режиме. | |||
==== Изменения в DHCP ==== | |||
Отредактируйте файл {{path|/etc/dhcp/dhcpd.conf}}. В нем необходимо добавить строку ''"option arch code 93 = unsigned integer 16;"'' перед секцией '''subnet''', а в ней самой заменить строку с '''filename''' на условие с выбором архитектуры клиента. | |||
<syntaxhighlight lang="ini"> | |||
#auto generated by alterator-dhcp-reset | |||
ddns-update-style none; | |||
authoritative; | |||
option space altlinux; | |||
option altlinux.keydata code 2 = string; | |||
vendor-option-space altlinux; | |||
# новая строка | |||
option arch code 93 = unsigned integer 16; | |||
subnet 192.168.11.0 netmask 255.255.255.0 { | |||
next-server 192.168.11.1; | |||
# замена filename | |||
if option arch = 00:00 { | |||
filename "bios.img"; | |||
} else { | |||
filename "grubx64.efi"; | |||
} | |||
option root-path "/srv/public/netinst/current"; | |||
option routers 192.168.11.1; | |||
option domain-name-servers 192.168.11.1; | |||
option domain-name "host-15"; | |||
default-lease-time 3600; | |||
max-lease-time 3600; | |||
range 192.168.11.10 192.168.11.20; | |||
} | |||
</syntaxhighlight> | |||
{{Note|Данный пример работает только для '''Legacy''' и '''EFI''' режимов. Для поддержки '''Secure Boot''' необходимо изменить условие. В данной статье есть пример с '''shimx64.efi''', этот файл позволяет загрузиться в данном режиме.}} | |||
После изменения конфигурации сервер DHCP необходимо перезапустить. | |||
==== Добавление EFI загрузчика ==== | |||
Загрузчик для '''EFI''' режима можно взять из самой системы. Достаточно выполнить команду: | |||
<syntaxhighlight lang="bash"># cp /usr/lib64/efi/grubx64.efi /var/lib/tftpboot</syntaxhighlight> | |||
Также в конфигурации DHCP был указан другой '''filename''' для '''Legacy''' режима. Его можно собрать следующей командой: | |||
<syntaxhighlight lang="bash"># grub-mkimage -O i386-pc-pxe -o /var/lib/tftpboot/bios.img -p "/" tftp pxe normal ls echo minicmd halt reboot http linux</syntaxhighlight> | |||
==== Изменения grub.cfg ==== | |||
Теперь можно сделать общий файл {{path|/var/lib/tftpboot/grub.cfg}} для обоих режимов: | |||
<syntaxhighlight lang="bash"> | |||
set default=0 | |||
set timeout=60 | |||
if [ ${grub_platform} == "pc" ]; then | |||
set arch="Legacy/BIOS" | |||
elif [ ${grub_platform} == "efi" ]; then | |||
set arch="EFI" | |||
fi | |||
menuentry "PXE install in $arch" { | |||
echo "Loading..." | |||
linux syslinux//boot/vmlinuz fastboot lowmem ramdisk_size=1000000 showopts stagename=altinst automatic=method:nfs,network:dhcp | |||
initrd syslinux//boot/initrd.img | |||
} | |||
</syntaxhighlight> | |||
После загрузки grub по сети появится меню с единственным пунктом загрузки. В названии пункта загрузки будет отражена текущая архитектура. | |||
На этом настройка поддержки efi режима для сервера сетевой установки будет завершена. | |||
{{Note|Если далее производить настройку сервера DHCP и PXE через Альтератор (ЦУС), то все внесенные изменения '''будут стерты!'''}} | |||
=== grub.cfg для автоматической установки по сети === | |||
Известно, что во время автоматической установки устанавливается загрузчик для текущего режима, в котором запущен инсталлятор. То есть если установка по сети была запущена в режиме Legacy, то загрузчик будет установлен в режиме Legacy. | |||
Этот момент возможно учесть в подготовленных заранее скриптах автоустановки. Подробнее можно узнать в [https://docs.altlinux.org/ru-RU/alt-server/10.2/html/alt-server/install-distro--autoinstall--chapter.html документации] или далее в статье. | |||
Вместо одной с директории '''metadata''' на '''ftp''' сервере необходимо подготовить две директории для соответствующего режима. | |||
Теперь необходимо внести изменения в файл {{path|/var/lib/tftpboot/grub.cfg}} | |||
<syntaxhighlight lang="bash"> | |||
set default=0 | |||
set timeout=60 | |||
if [ ${grub_platform} == "pc" ]; then | |||
set arch="Legacy/BIOS" | |||
set metadata_endpoint="curl=ftp://192.168.11.1/metadata_legacy" | |||
elif [ ${grub_platform} == "efi" ]; then | |||
set arch="EFI" | |||
set metadata_endpoint="curl=ftp://192.168.11.1/metadata_efi" | |||
fi | |||
menuentry "PXE automatic install in $arch" { | |||
echo "Loading automatic mode..." | |||
linux syslinux//boot/vmlinuz ai $metadata_endpoint fastboot lowmem ramdisk_size=1000000 showopts stagename=altinst automatic=method:nfs,network:dhcp | |||
initrd syslinux//boot/initrd.img | |||
} | |||
menuentry "PXE manual install in $arch" { | |||
echo "Loading in manual mode..." | |||
linux syslinux//boot/vmlinuz fastboot lowmem ramdisk_size=1000000 showopts stagename=altinst automatic=method:nfs,network:dhcp | |||
initrd syslinux//boot/initrd.img | |||
} | |||
</syntaxhighlight> | |||
Таким образом в меню GRUB появятся 2 пункта для автоматической и ручной установок. | |||
{{Note|Подобным образом возможно организовать выбор между несколькими скриптами автоустановки.'''}} | |||
== Сетевая инсталляция ALT 10.x (ручная настройка) == | |||
=== Настройка DHCP === | |||
# Установить DHCP-сервер: | |||
#: <syntaxhighlight lang="bash"># apt-get install dhcp-server</syntaxhighlight> | |||
# Настроить файл конфигурации DHCP ({{path|/etc/dhcp/dhcpd.conf}}): | |||
#: <syntaxhighlight lang="ini">option arch code 93 = unsigned integer 16; | |||
if option arch = 00:06 { | |||
# EFI IA32 => Grub2 | |||
filename "shimx64.efi"; | |||
} else if option arch = 00:07 { | |||
# EFI BC => Grub2 | |||
filename "shimx64.efi"; | |||
} else if option arch = 00:09 { | |||
# EFI x86-64 => Grub2 | |||
filename "shimx64.efi"; | |||
} else { | |||
# Intel x86PC (BIOS) => PXELinux | |||
filename "pxelinux.0"; | |||
} | |||
subnet 192.168.0.0 netmask 255.255.255.0 { | |||
# Указание используемого TFTP-сервера | |||
next-server 192.168.0.17; | |||
# адрес NFS-сервера для установки в Legacy | |||
option root-path "/srv/public/netinst/mnt"; | |||
option routers 192.168.0.1; | |||
option domain-name-servers 8.8.8.8; | |||
option domain-name "test.alt"; | |||
default-lease-time 3600; | |||
max-lease-time 3600; | |||
range 192.168.0.190 192.168.0.200; | |||
} | |||
</syntaxhighlight> | |||
# Запустить DHCP-сервер: | |||
#: <syntaxhighlight lang="bash"># systemctl enable --now dhcpd</syntaxhighlight> | |||
В этом примере настраивается пул общедоступных IP-адресов в диапазоне от 192.168.0.190 до 192.168.0.200 в подсети 192.168.0.0/24. Любая система в подсети, загружаемая по PXE, использует загрузчик, указанный в параметре ''filename''. Для клиентов на базе UEFI используется файл загрузчика shimx64.efi, для клиентов на базе BIOS — файл pxelinux.0. | |||
{{Note|Архитектура системы клиента DHCP<ref>https://wiki.syslinux.org/wiki/index.php?title=PXELINUX</ref>: | |||
*06 (EFI IA32) иногда используется некоторыми поставщиками для устаревшей (CSM) загрузки компьютеров x64; | |||
*07 (EFI BC) иногда используется некоторыми поставщиками для загрузки EFI x64.}} | |||
Параметр ''next-server'' указывает IP-адрес TFTP-сервера, с которого клиент может загрузить файл загрузчика. | |||
== | {{Note|Параметр ''next-server'' следует указывать даже если для размещения служб DHCP и TFTP используется один и тот же сервер.}} | ||
=== | |||
=== Настройка TFTP === | |||
Trivial File Transfer Protocol (TFTP) используется для загрузки загрузочного образа на клиентскую машину. | |||
# Установить TFTP-сервер и пакет пакет {{pkg|syslinux}}: | |||
#: <syntaxhighlight lang="bash"># apt-get install tftp-server-xinetd syslinux</syntaxhighlight> | |||
#:Пакет {{pkg|syslinux}} предоставляет загрузчик pxelinux.0, который PXE-клиенты на базе BIOS могут использовать для загрузки установочного ядра Linux (vmlinuz). | |||
# Отредактировать файл {{path|/etc/xinetd.d/tftp}} и убедиться что включен TFTP-сервер: | |||
#: <syntaxhighlight lang="ini">disable = no</syntaxhighlight> | |||
# Удалить или закомментировать следующую строку в файле {{path|/etc/xinetd.conf}}: | |||
#: <syntaxhighlight lang="ini">only_from = 127.0.0.1</syntaxhighlight> | |||
# Перезапустить сервис xinetd: | |||
#: <syntaxhighlight lang="bash"># systemctl restart xinetd</syntaxhighlight> | |||
==== Публикация источника установки ==== | |||
Загрузить ISO-образ и переместить его на PXE-сервер. | |||
Смонтировать ISO-образ: | |||
<syntaxhighlight lang="bash"># mkdir -p /srv/public/netinst/mnt/ | |||
# mount -t iso9660 -o loop,ro /path/iso-file.iso /srv/public/netinst/mnt</syntaxhighlight> | |||
или с привода CD/DVD: | |||
<syntaxhighlight lang="bash"># mount -t iso9660 -o loop,ro /dev/sr0 /srv/public/netinst/mnt</syntaxhighlight> | |||
Скопировать каталог boot, содержащий ядро ОС и начальную файловую систему, выполнив команду: | |||
<syntaxhighlight lang="bash"># cp -r /srv/public/netinst/mnt/boot/ /var/lib/tftpboot/</syntaxhighlight> | |||
==== | ==== Настройка установки в Legacy ==== | ||
Создать подкаталог для хранения файлов загрузочного образа в /var/lib/tftpboot: | |||
<syntaxhighlight lang="bash"># mkdir -p /var/lib/tftpboot/pxelinux.cfg</syntaxhighlight> | |||
Скопировать файл загрузчика pxelinux в каталог, указанный в конфигурации TFTP: | |||
<syntaxhighlight lang="bash"># cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/ | |||
</syntaxhighlight> | |||
Создать файл конфигурации загрузчика по умолчанию {{path|/var/lib/tftpboot/pxelinux.cfg/default}} и файл {{path|/var/lib/tftpboot/pxelinux.cfg/default.msg}} | |||
# | {{note|Можно скопировать файл конфигурации загрузчика {{path|/var/lib/tftpboot/pxelinux.cfg/default}} с диска: | ||
<syntaxhighlight lang="bash"># cp /srv/public/netinst/mnt/syslinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default | |||
# chmod 644 /var/lib/tftpboot/pxelinux.cfg/default | |||
</syntaxhighlight>}} | |||
Содержимое файла {{path|/var/lib/tftpboot/pxelinux.cfg/default}}: | |||
<syntaxhighlight lang="cfg"> | |||
timeout 120 | timeout 120 | ||
prompt 1 | prompt 1 | ||
display pxelinux.cfg/ | default local | ||
display pxelinux.cfg/default.msg | |||
label local | label local | ||
localboot | localboot -2 | ||
label ftp | label ftp | ||
kernel | kernel /boot/vmlinuz | ||
append initrd= | append initrd=/boot/initrd.img fastboot changedisk automatic=method:ftp,network:dhcp,server:192.168.0.195,directory:/netinst/mnt/ stagename=altinst ramdisk_size=669397 showopts nosplash mpath lang=ru_RU | ||
label nfs | |||
label | kernel /boot/vmlinuz | ||
kernel | append initrd=/boot/initrd.img fastboot changedisk automatic=method:nfs,network:dhcp stagename=altinst ramdisk_size=669397 showopts nosplash mpath lang=ru_RU | ||
append initrd= | |||
label memtest | |||
label | menu label ^Memory Test | ||
linux /boot/memtest.bin | |||
</syntaxhighlight> | |||
Где: | |||
*''default''— загрузочная запись по умолчанию указывает на метку local; | |||
*''timeout''— pxelinux загружает клиент, используя загрузочную запись по умолчанию, после таймаута в 120 секунд; | |||
*''prompt 1''— ждать выбора записи пользователем (prompt 0 — отключает ожидание); | |||
*''display pxelinux.cfg/default.msg''— выводит содержимое файла pxelinux.cfg/default.msg; | |||
*''kernel''— определяет файла ядра (путь до ядра ОС относительно пути, указанного в конфигурации TFTP); | |||
*''append''— определяет параметры, которые должны быть добавлены при загрузке ядра; | |||
*''initrd''— путь к корневой файловой системе для начальной загрузки (относительно пути, указанного в конфигурации TFTP). | |||
Содержимое файла {{path|/var/lib/tftpboot/pxelinux.cfg/default.msg}}: | |||
<syntaxhighlight lang="cfg"> | |||
Type one of: | |||
ftp - install from ftp archive | |||
nfs - install from nfs archive | |||
local - boot from 1st HDD | |||
memtest - run memtest | |||
</syntaxhighlight> | |||
# | ==== Настройка установки в UEFI ==== | ||
Скопировать файлы загрузчика shimx64.efi и grubx64.efi в каталог, указанный в конфигурации TFTP: | |||
<syntaxhighlight lang="bash"># cp /usr/lib64/efi/shimx64.efi /var/lib/tftpboot | |||
# cp /usr/lib64/efi/grubx64.efi /var/lib/tftpboot</syntaxhighlight> | |||
Создать файл конфигурации загрузчика по умолчанию grub.cfg в {{path|/var/lib/tftpboot}}. | |||
{{note|Можно взять файл с диска: | |||
<syntaxhighlight lang="bash"># cp /srv/public/netinst/mnt/boot/grub/grub.cfg /var/lib/tftpboot/ | |||
# chmod 644 /var/lib/tftpboot/grub.cfg | |||
</syntaxhighlight>}} | |||
" > | Пример файла {{path|/var/lib/tftpboot/grub.cfg}}: | ||
<syntaxhighlight lang="cfg"> | |||
set timeout=120 | |||
set default=ftp | |||
menuentry $"Install FTP "'ALT Server 10.1 x86_64'--id 'ftp' { | |||
echo $"Loading Linux vmlinuz ..." | |||
linux /boot/vmlinuz fastboot changedisk automatic=method:ftp,network:dhcp,server:192.168.0.17,directory:/netinst/mnt/ stagename=altinst ramdisk_size=669397 vga=normal mpath lang=ru_RU | |||
echo $"Loading initial ramdisk ..." | |||
initrd /boot/initrd.img | |||
} | |||
==== | menuentry $"Install NFS "'ALT Server 10.1 x86_64' --id 'nfs' { | ||
echo $"Loading Linux vmlinuz ..." | |||
linux /boot/vmlinuz fastboot changedisk automatic=method:nfs,network:dhcp,server:192.168.0.17,directory:/srv/public/netinst/mnt/ stagename=altinst ramdisk_size=669397 vga=normal mpath lang=ru_RU | |||
echo $"Loading initial ramdisk ..." | |||
initrd /boot/initrd.img | |||
} | |||
menuentry $"Memory Test (may not work with Secure Boot)" --id 'memtest' { | |||
linux /boot/memtest.efi | |||
} | |||
</syntaxhighlight> | |||
}</ | |||
( | Где: | ||
*''default''— загрузочная запись по умолчанию указывает на метку ftp; | |||
*''timeout''— загружает клиент, используя загрузочную запись по умолчанию, после таймаута в 120 секунд; | |||
*''linux''— определяет файла ядра (путь до ядра ОС относительно пути, указанного в конфигурации TFTP) и параметры, которые должны быть добавлены при загрузке ядра, например расположение установочных пакетов и способы доступа к этим пакетам; | |||
*''initrd''— путь к корневой файловой системе для начальной загрузки (относительно пути, указанного в конфигурации TFTP). | |||
=== | === Настройка FTP === | ||
# Установить FTP-сервер: | |||
#: <syntaxhighlight lang="bash"># apt-get install vsftpd</syntaxhighlight> | |||
# Отредактировать файл {{path|/etc/xinetd.d/vsftpd}} и убедиться что включен FTP-сервер: | |||
#: <syntaxhighlight lang="ini">disable = no</syntaxhighlight> | |||
# Перезапустить сервис xinetd: | |||
#: <syntaxhighlight lang="bash"># systemctl restart xinetd</syntaxhighlight> | |||
# Создать ссылку на {{path|/srv/public}}: | |||
#: <syntaxhighlight lang="bash"># ln -s /srv/public /var/ftp</syntaxhighlight> | |||
=== Настройка NFS === | |||
# Установить NFS-сервер: | |||
#: <syntaxhighlight lang="bash"># apt-get install nfs-server</syntaxhighlight> | |||
# Дописать в файл {{path|/etc/exports}} строки: | |||
#: <syntaxhighlight lang="text"> | |||
/srv/public -ro,insecure,no_subtree_check,fsid=1 * | |||
/srv/public/netinst/mnt -ro,insecure,no_subtree_check,fsid=2 * | |||
</syntaxhighlight> | |||
# Экспортировать каталоги: | |||
#: <syntaxhighlight lang="bash"># exportfs -r</syntaxhighlight> | |||
# Разрешить rpcbind прослушивать входящие соединения из сети: | |||
#: <syntaxhighlight lang="bash"># control rpcbind server</syntaxhighlight> | |||
# Запустить NFS-сервер: | |||
#: <syntaxhighlight lang="bash"># systemctl enable --now nfs-server</syntaxhighlight> | |||
=== Автоматическая установка === | |||
Для включения режима автоматической установки необходимо подготовить файлы, описанные в статье [[Autoinstall]]. | |||
Затем в файл конфигурации загрузчика к одному из пунктов загрузки дописать параметр загрузки ai (без значения) и параметр curl с указанием каталога с установочными файлами (каталог с установочными файлами может находиться как на этом же сервере, так и на другом сервере). В этом же файле можно также установить время ожидания и указать пункт меню, загружаемый по умолчанию. | |||
В | |||
Пример для режима Legacy (файл {{path|/var/lib/tftpboot/pxelinux.cfg/default}}) | |||
<syntaxhighlight lang="cfg"> | |||
timeout 120 | |||
default nfs | |||
==== | label nfs | ||
kernel /boot/vmlinuz | |||
append initrd=/boot/initrd.img fastboot changedisk automatic=method:nfs,network:dhcp stagename=altinst ramdisk_size=669397 showopts nosplash mpath lang=ru_RU ai curl=ftp://192.168.0.123/metadata/</syntaxhighlight> | |||
Пример для UEFI (файл {{path|/var/lib/tftpboot/grub.cfg}}): | |||
<syntaxhighlight lang="cfg"> | |||
set timeout=120 | |||
set default=nfs | |||
==== | menuentry $"Install NFS "'ALT Server 10.1 x86_64' --id 'nfs' { | ||
echo $"Loading Linux vmlinuz ..." | |||
linux /boot/vmlinuz fastboot changedisk automatic=method:nfs,network:dhcp,server:192.168.0.17,directory:/srv/public/netinst/mnt/ stagename=altinst ramdisk_size=669397 vga=normal mpath lang=ru_RU ai curl=ftp://192.168.0.123/metadata/ | |||
echo $"Loading initial ramdisk ..." | |||
initrd /boot/initrd.img | |||
} | |||
</syntaxhighlight> | |||
=== Загрузка компьютера === | |||
Включаем новый компьютер, вызываем его BIOS SETUP, разрешаем "LAN adapter BOOT ROM", "PXE boot" или аналогичный пункт настройки, загружаем. | Включаем новый компьютер, вызываем его BIOS SETUP, разрешаем "LAN adapter BOOT ROM", "PXE boot" или аналогичный пункт настройки, загружаем. | ||
В процессе загрузки видна заставка PXELINUX, затем начинается загрузка. Если | В процессе загрузки видна заставка PXELINUX, затем начинается загрузка. Если указано несколько вариантов загрузки, будет предложен выбор: | ||
[[Файл:Netinstall_uefi.png|Сетевая установка в режиме UEFI]] | |||
== Сетевая инсталляция ALT Linux 9.0 == | == Сетевая инсталляция ALT Linux 9.0 == | ||
Требуется: сетевая карта с поддержкой PXE<ref>Как вариант, дискетка или ещё что-нибудь с Etherboot.</ref>. | Требуется: сетевая карта с поддержкой PXE<ref>Как вариант, дискетка или ещё что-нибудь с Etherboot.</ref>. | ||
Установить следующие пакеты: | Установить следующие пакеты: | ||
< | <syntaxhighlight lang="bash"># apt-get install dhcp-server syslinux tftp-server vsftpd tftp-server-xinetd apache2-base</syntaxhighlight> | ||
</ | Настройка DHCP-сервера {{path|/etc/dhcp/dhcpd.conf}}<ref>Уточните под свою сеть! Не пересекитесь с уже работающим DHCP-сервером!</ref>: | ||
<syntaxhighlight lang="ini"> | |||
Настройка | |||
< | |||
option arch code 93 = unsigned integer 16; | option arch code 93 = unsigned integer 16; | ||
class "pxeclients" { | class "pxeclients" { | ||
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient"; | |||
next-server 192.168.1.1; | |||
if option arch = 00:06 { | |||
filename "bootia32.efi"; | |||
} else if option arch = 00:07 { | |||
filename "shimx64.efi"; | |||
} else { | |||
filename "pxelinux.0"; | |||
} | |||
} | } | ||
subnet 192.168.1.0 netmask 255.255.255.0 { | subnet 192.168.1.0 netmask 255.255.255.0 { | ||
default-lease-time 3600; | |||
max-lease-time 3600; | |||
range 192.168.1.100 192.168.1.200; | |||
} | } | ||
</ | </syntaxhighlight> | ||
<syntaxhighlight lang="bash"> | |||
< | |||
# mkdir -p /srv/public/netinst/mnt/ | # mkdir -p /srv/public/netinst/mnt/ | ||
# mount /dev/sr0 /srv/public/netinst/mnt/ | # mount /dev/sr0 /srv/public/netinst/mnt/ | ||
Строка 152: | Строка 411: | ||
# mkdir -p /var/lib/tftpboot/pxelinux.cfg | # mkdir -p /var/lib/tftpboot/pxelinux.cfg | ||
# touch /var/lib/tftpboot/pxelinux.cfg/default /var/lib/tftpboot/pxelinux.cfg/default.msg | # touch /var/lib/tftpboot/pxelinux.cfg/default /var/lib/tftpboot/pxelinux.cfg/default.msg | ||
</ | </syntaxhighlight> | ||
=== Настройка установки в Legacy === | |||
Содержимое файла /var/lib/tftpboot/pxelinux.cfg/default: | Содержимое файла {{path|/var/lib/tftpboot/pxelinux.cfg/default}}: | ||
< | <syntaxhighlight lang="cfg"> | ||
default local | default local | ||
display pxelinux.cfg/default.msg | display pxelinux.cfg/default.msg | ||
Строка 178: | Строка 437: | ||
label memtest | label memtest | ||
linux memtest.bin | linux memtest.bin | ||
</ | </syntaxhighlight> | ||
Содержимое файла /var/lib/tftpboot/pxelinux.cfg/default.msg: | Содержимое файла {{path|/var/lib/tftpboot/pxelinux.cfg/default.msg}}: | ||
< | <syntaxhighlight lang="cfg"> | ||
Type one of: | Type one of: | ||
Строка 189: | Строка 448: | ||
local - boot from 1st HDD | local - boot from 1st HDD | ||
mem - run memtest | mem - run memtest | ||
</ | </syntaxhighlight> | ||
=== Настройка установки в UEFI === | |||
Содержимое файла /var/lib/tftpboot/grub.cfg: | Содержимое файла {{path|/var/lib/tftpboot/grub.cfg}}: | ||
< | <syntaxhighlight lang="cfg"> | ||
set timeout=120 | set timeout=120 | ||
menuentry "FTP install" { | menuentry "FTP install" { | ||
Строка 207: | Строка 466: | ||
initrdefi syslinux/alt0/full.cz | initrdefi syslinux/alt0/full.cz | ||
} | } | ||
</ | </syntaxhighlight> | ||
Получить файлы shimx64.efi и grubx64.efi: | Получить файлы shimx64.efi и grubx64.efi: | ||
< | <syntaxhighlight lang="bash"> | ||
cp /usr/lib64/efi/shimx64.efi /var/lib/tftpboot | # cp /usr/lib64/efi/shimx64.efi /var/lib/tftpboot | ||
cp /usr/lib64/efi/grubx64.efi /var/lib/tftpboot | # cp /usr/lib64/efi/grubx64.efi /var/lib/tftpboot | ||
</ | </syntaxhighlight> | ||
=== Настройка TFTP === | |||
Отредактировать файл /etc/xinetd.d/tftp и убедиться что включен | Отредактировать файл {{path|/etc/xinetd.d/tftp}} и убедиться что включен TFTP-сервер: | ||
< | <syntaxhighlight lang="text"> | ||
disable = no | disable = no | ||
</ | </syntaxhighlight> | ||
Перезапустить сервис: | Перезапустить сервис: | ||
< | <syntaxhighlight lang="bash"> | ||
# systemctl restart xinetd | # systemctl restart xinetd | ||
</ | </syntaxhighlight> | ||
=== Настройка FTP === | |||
Отредактировать файл /etc/xinetd.d/vsftpd и убедиться что включен | Отредактировать файл {{path|/etc/xinetd.d/vsftpd}} и убедиться что включен FTP-сервер: | ||
< | <syntaxhighlight lang="text"> | ||
disable = no | disable = no | ||
</ | </syntaxhighlight> | ||
Перезапустить сервис: | Перезапустить сервис: | ||
< | <syntaxhighlight lang="bash"> | ||
# systemctl restart xinetd | # systemctl restart xinetd | ||
</ | </syntaxhighlight> | ||
=== Настройка NFS === | |||
В файле /etc/exports должна быть следующая строчка: | В файле {{path|/etc/exports}} должна быть следующая строчка: | ||
< | <syntaxhighlight lang="text"> | ||
/srv/public -ro,insecure,no_subtree_check,fsid=1,crossmnt * | /srv/public -ro,insecure,no_subtree_check,fsid=1,crossmnt * | ||
</ | </syntaxhighlight> | ||
Экспорт каталогов: | Экспорт каталогов: | ||
< | <syntaxhighlight lang="bash"> | ||
exportfs -r | # exportfs -r | ||
</ | </syntaxhighlight> | ||
=== Настройка HTTP === | |||
Для apache создать конфигурационный файл /etc/httpd2/conf/sites-available/netinst.conf со следующим содержимым: | Для apache создать конфигурационный файл {{path|/etc/httpd2/conf/sites-available/netinst.conf}} со следующим содержимым: | ||
< | <syntaxhighlight lang="apache"> | ||
<VirtualHost *:80> | <VirtualHost *:80> | ||
DocumentRoot /srv/public/netinst/mnt/ | DocumentRoot /srv/public/netinst/mnt/ | ||
Строка 255: | Строка 514: | ||
</Directory> | </Directory> | ||
</VirtualHost> | </VirtualHost> | ||
</ | </syntaxhighlight> | ||
Применить изменения: | Применить изменения: | ||
< | <syntaxhighlight lang="bash"> | ||
a2dissite 000-default | # a2dissite 000-default | ||
a2dissite 000-default_https | # a2dissite 000-default_https | ||
a2ensite netinst | # a2ensite netinst | ||
systemctl restart httpd2 | # systemctl restart httpd2 | ||
</ | </syntaxhighlight> | ||
=== Примечания | == Сетевая установка ALT Linux 7.0 == | ||
=== Минимально необходимые ручные настройки для однократной установки === | |||
Обычно в сети уже имеется сервер DHCP. | |||
Особенности реализации: | |||
*вносятся изменения в уже имеющийся сервер DHCP (ISC или совместимый по формату конфигов) — в ОС «Альт» пакет {{pkg|dhcp-server}}; | |||
*сервер TFTP выполняется в режиме программы, но не демона — используем пакет tftpd; | |||
*в качестве источника установки используется один из имеющихся серверов (демонов): FTP, HTTP или NFS. | |||
=== Подготовка загрузчика === | |||
Пусть корень сервера TFTP будет {{path|~/Altlinux/PXEINSTALL}}. | |||
#Создаём каталоги для сервера TFTP: {{cmd|mkdir -p ~/Altlinux/PXEINSTALL/pxelinux.cfg ~/Altlinux/PXEINSTALL/alt0}} | |||
#Копируем загрузчик из пакета syslinux: {{cmd|cp /usr/lib/syslinux/pxelinux.0 ~/Altlinux/PXEINSTALL}} | |||
#Создаём файл конфигурации загрузчика — умолчание для всех компьютеров | |||
#:(Примечание: Размер виртуального диска в "append ... ramdisk_size=" определяется размером файла "altinst" — если места не хватит, pxelinux.0 будет бесконечно спрашивать источник загрузки. | |||
#:<syntaxhighlight lang="cfg"> | |||
echo " | |||
default local | |||
timeout 120 | |||
prompt 1 | |||
display pxelinux.cfg/altlinux.msg | |||
label local | |||
localboot 0 | |||
#install source: FTP | |||
label ftp | |||
kernel alt0/vmlinuz | |||
append initrd=alt0/full.cz live fastboot showopts automatic=method:ftp,network:dhcp,server:192.0.2.2,directory:/pub/ALTLinux/ stagename=altinst ramdisk_size=45000 | |||
#install source: HTTP | |||
label http | |||
kernel alt0/vmlinuz | |||
append initrd=alt0/full.cz live fastboot automatic=method:http,network:dhcp,server:192.0.2.2,directory:/Altlinux stagename=altinst ramdisk_size=45000 | |||
#install source: NFS | |||
label nfs | |||
kernel alt0/vmlinuz | |||
append initrd=alt0/full.cz ai live fastboot automatic=method:nfs,network:dhcp,server:192.0.2.2,directory:/space/ftp/pub/Altlinux/ stagename=altinst | |||
" > ~/Altlinux/PXEINSTALL/pxelinux.cfg/default | |||
</syntaxhighlight> | |||
#Если известен адрес MAC сетевой карты, можно сделать копию или hardlink файла конфигурации для этого адреса MAC. | |||
#Нельзя делать simlink из-за того, что in.tftpd с опцией -s отказывается ресолвить симлинки. | |||
#:Пример: {{cmd|ln default ~/Altlinux/PXEINSTALL/pxelinux.cfg/01-00-18-f3-d0-62-06}} | |||
#Создаём файл с подсказкой о выборе загрузки | |||
#:<syntaxhighlight lang="cfg"> | |||
echo " | |||
Network install Altlinux 7.0.4 | |||
Type one of: | |||
ftp - install from ftp archive | |||
http - install from http site | |||
nfs - install from nfs directory | |||
local - boot from 1st HDD | |||
" > ~/Altlinux/PXEINSTALL/pxelinux.cfg/altlinux.msg | |||
</syntaxhighlight> | |||
=== Подготовка сервера DHCP (BOOTP) === | |||
В файл конфигурации сервера DHCP добавляем секцию для нашего нового компьютера: | |||
<syntaxhighlight lang="ini"> | |||
host PXE { | |||
hardware ethernet 00:18:f3:d0:62:06; # MAC сетевого интерфейса | |||
fixed-address 192.0.2.7; # такой IP будет ему назначен (не обязателено) | |||
next-server 192.0.2.6; # IP-адрес сервера TFTP | |||
filename "pxelinux.0"; # имя файла загрузчика PXELINUX | |||
} | |||
</syntaxhighlight> | |||
Эта секция добавлена рядом с секцией "subnet 192.0.2.0 netmask 255.255.255.0 { … }", на том же уровне иерархии. | |||
=== Запуск сервера TFTP === | |||
Запустим программу сервера TFTP в foreground chroot в подготовленный каталог: | |||
<syntaxhighlight lang="bash"># in.tftpd -L4s ~/Altlinux/PXEINSTALL</syntaxhighlight> | |||
Проверить, всё ли в порядке, можно в файлах протоколов {{path|/var/log/daemons/warnings}} и {{path|/var/log/daemons/errors}}. | |||
Если хочется увидеть, какие файлы запрашивает клиент (PXE), укажите высокий уровень протоколирования и наблюдайте лог {{path|/var/log/daemons/info}}. | |||
В одном окне консоли: | |||
<syntaxhighlight lang="bash"># in.tftpd -L4s --verbosity 10 ~/Altlinux/PXEINSTALL</syntaxhighlight> | |||
В другом: | |||
<syntaxhighlight lang="bash"># tail -F /var/log/daemons/info</syntaxhighlight> | |||
=== Публикация источника установки === | |||
Монтируем загрузочный CD или DVD и раздаём его содержимое по ftp, http или nfs. | |||
Пример для FTP: | |||
<syntaxhighlight lang="bash"># mkdir /ftp/pub/Altlinux | |||
# mount -t iso9660 -o ro /dev/sdd /ftp/pub/Altlinux</syntaxhighlight> | |||
или | |||
<syntaxhighlight lang="bash"># mount -t iso9660 -o loop,ro ~/Downloads/alt-N-installdvd.iso /ftp/pub/Altlinux</syntaxhighlight> | |||
=== Загрузка компьютера === | |||
Включаем новый компьютер, вызываем его BIOS SETUP, разрешаем "LAN adapter BOOT ROM", "PXE boot" или аналогичный пункт настройки, загружаем. | |||
В процессе загрузки видна заставка PXELINUX, затем начинается загрузка. Если FTP или HTTP требует аутентификацию, PXELINUX предложит указать источник загрузки - в текстовой форме ввода можно задать адрес сервера, путь к содержимому установочного диска, логин и пароль. | |||
== Примечания == | |||
<references /> | <references /> | ||
== Ссылки == | |||
* [http://lists.altlinux.ru/pipermail/sarlug/2007-October/004835.html Описание установки по сети] (SarLUG) | * [http://lists.altlinux.ru/pipermail/sarlug/2007-October/004835.html Описание установки по сети] (SarLUG) | ||
* [http://freesource.info/wiki/Stat'i/SozdanieTonkixKlientov Сетевая загрузка тонкого клиента ] | * [http://freesource.info/wiki/Stat'i/SozdanieTonkixKlientov Сетевая загрузка тонкого клиента ] |
Текущая версия от 01:24, 14 августа 2024
Сетевая установка ALT Linux. Начальные условия
Процесс сетевой установки можно разделить на несколько стадий:
- Получение IP-адреса в сети сетевой картой, а также получение адреса TFTP-сервера.
- Загрузка PXE-загрузчика. На этом этапе происходит загрузка PXE-загрузчика по протоколу TFTP.
- Загрузка и запуск ядра ОС и начальной файловой системы. Начальная файловая система подгружается в ОЗУ. Она содержит необходимые утилиты, скрипты и драйвера для получения доступа к корневой файловой системе.
- Получение IP-адреса ядром ОС по протоколу DHCP.
- Монтирование корневой файловой системы (может происходить по протоколу NFS или путем предварительной выгрузки в ОЗУ по протоколам FTP и HTTP).
- Запуск установки ОС.
Для осуществления успешной сетевой установки требуются:
- на новом компьютере — сетевой интерфейс с поддержкой PXE;
- сервер DHCP с поддержкой BOOTP;
- сервер TFTP;
- сервер FTP (желательно с анонимным доступом), HTTP или NFS.
Не обязательно размещать установочные пакеты на сервер, на котором размещены службы DHCP и TFTP. Сервер DHCP определяет файл загрузчика и сервер TFTP, с которого клиент может загрузить загрузчик, установочное ядро и начальные файлы виртуального диска. Файлы загрузчика, которые размещаются на сервере TFTP, могут дополнительно определять сервер, с которого клиент может получить установочные пакеты.
Сетевая инсталляция ALT 10.x (упрощенная инструкция)
Настройка PXE Legacy (предварительная настройка перед EFI)
Сервер сетевой установки можно построить на базе Альт Сервер 10.х. Он уже имеет некоторые необходимые конфигурации для публикации файлов сетевой установки.
После установки Альт Сервер необходимо с помощью Альтератора (ЦУС) настроить DHCP. Для базового использования достаточно примера из документации к дистрибутиву
Затем можно настроить PXE сервер с помощью того же Альтератора. Пример в документации также есть.
В итоге шаги следующие:
- Установить Альт Сервер
- Включить DHCP с помощью Альтератора
- Включить сервер сетевой установки
Готово. Настроенный сервер позволит производить сетевую установку в Legacy режиме.
Настройка PXE EFI
В результате прошлых действий был сконфигурирован сервер сетевой установки в Legacy режиме.
Изменения в DHCP
Отредактируйте файл /etc/dhcp/dhcpd.conf. В нем необходимо добавить строку "option arch code 93 = unsigned integer 16;" перед секцией subnet, а в ней самой заменить строку с filename на условие с выбором архитектуры клиента.
#auto generated by alterator-dhcp-reset
ddns-update-style none;
authoritative;
option space altlinux;
option altlinux.keydata code 2 = string;
vendor-option-space altlinux;
# новая строка
option arch code 93 = unsigned integer 16;
subnet 192.168.11.0 netmask 255.255.255.0 {
next-server 192.168.11.1;
# замена filename
if option arch = 00:00 {
filename "bios.img";
} else {
filename "grubx64.efi";
}
option root-path "/srv/public/netinst/current";
option routers 192.168.11.1;
option domain-name-servers 192.168.11.1;
option domain-name "host-15";
default-lease-time 3600;
max-lease-time 3600;
range 192.168.11.10 192.168.11.20;
}
После изменения конфигурации сервер DHCP необходимо перезапустить.
Добавление EFI загрузчика
Загрузчик для EFI режима можно взять из самой системы. Достаточно выполнить команду:
# cp /usr/lib64/efi/grubx64.efi /var/lib/tftpboot
Также в конфигурации DHCP был указан другой filename для Legacy режима. Его можно собрать следующей командой:
# grub-mkimage -O i386-pc-pxe -o /var/lib/tftpboot/bios.img -p "/" tftp pxe normal ls echo minicmd halt reboot http linux
Изменения grub.cfg
Теперь можно сделать общий файл /var/lib/tftpboot/grub.cfg для обоих режимов:
set default=0
set timeout=60
if [ ${grub_platform} == "pc" ]; then
set arch="Legacy/BIOS"
elif [ ${grub_platform} == "efi" ]; then
set arch="EFI"
fi
menuentry "PXE install in $arch" {
echo "Loading..."
linux syslinux//boot/vmlinuz fastboot lowmem ramdisk_size=1000000 showopts stagename=altinst automatic=method:nfs,network:dhcp
initrd syslinux//boot/initrd.img
}
После загрузки grub по сети появится меню с единственным пунктом загрузки. В названии пункта загрузки будет отражена текущая архитектура.
На этом настройка поддержки efi режима для сервера сетевой установки будет завершена.
grub.cfg для автоматической установки по сети
Известно, что во время автоматической установки устанавливается загрузчик для текущего режима, в котором запущен инсталлятор. То есть если установка по сети была запущена в режиме Legacy, то загрузчик будет установлен в режиме Legacy.
Этот момент возможно учесть в подготовленных заранее скриптах автоустановки. Подробнее можно узнать в документации или далее в статье.
Вместо одной с директории metadata на ftp сервере необходимо подготовить две директории для соответствующего режима.
Теперь необходимо внести изменения в файл /var/lib/tftpboot/grub.cfg
set default=0
set timeout=60
if [ ${grub_platform} == "pc" ]; then
set arch="Legacy/BIOS"
set metadata_endpoint="curl=ftp://192.168.11.1/metadata_legacy"
elif [ ${grub_platform} == "efi" ]; then
set arch="EFI"
set metadata_endpoint="curl=ftp://192.168.11.1/metadata_efi"
fi
menuentry "PXE automatic install in $arch" {
echo "Loading automatic mode..."
linux syslinux//boot/vmlinuz ai $metadata_endpoint fastboot lowmem ramdisk_size=1000000 showopts stagename=altinst automatic=method:nfs,network:dhcp
initrd syslinux//boot/initrd.img
}
menuentry "PXE manual install in $arch" {
echo "Loading in manual mode..."
linux syslinux//boot/vmlinuz fastboot lowmem ramdisk_size=1000000 showopts stagename=altinst automatic=method:nfs,network:dhcp
initrd syslinux//boot/initrd.img
}
Таким образом в меню GRUB появятся 2 пункта для автоматической и ручной установок.
Сетевая инсталляция ALT 10.x (ручная настройка)
Настройка DHCP
- Установить DHCP-сервер:
# apt-get install dhcp-server
- Настроить файл конфигурации DHCP (/etc/dhcp/dhcpd.conf):
option arch code 93 = unsigned integer 16; if option arch = 00:06 { # EFI IA32 => Grub2 filename "shimx64.efi"; } else if option arch = 00:07 { # EFI BC => Grub2 filename "shimx64.efi"; } else if option arch = 00:09 { # EFI x86-64 => Grub2 filename "shimx64.efi"; } else { # Intel x86PC (BIOS) => PXELinux filename "pxelinux.0"; } subnet 192.168.0.0 netmask 255.255.255.0 { # Указание используемого TFTP-сервера next-server 192.168.0.17; # адрес NFS-сервера для установки в Legacy option root-path "/srv/public/netinst/mnt"; option routers 192.168.0.1; option domain-name-servers 8.8.8.8; option domain-name "test.alt"; default-lease-time 3600; max-lease-time 3600; range 192.168.0.190 192.168.0.200; }
- Запустить DHCP-сервер:
# systemctl enable --now dhcpd
В этом примере настраивается пул общедоступных IP-адресов в диапазоне от 192.168.0.190 до 192.168.0.200 в подсети 192.168.0.0/24. Любая система в подсети, загружаемая по PXE, использует загрузчик, указанный в параметре filename. Для клиентов на базе UEFI используется файл загрузчика shimx64.efi, для клиентов на базе BIOS — файл pxelinux.0.
- 06 (EFI IA32) иногда используется некоторыми поставщиками для устаревшей (CSM) загрузки компьютеров x64;
- 07 (EFI BC) иногда используется некоторыми поставщиками для загрузки EFI x64.
Параметр next-server указывает IP-адрес TFTP-сервера, с которого клиент может загрузить файл загрузчика.
Настройка TFTP
Trivial File Transfer Protocol (TFTP) используется для загрузки загрузочного образа на клиентскую машину.
- Установить TFTP-сервер и пакет пакет syslinux:
# apt-get install tftp-server-xinetd syslinux
- Пакет syslinux предоставляет загрузчик pxelinux.0, который PXE-клиенты на базе BIOS могут использовать для загрузки установочного ядра Linux (vmlinuz).
- Отредактировать файл /etc/xinetd.d/tftp и убедиться что включен TFTP-сервер:
disable = no
- Удалить или закомментировать следующую строку в файле /etc/xinetd.conf:
only_from = 127.0.0.1
- Перезапустить сервис xinetd:
# systemctl restart xinetd
Публикация источника установки
Загрузить ISO-образ и переместить его на PXE-сервер.
Смонтировать ISO-образ:
# mkdir -p /srv/public/netinst/mnt/
# mount -t iso9660 -o loop,ro /path/iso-file.iso /srv/public/netinst/mnt
или с привода CD/DVD:
# mount -t iso9660 -o loop,ro /dev/sr0 /srv/public/netinst/mnt
Скопировать каталог boot, содержащий ядро ОС и начальную файловую систему, выполнив команду:
# cp -r /srv/public/netinst/mnt/boot/ /var/lib/tftpboot/
Настройка установки в Legacy
Создать подкаталог для хранения файлов загрузочного образа в /var/lib/tftpboot:
# mkdir -p /var/lib/tftpboot/pxelinux.cfg
Скопировать файл загрузчика pxelinux в каталог, указанный в конфигурации TFTP:
# cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/
Создать файл конфигурации загрузчика по умолчанию /var/lib/tftpboot/pxelinux.cfg/default и файл /var/lib/tftpboot/pxelinux.cfg/default.msg
# cp /srv/public/netinst/mnt/syslinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
# chmod 644 /var/lib/tftpboot/pxelinux.cfg/default
Содержимое файла /var/lib/tftpboot/pxelinux.cfg/default:
timeout 120
prompt 1
default local
display pxelinux.cfg/default.msg
label local
localboot -2
label ftp
kernel /boot/vmlinuz
append initrd=/boot/initrd.img fastboot changedisk automatic=method:ftp,network:dhcp,server:192.168.0.195,directory:/netinst/mnt/ stagename=altinst ramdisk_size=669397 showopts nosplash mpath lang=ru_RU
label nfs
kernel /boot/vmlinuz
append initrd=/boot/initrd.img fastboot changedisk automatic=method:nfs,network:dhcp stagename=altinst ramdisk_size=669397 showopts nosplash mpath lang=ru_RU
label memtest
menu label ^Memory Test
linux /boot/memtest.bin
Где:
- default— загрузочная запись по умолчанию указывает на метку local;
- timeout— pxelinux загружает клиент, используя загрузочную запись по умолчанию, после таймаута в 120 секунд;
- prompt 1— ждать выбора записи пользователем (prompt 0 — отключает ожидание);
- display pxelinux.cfg/default.msg— выводит содержимое файла pxelinux.cfg/default.msg;
- kernel— определяет файла ядра (путь до ядра ОС относительно пути, указанного в конфигурации TFTP);
- append— определяет параметры, которые должны быть добавлены при загрузке ядра;
- initrd— путь к корневой файловой системе для начальной загрузки (относительно пути, указанного в конфигурации TFTP).
Содержимое файла /var/lib/tftpboot/pxelinux.cfg/default.msg:
Type one of:
ftp - install from ftp archive
nfs - install from nfs archive
local - boot from 1st HDD
memtest - run memtest
Настройка установки в UEFI
Скопировать файлы загрузчика shimx64.efi и grubx64.efi в каталог, указанный в конфигурации TFTP:
# cp /usr/lib64/efi/shimx64.efi /var/lib/tftpboot
# cp /usr/lib64/efi/grubx64.efi /var/lib/tftpboot
Создать файл конфигурации загрузчика по умолчанию grub.cfg в /var/lib/tftpboot.
# cp /srv/public/netinst/mnt/boot/grub/grub.cfg /var/lib/tftpboot/
# chmod 644 /var/lib/tftpboot/grub.cfg
Пример файла /var/lib/tftpboot/grub.cfg:
set timeout=120
set default=ftp
menuentry $"Install FTP "'ALT Server 10.1 x86_64'--id 'ftp' {
echo $"Loading Linux vmlinuz ..."
linux /boot/vmlinuz fastboot changedisk automatic=method:ftp,network:dhcp,server:192.168.0.17,directory:/netinst/mnt/ stagename=altinst ramdisk_size=669397 vga=normal mpath lang=ru_RU
echo $"Loading initial ramdisk ..."
initrd /boot/initrd.img
}
menuentry $"Install NFS "'ALT Server 10.1 x86_64' --id 'nfs' {
echo $"Loading Linux vmlinuz ..."
linux /boot/vmlinuz fastboot changedisk automatic=method:nfs,network:dhcp,server:192.168.0.17,directory:/srv/public/netinst/mnt/ stagename=altinst ramdisk_size=669397 vga=normal mpath lang=ru_RU
echo $"Loading initial ramdisk ..."
initrd /boot/initrd.img
}
menuentry $"Memory Test (may not work with Secure Boot)" --id 'memtest' {
linux /boot/memtest.efi
}
Где:
- default— загрузочная запись по умолчанию указывает на метку ftp;
- timeout— загружает клиент, используя загрузочную запись по умолчанию, после таймаута в 120 секунд;
- linux— определяет файла ядра (путь до ядра ОС относительно пути, указанного в конфигурации TFTP) и параметры, которые должны быть добавлены при загрузке ядра, например расположение установочных пакетов и способы доступа к этим пакетам;
- initrd— путь к корневой файловой системе для начальной загрузки (относительно пути, указанного в конфигурации TFTP).
Настройка FTP
- Установить FTP-сервер:
# apt-get install vsftpd
- Отредактировать файл /etc/xinetd.d/vsftpd и убедиться что включен FTP-сервер:
disable = no
- Перезапустить сервис xinetd:
# systemctl restart xinetd
- Создать ссылку на /srv/public:
# ln -s /srv/public /var/ftp
Настройка NFS
- Установить NFS-сервер:
# apt-get install nfs-server
- Дописать в файл /etc/exports строки:
/srv/public -ro,insecure,no_subtree_check,fsid=1 * /srv/public/netinst/mnt -ro,insecure,no_subtree_check,fsid=2 *
- Экспортировать каталоги:
# exportfs -r
- Разрешить rpcbind прослушивать входящие соединения из сети:
# control rpcbind server
- Запустить NFS-сервер:
# systemctl enable --now nfs-server
Автоматическая установка
Для включения режима автоматической установки необходимо подготовить файлы, описанные в статье Autoinstall.
Затем в файл конфигурации загрузчика к одному из пунктов загрузки дописать параметр загрузки ai (без значения) и параметр curl с указанием каталога с установочными файлами (каталог с установочными файлами может находиться как на этом же сервере, так и на другом сервере). В этом же файле можно также установить время ожидания и указать пункт меню, загружаемый по умолчанию.
Пример для режима Legacy (файл /var/lib/tftpboot/pxelinux.cfg/default)
timeout 120
default nfs
label nfs
kernel /boot/vmlinuz
append initrd=/boot/initrd.img fastboot changedisk automatic=method:nfs,network:dhcp stagename=altinst ramdisk_size=669397 showopts nosplash mpath lang=ru_RU ai curl=ftp://192.168.0.123/metadata/
Пример для UEFI (файл /var/lib/tftpboot/grub.cfg):
set timeout=120
set default=nfs
menuentry $"Install NFS "'ALT Server 10.1 x86_64' --id 'nfs' {
echo $"Loading Linux vmlinuz ..."
linux /boot/vmlinuz fastboot changedisk automatic=method:nfs,network:dhcp,server:192.168.0.17,directory:/srv/public/netinst/mnt/ stagename=altinst ramdisk_size=669397 vga=normal mpath lang=ru_RU ai curl=ftp://192.168.0.123/metadata/
echo $"Loading initial ramdisk ..."
initrd /boot/initrd.img
}
Загрузка компьютера
Включаем новый компьютер, вызываем его BIOS SETUP, разрешаем "LAN adapter BOOT ROM", "PXE boot" или аналогичный пункт настройки, загружаем.
В процессе загрузки видна заставка PXELINUX, затем начинается загрузка. Если указано несколько вариантов загрузки, будет предложен выбор:
Сетевая инсталляция ALT Linux 9.0
Требуется: сетевая карта с поддержкой PXE[2]. Установить следующие пакеты:
# apt-get install dhcp-server syslinux tftp-server vsftpd tftp-server-xinetd apache2-base
Настройка DHCP-сервера /etc/dhcp/dhcpd.conf[3]:
option arch code 93 = unsigned integer 16;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 192.168.1.1;
if option arch = 00:06 {
filename "bootia32.efi";
} else if option arch = 00:07 {
filename "shimx64.efi";
} else {
filename "pxelinux.0";
}
}
subnet 192.168.1.0 netmask 255.255.255.0 {
default-lease-time 3600;
max-lease-time 3600;
range 192.168.1.100 192.168.1.200;
}
# mkdir -p /srv/public/netinst/mnt/
# mount /dev/sr0 /srv/public/netinst/mnt/
# cp -r /srv/public/netinst/mnt/syslinux/ /var/lib/tftpboot/
# cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/
# mkdir -p /var/lib/tftpboot/pxelinux.cfg
# touch /var/lib/tftpboot/pxelinux.cfg/default /var/lib/tftpboot/pxelinux.cfg/default.msg
Настройка установки в Legacy
Содержимое файла /var/lib/tftpboot/pxelinux.cfg/default:
default local
display pxelinux.cfg/default.msg
timeout 100
prompt 1
label local
localboot 0
label ftp
kernel syslinux/alt0/vmlinuz
append initrd=syslinux/alt0/full.cz changedisk fastboot ramdisk_size=347909 showopts vga=normal quiet splash automatic=method:ftp,network:dhcp,server:192.168.1.1,directory:/netinst/mnt/ tz=Europe/Moscow lang=ru_RU
label nfs
kernel syslinux/alt0/vmlinuz
append initrd=syslinux/alt0/full.cz changedisk fastboot ramdisk_size=347909 showopts vga=normal quiet splash automatic=method:nfs,network:dhcp tz=Europe/Moscow lang=ru_RU
label http
kernel syslinux/alt0/vmlinuz
append initrd=syslinux/alt0/full.cz changedisk fastboot ramdisk_size=347909 showopts vga=normal quiet splash automatic=method:http,network:dhcp,server:192.168.1.1,directory:/ tz=Europe/Moscow lang=ru_RU
label memtest
linux memtest.bin
Содержимое файла /var/lib/tftpboot/pxelinux.cfg/default.msg:
Type one of:
ftp - install from ftp archive
http - install from http site
nfs - install from nfs directory
local - boot from 1st HDD
mem - run memtest
Настройка установки в UEFI
Содержимое файла /var/lib/tftpboot/grub.cfg:
set timeout=120
menuentry "FTP install" {
linuxefi syslinux/alt0/vmlinuz fastboot live lowmem ramdisk_size=871661 showopts quiet splash stagename=altinst automatic=method:ftp,network:dhcp,server:192.168.1.1,directory:/netinst/mnt/
initrdefi syslinux/alt0/full.cz
}
menuentry "NFS install" {
linuxefi syslinux/alt0/vmlinuz fastboot live lowmem ramdisk_size=871661 showopts quiet splash stagename=altinst automatic=method:nfs,network:dhcp,server:19
2.168.1.1,directory:/srv/public/netinst/mnt/
initrdefi syslinux/alt0/full.cz
}
menuentry "HTTP install" {
linuxefi syslinux/alt0/vmlinuz fastboot live lowmem ramdisk_size=871661 showopts quiet splash stagename=altinst automatic=method:http,network:dhcp,server:192.168.1.1,directory:/
initrdefi syslinux/alt0/full.cz
}
Получить файлы shimx64.efi и grubx64.efi:
# cp /usr/lib64/efi/shimx64.efi /var/lib/tftpboot
# cp /usr/lib64/efi/grubx64.efi /var/lib/tftpboot
Настройка TFTP
Отредактировать файл /etc/xinetd.d/tftp и убедиться что включен TFTP-сервер:
disable = no
Перезапустить сервис:
# systemctl restart xinetd
Настройка FTP
Отредактировать файл /etc/xinetd.d/vsftpd и убедиться что включен FTP-сервер:
disable = no
Перезапустить сервис:
# systemctl restart xinetd
Настройка NFS
В файле /etc/exports должна быть следующая строчка:
/srv/public -ro,insecure,no_subtree_check,fsid=1,crossmnt *
Экспорт каталогов:
# exportfs -r
Настройка HTTP
Для apache создать конфигурационный файл /etc/httpd2/conf/sites-available/netinst.conf со следующим содержимым:
<VirtualHost *:80>
DocumentRoot /srv/public/netinst/mnt/
<Directory /srv/public/netinst/mnt/>
Options +FollowSymLinks -Indexes
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
Применить изменения:
# a2dissite 000-default
# a2dissite 000-default_https
# a2ensite netinst
# systemctl restart httpd2
Сетевая установка ALT Linux 7.0
Минимально необходимые ручные настройки для однократной установки
Обычно в сети уже имеется сервер DHCP. Особенности реализации:
- вносятся изменения в уже имеющийся сервер DHCP (ISC или совместимый по формату конфигов) — в ОС «Альт» пакет dhcp-server;
- сервер TFTP выполняется в режиме программы, но не демона — используем пакет tftpd;
- в качестве источника установки используется один из имеющихся серверов (демонов): FTP, HTTP или NFS.
Подготовка загрузчика
Пусть корень сервера TFTP будет ~/Altlinux/PXEINSTALL.
- Создаём каталоги для сервера TFTP: mkdir -p ~/Altlinux/PXEINSTALL/pxelinux.cfg ~/Altlinux/PXEINSTALL/alt0
- Копируем загрузчик из пакета syslinux: cp /usr/lib/syslinux/pxelinux.0 ~/Altlinux/PXEINSTALL
- Создаём файл конфигурации загрузчика — умолчание для всех компьютеров
- (Примечание: Размер виртуального диска в "append ... ramdisk_size=" определяется размером файла "altinst" — если места не хватит, pxelinux.0 будет бесконечно спрашивать источник загрузки.
echo " default local timeout 120 prompt 1 display pxelinux.cfg/altlinux.msg label local localboot 0 #install source: FTP label ftp kernel alt0/vmlinuz append initrd=alt0/full.cz live fastboot showopts automatic=method:ftp,network:dhcp,server:192.0.2.2,directory:/pub/ALTLinux/ stagename=altinst ramdisk_size=45000 #install source: HTTP label http kernel alt0/vmlinuz append initrd=alt0/full.cz live fastboot automatic=method:http,network:dhcp,server:192.0.2.2,directory:/Altlinux stagename=altinst ramdisk_size=45000 #install source: NFS label nfs kernel alt0/vmlinuz append initrd=alt0/full.cz ai live fastboot automatic=method:nfs,network:dhcp,server:192.0.2.2,directory:/space/ftp/pub/Altlinux/ stagename=altinst " > ~/Altlinux/PXEINSTALL/pxelinux.cfg/default
- Если известен адрес MAC сетевой карты, можно сделать копию или hardlink файла конфигурации для этого адреса MAC.
- Нельзя делать simlink из-за того, что in.tftpd с опцией -s отказывается ресолвить симлинки.
- Пример: ln default ~/Altlinux/PXEINSTALL/pxelinux.cfg/01-00-18-f3-d0-62-06
- Создаём файл с подсказкой о выборе загрузки
echo " Network install Altlinux 7.0.4 Type one of: ftp - install from ftp archive http - install from http site nfs - install from nfs directory local - boot from 1st HDD " > ~/Altlinux/PXEINSTALL/pxelinux.cfg/altlinux.msg
Подготовка сервера DHCP (BOOTP)
В файл конфигурации сервера DHCP добавляем секцию для нашего нового компьютера:
host PXE {
hardware ethernet 00:18:f3:d0:62:06; # MAC сетевого интерфейса
fixed-address 192.0.2.7; # такой IP будет ему назначен (не обязателено)
next-server 192.0.2.6; # IP-адрес сервера TFTP
filename "pxelinux.0"; # имя файла загрузчика PXELINUX
}
Эта секция добавлена рядом с секцией "subnet 192.0.2.0 netmask 255.255.255.0 { … }", на том же уровне иерархии.
Запуск сервера TFTP
Запустим программу сервера TFTP в foreground chroot в подготовленный каталог:
# in.tftpd -L4s ~/Altlinux/PXEINSTALL
Проверить, всё ли в порядке, можно в файлах протоколов /var/log/daemons/warnings и /var/log/daemons/errors.
Если хочется увидеть, какие файлы запрашивает клиент (PXE), укажите высокий уровень протоколирования и наблюдайте лог /var/log/daemons/info. В одном окне консоли:
# in.tftpd -L4s --verbosity 10 ~/Altlinux/PXEINSTALL
В другом:
# tail -F /var/log/daemons/info
Публикация источника установки
Монтируем загрузочный CD или DVD и раздаём его содержимое по ftp, http или nfs. Пример для FTP:
# mkdir /ftp/pub/Altlinux
# mount -t iso9660 -o ro /dev/sdd /ftp/pub/Altlinux
или
# mount -t iso9660 -o loop,ro ~/Downloads/alt-N-installdvd.iso /ftp/pub/Altlinux
Загрузка компьютера
Включаем новый компьютер, вызываем его BIOS SETUP, разрешаем "LAN adapter BOOT ROM", "PXE boot" или аналогичный пункт настройки, загружаем.
В процессе загрузки видна заставка PXELINUX, затем начинается загрузка. Если FTP или HTTP требует аутентификацию, PXELINUX предложит указать источник загрузки - в текстовой форме ввода можно задать адрес сервера, путь к содержимому установочного диска, логин и пароль.
Примечания
- ↑ https://wiki.syslinux.org/wiki/index.php?title=PXELINUX
- ↑ Как вариант, дискетка или ещё что-нибудь с Etherboot.
- ↑ Уточните под свою сеть! Не пересекитесь с уже работающим DHCP-сервером!