NetInstall: различия между версиями

Материал из ALT Linux Wiki
(→‎Публикация источника установки: mount -o loop точно не нужен для реального устройства (/dev/sdd))
 
(не показано 17 промежуточных версий 3 участников)
Строка 1: Строка 1:
= Сетевая установка ALT Linux =
== Сетевая установка ALT Linux. Начальные условия ==


Требуются:  
Процесс сетевой установки можно разделить на несколько стадий:
* на новом компьютере - сетевой интерфейс с поддержкой PXE;
# Получение 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 Linux 7.0 ==
== Сетевая инсталляция ALT 10.x ==
===Минимально необходимые ручные настройки для однократной установки.===
Обычно в сети уже имеется сервер DHCP.
Особенности реализации:
* вносятся изменения в уже имеющийся сервер DHCP (ISC или совместимый по формату конфигов) — в Альтлинуксе пакет dhcp-server;
* сервер TFTP выполняется в режиме программы, но не демона — используем пакет tftpd;
* в качестве источника установки используется один из имеющихся серверов (демонов): FTP, HTTP или NFS.


==== Подготовка загрузчика ====
=== Настройка DHCP ===
Пусть корень сервера TFTP будет ~/Altlinux/PXEINSTALL.
# Установить 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";
}


<pre># Создаём каталоги для сервера TFTP.
subnet 192.168.0.0 netmask 255.255.255.0 {
mkdir -p ~/Altlinux/PXEINSTALL/pxelinux.cfg ~/Altlinux/PXEINSTALL/alt0
        # Указание используемого 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>


# Копируем загрузчик из пакета syslinux
В этом примере настраивается пул общедоступных IP-адресов в диапазоне от 192.168.0.190 до 192.168.0.200 в подсети 192.168.0.0/24. Любая система в подсети, загружаемая по PXE, использует загрузчик, указанный в параметре ''filename''. Для клиентов на базе UEFI используется файл загрузчика shimx64.efi, для клиентов на базе BIOS —  файл pxelinux.0.
cp /usr/lib/syslinux/pxelinux.0 ~/Altlinux/PXEINSTALL


# Создаём файл конфигурации загрузчика -- умолчание для всех компьютеров
{{Note|Архитектура системы клиента DHCP<ref>https://wiki.syslinux.org/wiki/index.php?title=PXELINUX</ref>:
# Примечание. Размер виртуального диска в "append ... ramdisk_size=" определяется размером файла "altinst",
*06 (EFI IA32) иногда используется некоторыми поставщиками для устаревшей (CSM) загрузки компьютеров x64;
# если места не хватит, pxelinux.0 будет бесконечно спрашивать источник загрузки.
*07 (EFI BC) иногда используется некоторыми поставщиками для загрузки EFI x64.}}
echo "
default local
timeout 120
prompt 1
display pxelinux.cfg/altlinux.msg


label local
Параметр ''next-server'' указывает IP-адрес TFTP-сервера, с которого клиент может загрузить файл загрузчика.
localboot 0


#install source: FTP
{{Note|Параметр ''next-server'' следует указывать даже если для размещения служб DHCP и TFTP используется один и тот же сервер.}}
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
=== Настройка TFTP ===
label http
Trivial File Transfer Protocol (TFTP) используется для загрузки загрузочного образа на клиентскую машину.
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
# Установить TFTP-сервер и пакет пакет {{pkg|syslinux}}:
label nfs
#: <syntaxhighlight lang="bash"># apt-get install tftp-server-xinetd syslinux</syntaxhighlight>
kernel alt0/vmlinuz
#:Пакет {{pkg|syslinux}} предоставляет загрузчик pxelinux.0, который PXE-клиенты на базе BIOS могут использовать для загрузки установочного ядра Linux (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
# Отредактировать файл {{path|/etc/xinetd.d/tftp}} и убедиться что включен TFTP-сервер:
" > ~/Altlinux/PXEINSTALL/pxelinux.cfg/default
#: <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>


#Если известен адрес MAC сетевой карты, можно сделать копию или hardlink файла конфигурации для этого адреса MAC.
==== Публикация источника установки ====
#Нельзя делать simlink из-за того, что in.tftpd с опцией -s отказывается ресолвить симлинки. Пример:
Загрузить ISO-образ и переместить его на PXE-сервер.
ln default ~/Altlinux/PXEINSTALL/pxelinux.cfg/01-00-18-f3-d0-62-06


# Создаём файл с подсказкой о выборе загрузки
Смонтировать ISO-образ:
echo "
<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>


Network install Altlinux 7.0.4
==== Настройка установки в Legacy ====
Type one of:
Создать подкаталог для хранения файлов загрузочного образа в /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>


ftp  - install from ftp archive
Создать файл конфигурации загрузчика по умолчанию {{path|/var/lib/tftpboot/pxelinux.cfg/default}} и файл {{path|/var/lib/tftpboot/pxelinux.cfg/default.msg}}
http  - install from http site
nfs  - install from nfs directory
local - boot from 1st HDD


" > ~/Altlinux/PXEINSTALL/pxelinux.cfg/altlinux.msg</pre>
{{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>}}


==== Подготовка сервера DHCP (BOOTP) ====
Содержимое файла {{path|/var/lib/tftpboot/pxelinux.cfg/default}}:
В файл конфигурации сервера DHCP добавляем секцию для нашего нового компьютера:
<syntaxhighlight lang="cfg">
timeout 120
prompt 1
default local
display pxelinux.cfg/default.msg


<pre>host PXE {
label local
hardware ethernet 00:18:f3:d0:62:06; # MAC сетевого интерфейса
  localboot -2
fixed-address 192.0.2.7;            # такой IP будет ему назначен (не обязателено)
next-server 192.0.2.6;              # Адрес IP сервера TFTP
filename "pxelinux.0";              # имя файла загрузчика PXELINUX
}</pre>


(Эта секция добавлена рядом  с секцией "subnet 192.0.2.0 netmask 255.255.255.0 { … }", на том же уровне иерархии.)
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


==== Запуск сервера TFTP ====
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


Запустим программу сервера TFTP в foreground chroot в подготовленный каталог:
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).


sudo in.tftpd -L4s ~/Altlinux/PXEINSTALL
Содержимое файла {{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>


Проверить, всё ли в порядке, можно в файлах протоколов /var/log/daemons/warnings и /var/log/daemons/errors.
==== Настройка установки в 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>


Если хочется увидеть, какие файлы запрашивает клиент (PXE), укажите высокий уровень протоколирования и наблюдайте лог /var/log/daemons/info.
Создать файл конфигурации загрузчика по умолчанию grub.cfg в {{path|/var/lib/tftpboot}}.  
В одном окне консоли:
sudo in.tftpd -L4s --verbosity 10 ~/Altlinux/PXEINSTALL
В другом:
sudo tail -F /var/log/daemons/info


==== Публикация источника установки ====
{{note|Можно взять файл с диска:
Монтируем загрузочный CD или DVD и раздаём его содержимое по ftp, http или nfs
<syntaxhighlight lang="bash"># cp /srv/public/netinst/mnt/boot/grub/grub.cfg /var/lib/tftpboot/
Пример для FTP:
# chmod 644 /var/lib/tftpboot/grub.cfg
sudo mkdir /ftp/pub/Altlinux
</syntaxhighlight>}}
sudo mount -t iso9660 -o ro /dev/sdd /ftp/pub/Altlinux


или
Пример файла {{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
}


sudo mount -t iso9660 -o loop,ro ~/Downloads/alt-N-installdvd.iso /ftp/pub/Altlinux
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>


Включаем новый компьютер, вызываем его BIOS SETUP, разрешаем "LAN adapter BOOT ROM", "PXE boot" или аналогичный пункт настройки, загружаем.
Где:
*''default''— загрузочная запись по умолчанию указывает на метку ftp;
*''timeout''— загружает клиент, используя загрузочную запись по умолчанию, после таймаута в 120 секунд;
*''linux''— определяет файла ядра (путь до ядра ОС относительно пути, указанного в конфигурации TFTP) и параметры, которые должны быть добавлены при загрузке ядра, например расположение установочных пакетов и способы доступа к этим пакетам;
*''initrd''— путь к корневой файловой системе для начальной загрузки (относительно пути, указанного в конфигурации TFTP).


В процессе загрузки видна заставка PXELINUX, затем начинается загрузка. Если FTP или HTTP требует аутентификацию, PXELINUX предложит указать источник загрузки - в текстовой форме ввода можно задать адрес сервера, путь к содержимому установочного диска, логин и пароль.
=== Настройка 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>


== Сетевая инсталляция ALT Linux {Server,Desktop} 4.0 или запуск ALT Linux Rescue ==
=== Настройка 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>


Требуется: сетевая карта с поддержкой PXE<ref>Как вариант, дискетка или ещё что-нибудь с Etherboot.</ref>.
=== Автоматическая установка ===
Для включения режима автоматической установки необходимо подготовить файлы, описанные в статье [[Autoinstall]].


# apt-get install dhcp-server syslinux tftp-server vsftpd anonftp
Затем в файл конфигурации загрузчика к одному из пунктов загрузки дописать параметр загрузки ai (без значения) и параметр curl с указанием каталога с установочными файлами (каталог с установочными файлами может находиться как на этом же сервере, так и на другом сервере). В этом же файле можно также установить время ожидания и указать пункт меню, загружаемый по умолчанию.
# chkconfig xinetd on
 
# chkconfig vsftpd on
Пример для режима Legacy (файл {{path|/var/lib/tftpboot/pxelinux.cfg/default}})
# sed -i 's,only_from = 127.0.0.1,only_from = 192.168.0.0/24,' /etc/xinetd.conf
<syntaxhighlight lang="cfg">
timeout 120
default nfs


/etc/dhcp/dhcpd.conf<ref>Уточните под свою сеть!  Не пересекитесь с уже работающим DHCP-сервером!</ref>:
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>


<pre># See dhcpd.conf(5) for further configuration
Пример для UEFI (файл {{path|/var/lib/tftpboot/grub.cfg}}):


ddns-update-style none;
<syntaxhighlight lang="cfg">
set timeout=120
set default=nfs


allow booting;
menuentry $"Install NFS "'ALT Server 10.1 x86_64' --id 'nfs' {
allow bootp;
  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>


option subnet-mask 255.255.255.0;
=== Загрузка компьютера ===
option domain-name "mydomain.ru";
Включаем новый компьютер, вызываем его BIOS SETUP, разрешаем "LAN adapter BOOT ROM", "PXE boot" или аналогичный пункт настройки, загружаем.
option domain-name-servers 192.168.0.1;
option routers 192.168.0.1;


option space pxelinux;
В процессе загрузки видна заставка PXELINUX, затем начинается загрузка. Если указано несколько вариантов загрузки, будет предложен выбор:
option pxelinux.magic      code 208 = string;
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;


site-option-space "pxelinux";
[[Файл:Netinstall_uefi.png|Сетевая установка в режиме UEFI]]
option pxelinux.magic f1:00:74:7e;
if exists dhcp-parameter-request-list {
# Always send the PXELINUX options (specified in hexadecimal)
option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list,d0,d1,d2,d3);
}


if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
== Сетевая инсталляция ALT Linux 9.0 ==
  filename "pxelinux.0";
Требуется: сетевая карта с поддержкой PXE<ref>Как вариант, дискетка или ещё что-нибудь с Etherboot.</ref>.
} else if substring (option vendor-class-identifier, 0, 9) = "Etherboot"
Установить следующие пакеты:
{
<syntaxhighlight lang="bash"># apt-get install dhcp-server syslinux tftp-server vsftpd tftp-server-xinetd apache2-base</syntaxhighlight>
  filename "vmlinuz";
# option vendor-encapsulated-options
Настройка 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 ##################################################
subnet 192.168.1.0 netmask 255.255.255.0 {
 
    default-lease-time 3600;
subnet 192.168.0.0 netmask 255.255.255.0
    max-lease-time 3600;
{
    range 192.168.1.100 192.168.1.200;
        range 192.168.0.32 192.168.0.63;
}
}
</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


group {
label local
  localboot 0


        next-server 192.168.0.1;
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


option pxelinux.configfile "default";
label memtest
option pxelinux.pathprefix "/pxelinux.cfg/";
  linux memtest.bin
#option pxelinux.reboottime 30;
</syntaxhighlight>


host work
Содержимое файла {{path|/var/lib/tftpboot/pxelinux.cfg/default.msg}}:
{
<syntaxhighlight lang="cfg">
hardware ethernet 00:19:00:00:00:00;
Type one of:
        #filename "pxelinux.0";
}


host vmware
ftp  - install from ftp archive
{
http  - install from http site
hardware ethernet 00:0c:29:00:00:00;
nfs  - install from nfs directory
        #filename "pxelinux.0";
local - boot from 1st HDD
}
mem  - run memtest
}</pre>
</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>


<pre>
Получить файлы shimx64.efi и grubx64.efi:
# cd /var/lib/tftpboot
<syntaxhighlight lang="bash">
# cp /usr/lib/syslinux/pxelinux.0 .
# cp /usr/lib64/efi/shimx64.efi /var/lib/tftpboot
# cp -a /media/cdrom/syslinux altlinux
# cp /usr/lib64/efi/grubx64.efi /var/lib/tftpboot
# mv altlinux/alt0/full.cz altlinux/alt0/desktop.cz
</syntaxhighlight>
# mkdir pxelinux.cfg
=== Настройка TFTP ===
# touch pxelinux.cfg/altlinux.cfg
Отредактировать файл {{path|/etc/xinetd.d/tftp}} и убедиться что включен TFTP-сервер:
# ln -s altlinux.cfg pxelinux.cfg/default
<syntaxhighlight lang="text">
</pre>
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>


Содержимое /var/lib/tftpboot
=== Настройка NFS ===
<pre>/var/lib/tftpboot/pxelinux.cfg
В файле {{path|/etc/exports}} должна быть следующая строчка:
/var/lib/tftpboot/pxelinux.cfg/default -> altlinux.cfg
<syntaxhighlight lang="text">
/var/lib/tftpboot/pxelinux.cfg/altlinux.msg
/srv/public -ro,insecure,no_subtree_check,fsid=1,crossmnt *
/var/lib/tftpboot/pxelinux.cfg/altlinux.cfg
</syntaxhighlight>
/var/lib/tftpboot/pxelinux.cfg/suse.cfg
Экспорт каталогов:
/var/lib/tftpboot/pxelinux.cfg/suse.msg
<syntaxhighlight lang="bash">
/var/lib/tftpboot/altlinux
# exportfs -r
/var/lib/tftpboot/altlinux/en.hlp
</syntaxhighlight>
/var/lib/tftpboot/altlinux/back.jpg
/var/lib/tftpboot/altlinux/panim_a.jpg
/var/lib/tftpboot/altlinux/lang
/var/lib/tftpboot/altlinux/memtest
/var/lib/tftpboot/altlinux/bootlogo
/var/lib/tftpboot/altlinux/text4c.pcx
/var/lib/tftpboot/altlinux/text3.pcx
/var/lib/tftpboot/altlinux/text1.pcx
/var/lib/tftpboot/altlinux/init
/var/lib/tftpboot/altlinux/pback.jpg
/var/lib/tftpboot/altlinux/ru.tr
/var/lib/tftpboot/altlinux/welcome.jpg
/var/lib/tftpboot/altlinux/text4b.pcx
/var/lib/tftpboot/altlinux/uk.hlp
/var/lib/tftpboot/altlinux/boot.cat
/var/lib/tftpboot/altlinux/languages
/var/lib/tftpboot/altlinux/timer_a.jpg
/var/lib/tftpboot/altlinux/panim.jpg
/var/lib/tftpboot/altlinux/uk.tr
/var/lib/tftpboot/altlinux/ru.hlp
/var/lib/tftpboot/altlinux/isolinux.cfg
/var/lib/tftpboot/altlinux/isolinux.bin
/var/lib/tftpboot/altlinux/en.tr
/var/lib/tftpboot/altlinux/text4a.pcx
/var/lib/tftpboot/altlinux/16x16.fnt
/var/lib/tftpboot/altlinux/text2b.pcx
/var/lib/tftpboot/altlinux/phead.jpg
/var/lib/tftpboot/altlinux/pabout.txt
/var/lib/tftpboot/altlinux/gfxboot.cfg
/var/lib/tftpboot/altlinux/text2a.pcx
/var/lib/tftpboot/altlinux/text2c.pcx
/var/lib/tftpboot/altlinux/kroete.dat
/var/lib/tftpboot/altlinux/alt0
/var/lib/tftpboot/altlinux/alt0/initrd-4.0.2-rescue
/var/lib/tftpboot/altlinux/alt0/vmlinuz-4.0.2-rescue
/var/lib/tftpboot/altlinux/alt0/desktop.cz
/var/lib/tftpboot/altlinux/alt0/altlinux
/var/lib/tftpboot/altlinux/alt0/server.cz
/var/lib/tftpboot/altlinux/alt0/vmlinuz
/var/lib/tftpboot/altlinux/alt0/altlinux.img
/var/lib/tftpboot/pxelinux.0</pre>


/var/lib/tftpboot/pxelinux.cfg/altlinux.cfg
=== Настройка HTTP ===
<pre>default harddisk
Для apache создать конфигурационный файл {{path|/etc/httpd2/conf/sites-available/netinst.conf}} со следующим содержимым:
implicit        0
<syntaxhighlight lang="apache">
display        altlinux.msg
<VirtualHost *:80>
prompt          1
  DocumentRoot /srv/public/netinst/mnt/
#timeout        100


label desktop
   <Directory /srv/public/netinst/mnt/>
   kernel ../altlinux/alt0/vmlinuz
    Options +FollowSymLinks -Indexes
   append initrd=../altlinux/alt0/desktop.cz lang=ru_RU stagename=altinst showopts ramdisk_size=65536
    AllowOverride None
automatic=method:ftp,network:dhcp,server:192.168.0.1,directory:/pub/ALTLinux/Desktop/4.0b
    Require all granted
# xdriver=amd
   </Directory>
# net=8139too
</VirtualHost>
</syntaxhighlight>
Применить изменения:
<syntaxhighlight lang="bash">
# a2dissite 000-default
# a2dissite 000-default_https
# a2ensite netinst
# systemctl restart httpd2
</syntaxhighlight>


label server
== Сетевая установка ALT Linux 7.0 ==
  kernel ../altlinux/alt0/vmlinuz
=== Минимально необходимые ручные настройки для однократной установки ===
  append initrd=../altlinux/alt0/server.cz lang=ru_RU stagename=altinst showopts ramdisk_size=65536
Обычно в сети уже имеется сервер DHCP.
automatic=method:ftp,network:dhcp,server:192.168.0.1,directory:/pub/ALTLinux/Server/4.0.1/install
Особенности реализации:
*вносятся изменения в уже имеющийся сервер 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 server-noapic
label local
  kernel ../altlinux/alt0/vmlinuz
localboot 0
  append initrd=../altlinux/alt0/server.cz nolapic noapic acpi=off stagename=altinst ramdisk_size=65536
automatic=method:ftp,network:dhcp,server:192.168.0.1,directory:/pub/ALTLinux/Server/4.0.1/install
# xdriver=amd


label rescue
#install source: FTP
  kernel ../altlinux/alt0/vmlinuz-4.0.2-rescue
label ftp
  append initrd=../altlinux/alt0/initrd-4.0.2-rescue net=8139too ramdisk_size=65536 live fastboot stagename=rescue showopts
kernel alt0/vmlinuz
automatic=method:ftp,network:dhcp,server:192.168.0.1,directory:/pub/ALTLinux/Desktop/4.0.2
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 memtest
#install source: HTTP
  kernel ../altlinux/memtest
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 harddisk
#install source: NFS
  localboot 0x80</pre>
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:


Для установки v12n-server пришлось увеличить ramdisk_size минимум до 76800, иначе образ не входил в память.
ftp  - install from ftp archive
automatic=… можно убрать и ввести все данные в процессе инсталляции.
http  - install from http site
method=ftp можно заменить на http, nfs
nfs   - install from nfs directory
directory:/pub/ALTLinux/Server/4.0.1/install надо подмонтировть на серваке
local - boot from 1st HDD
(наприм: mount -o loop altlinux-server.iso /var/ftp/pub/ALTLinux/Server/4.0.1/install)
" > ~/Altlinux/PXEINSTALL/pxelinux.cfg/altlinux.msg
Можно добавить к ''append initrd'' опции с необходимыми параметрами.
</syntaxhighlight>
''# xdriver=amd''
''# net=8139too''


/var/lib/tftpboot/pxelinux.cfg/altlinux.msg
=== Подготовка сервера DHCP (BOOTP) ===
<pre>
В файл конфигурации сервера 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" или аналогичный пункт настройки, загружаем.


                    Welcome to ALTLinux 4.0 network installation
В процессе загрузки видна заставка PXELINUX, затем начинается загрузка. Если FTP или HTTP требует аутентификацию, PXELINUX предложит указать источник загрузки - в текстовой форме ввода можно задать адрес сервера, путь к содержимому установочного диска, логин и пароль.


 
== Примечания ==
 
To start the installation enter 'server' and press <return>.
 
Available boot options:
 
  desktop  - Installation Desktop
  server    - Installation Server
  noacpi    - Installation Server - ACPI Disabled
# failsafe  - Installation - Safe Settings
  live      - Run Live System
  rescue    - Rescue System
  memtest  - Memory Test
  harddisk  - Boot from Harddisk
  work      - Boot test image</pre>
 
На сетевухе включаем загрузку по PXE и правим mac address в dhcp.conf
<pre>
# service dhcpd reload
# mkdir /var/ftp/cd-desktop
# mount --bind /media/cdrom /var/ftp/cd-desktop
</pre>
Так же можно запускать бездисковые станции, но надо подготовить образ операционки.
 
=== Примечания ===
<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  Сетевая загрузка тонкого клиента ]

Текущая версия от 18:46, 20 ноября 2023

Сетевая установка ALT Linux. Начальные условия

Процесс сетевой установки можно разделить на несколько стадий:

  1. Получение IP-адреса в сети сетевой картой, а также получение адреса TFTP-сервера.
  2. Загрузка PXE-загрузчика. На этом этапе происходит загрузка PXE-загрузчика по протоколу TFTP.
  3. Загрузка и запуск ядра ОС и начальной файловой системы. Начальная файловая система подгружается в ОЗУ. Она содержит необходимые утилиты, скрипты и драйвера для получения доступа к корневой файловой системе.
  4. Получение IP-адреса ядром ОС по протоколу DHCP.
  5. Монтирование корневой файловой системы (может происходить по протоколу NFS или путем предварительной выгрузки в ОЗУ по протоколам FTP и HTTP).
  6. Запуск установки ОС.

Для осуществления успешной сетевой установки требуются:

  • на новом компьютере — сетевой интерфейс с поддержкой PXE;
  • сервер DHCP с поддержкой BOOTP;
  • сервер TFTP;
  • сервер FTP (желательно с анонимным доступом), HTTP или NFS.

Не обязательно размещать установочные пакеты на сервер, на котором размещены службы DHCP и TFTP. Сервер DHCP определяет файл загрузчика и сервер TFTP, с которого клиент может загрузить загрузчик, установочное ядро и начальные файлы виртуального диска. Файлы загрузчика, которые размещаются на сервере TFTP, могут дополнительно определять сервер, с которого клиент может получить установочные пакеты.

Примечание: Настроить сервер сетевых установок можно также в модуле ЦУС Сервер сетевых установок. Но в настоящий момент модуль Сервер сетевых установок не позволяет настроить установку в EFI-режиме для PXE-установки.


Сетевая инсталляция ALT 10.x

Настройка DHCP

  1. Установить DHCP-сервер:
    # apt-get install dhcp-server
    
  2. Настроить файл конфигурации 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;
    }
    
  3. Запустить 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.

Примечание: Архитектура системы клиента DHCP[1]:
  • 06 (EFI IA32) иногда используется некоторыми поставщиками для устаревшей (CSM) загрузки компьютеров x64;
  • 07 (EFI BC) иногда используется некоторыми поставщиками для загрузки EFI x64.


Параметр next-server указывает IP-адрес TFTP-сервера, с которого клиент может загрузить файл загрузчика.

Примечание: Параметр next-server следует указывать даже если для размещения служб DHCP и TFTP используется один и тот же сервер.


Настройка TFTP

Trivial File Transfer Protocol (TFTP) используется для загрузки загрузочного образа на клиентскую машину.

  1. Установить TFTP-сервер и пакет пакет syslinux:
    # apt-get install tftp-server-xinetd syslinux
    
    Пакет syslinux предоставляет загрузчик pxelinux.0, который PXE-клиенты на базе BIOS могут использовать для загрузки установочного ядра Linux (vmlinuz).
  2. Отредактировать файл /etc/xinetd.d/tftp и убедиться что включен TFTP-сервер:
    disable = no
    
  3. Удалить или закомментировать следующую строку в файле /etc/xinetd.conf:
    only_from = 127.0.0.1
    
  4. Перезапустить сервис 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

Примечание: Можно скопировать файл конфигурации загрузчика /var/lib/tftpboot/pxelinux.cfg/default с диска:
# 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

  1. Установить FTP-сервер:
    # apt-get install vsftpd
    
  2. Отредактировать файл /etc/xinetd.d/vsftpd и убедиться что включен FTP-сервер:
    disable = no
    
  3. Перезапустить сервис xinetd:
    # systemctl restart xinetd
    
  4. Создать ссылку на /srv/public:
    # ln -s /srv/public /var/ftp
    

Настройка NFS

  1. Установить NFS-сервер:
    # apt-get install nfs-server
    
  2. Дописать в файл /etc/exports строки:
    /srv/public -ro,insecure,no_subtree_check,fsid=1 *
    /srv/public/netinst/mnt -ro,insecure,no_subtree_check,fsid=2 *
    
  3. Экспортировать каталоги:
    # exportfs -r
    
  4. Разрешить rpcbind прослушивать входящие соединения из сети:
    # control rpcbind server
    
  5. Запустить 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, затем начинается загрузка. Если указано несколько вариантов загрузки, будет предложен выбор:

Сетевая установка в режиме UEFI

Сетевая инсталляция 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.

  1. Создаём каталоги для сервера TFTP: mkdir -p ~/Altlinux/PXEINSTALL/pxelinux.cfg ~/Altlinux/PXEINSTALL/alt0
  2. Копируем загрузчик из пакета syslinux: cp /usr/lib/syslinux/pxelinux.0 ~/Altlinux/PXEINSTALL
  3. Создаём файл конфигурации загрузчика — умолчание для всех компьютеров
    (Примечание: Размер виртуального диска в "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
    
  4. Если известен адрес MAC сетевой карты, можно сделать копию или hardlink файла конфигурации для этого адреса MAC.
  5. Нельзя делать simlink из-за того, что in.tftpd с опцией -s отказывается ресолвить симлинки.
    Пример: ln default ~/Altlinux/PXEINSTALL/pxelinux.cfg/01-00-18-f3-d0-62-06
  6. Создаём файл с подсказкой о выборе загрузки
    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 предложит указать источник загрузки - в текстовой форме ввода можно задать адрес сервера, путь к содержимому установочного диска, логин и пароль.

Примечания

  1. https://wiki.syslinux.org/wiki/index.php?title=PXELINUX
  2. Как вариант, дискетка или ещё что-нибудь с Etherboot.
  3. Уточните под свою сеть! Не пересекитесь с уже работающим DHCP-сервером!

Ссылки