NetInstall: различия между версиями
(→Публикация источника установки: mount -o loop точно не нужен для реального устройства (/dev/sdd)) |
|||
(не показано 17 промежуточных версий 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 == | ||
=== | === Настройка 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) используется для загрузки загрузочного образа на клиентскую машину. | |||
#install | # Установить 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 | |||
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 | |||
</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" или аналогичный пункт настройки, загружаем. | |||
В процессе загрузки видна заставка PXELINUX, затем начинается загрузка. Если указано несколько вариантов загрузки, будет предложен выбор: | |||
[[Файл:Netinstall_uefi.png|Сетевая установка в режиме UEFI]] | |||
if substring (option vendor-class-identifier, 0, 9) = "PXEClient" { | == Сетевая инсталляция ALT Linux 9.0 == | ||
Требуется: сетевая карта с поддержкой PXE<ref>Как вариант, дискетка или ещё что-нибудь с Etherboot.</ref>. | |||
} else if | Установить следующие пакеты: | ||
{ | <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; | |||
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; | |||
subnet 192.168. | max-lease-time 3600; | ||
range 192.168.1.100 192.168.1.200; | |||
} | } | ||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash"> | |||
# 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 | |||
</syntaxhighlight> | |||
=== Настройка установки в Legacy === | |||
Содержимое файла {{path|/var/lib/tftpboot/pxelinux.cfg/default}}: | |||
<syntaxhighlight lang="cfg"> | |||
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 | |||
</syntaxhighlight> | |||
Содержимое файла {{path|/var/lib/tftpboot/pxelinux.cfg/default.msg}}: | |||
<syntaxhighlight lang="cfg"> | |||
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 | |||
</syntaxhighlight> | |||
=== Настройка установки в UEFI === | |||
Содержимое файла {{path|/var/lib/tftpboot/grub.cfg}}: | |||
<syntaxhighlight lang="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 | |||
} | |||
</syntaxhighlight> | |||
< | Получить файлы shimx64.efi и grubx64.efi: | ||
# | <syntaxhighlight lang="bash"> | ||
# cp /usr/ | # cp /usr/lib64/efi/shimx64.efi /var/lib/tftpboot | ||
# cp /usr/lib64/efi/grubx64.efi /var/lib/tftpboot | |||
</syntaxhighlight> | |||
# | === Настройка TFTP === | ||
Отредактировать файл {{path|/etc/xinetd.d/tftp}} и убедиться что включен TFTP-сервер: | |||
# | <syntaxhighlight lang="text"> | ||
</ | disable = no | ||
</syntaxhighlight> | |||
Перезапустить сервис: | |||
<syntaxhighlight lang="bash"> | |||
# systemctl restart xinetd | |||
</syntaxhighlight> | |||
=== Настройка FTP === | |||
Отредактировать файл {{path|/etc/xinetd.d/vsftpd}} и убедиться что включен FTP-сервер: | |||
<syntaxhighlight lang="text"> | |||
disable = no | |||
</syntaxhighlight> | |||
Перезапустить сервис: | |||
<syntaxhighlight lang="bash"> | |||
# systemctl restart xinetd | |||
</syntaxhighlight> | |||
=== Настройка NFS === | |||
< | В файле {{path|/etc/exports}} должна быть следующая строчка: | ||
/ | <syntaxhighlight lang="text"> | ||
/ | /srv/public -ro,insecure,no_subtree_check,fsid=1,crossmnt * | ||
</syntaxhighlight> | |||
Экспорт каталогов: | |||
<syntaxhighlight lang="bash"> | |||
# exportfs -r | |||
</syntaxhighlight> | |||
/ | === Настройка HTTP === | ||
< | Для apache создать конфигурационный файл {{path|/etc/httpd2/conf/sites-available/netinst.conf}} со следующим содержимым: | ||
<syntaxhighlight lang="apache"> | |||
<VirtualHost *:80> | |||
DocumentRoot /srv/public/netinst/mnt/ | |||
<Directory /srv/public/netinst/mnt/> | |||
Options +FollowSymLinks -Indexes | |||
AllowOverride None | |||
Require all granted | |||
# | </Directory> | ||
# | </VirtualHost> | ||
</syntaxhighlight> | |||
Применить изменения: | |||
<syntaxhighlight lang="bash"> | |||
# a2dissite 000-default | |||
# a2dissite 000-default_https | |||
# a2ensite netinst | |||
# 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 | label local | ||
localboot 0 | |||
label | #install source: FTP | ||
label ftp | |||
kernel alt0/vmlinuz | |||
automatic=method:ftp,network:dhcp,server:192. | 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 | ||
label | #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 | |||
label | #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 | |||
directory | local - boot from 1st HDD | ||
" > ~/Altlinux/PXEINSTALL/pxelinux.cfg/altlinux.msg | |||
</syntaxhighlight> | |||
/var/ | === Подготовка сервера 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 Сетевая загрузка тонкого клиента ] |
Версия от 21:46, 20 ноября 2023
Сетевая установка 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
Настройка 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-сервером!