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

Материал из ALT Linux Wiki
м Net/install» переименована в «NetInstall»: избавляемся от многоуровневости)
 
(не показано 35 промежуточных версий 16 участников)
Строка 1: Строка 1:
[[Категория:admin]]
== Сетевая установка ALT Linux. Начальные условия ==
{{викифицировать}}


== Сетевая инсталляция [[Main Page|ALT Linux]] [Server|Desktop] 4.0 или запуск ALT Linux Rescue ==
Процесс сетевой установки можно разделить на несколько стадий:
# Получение IP-адреса в сети сетевой картой, а также получение адреса TFTP-сервера.
# Загрузка PXE-загрузчика. На этом этапе происходит загрузка PXE-загрузчика по протоколу TFTP.
# Загрузка и запуск ядра ОС и начальной файловой системы. Начальная файловая система подгружается в ОЗУ. Она содержит необходимые утилиты, скрипты и драйвера для получения доступа к корневой файловой системе.
# Получение IP-адреса ядром ОС по протоколу DHCP.
# Монтирование корневой файловой системы (может происходить по протоколу NFS или путем предварительной выгрузки в ОЗУ по протоколам FTP и HTTP).
# Запуск установки ОС.


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


Требуется: сетевая карта с поддержкой [[net/pxe|PXE]]
Не обязательно размещать установочные пакеты на сервер, на котором размещены службы DHCP и TFTP. Сервер DHCP определяет файл загрузчика и сервер TFTP, с которого клиент может загрузить загрузчик, установочное ядро и начальные файлы виртуального диска. Файлы загрузчика, которые размещаются на сервере TFTP, могут дополнительно определять сервер, с которого клиент может получить установочные пакеты.
''# apt-get install [[dhcp|dhcp]]-server [[boot/syslinux|syslinux]] [[tftp|tftp]]-server vsftpd''


/etc/dhcp/dhcp.conf
{{Note|Настроить сервер сетевых установок можно также в модуле [[ЦУС]] [[Alterator-netinst|Сервер сетевых установок]]. Но в настоящий момент модуль [[Alterator-netinst|Сервер сетевых установок]] не позволяет настроить установку в EFI-режиме для PXE-установки.}}
<pre># See dhcpd.conf(5) for further configuration


ddns-update-style none;
== Сетевая инсталляция ALT 10.x ==


allow booting;
=== Настройка DHCP ===
allow bootp;
# Установить 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-сервера, с которого клиент может загрузить файл загрузчика.


option subnet-mask 255.255.255.0;
{{Note|Параметр ''next-server'' следует указывать даже если для размещения служб DHCP и TFTP используется один и тот же сервер.}}
option domain-name "mydomain.ru";
option domain-name-servers 192.168.0.1;
option routers 192.168.0.1;


option space pxelinux;
=== Настройка TFTP ===
option pxelinux.magic      code 208 = string;
Trivial File Transfer Protocol (TFTP) используется для загрузки загрузочного образа на клиентскую машину.
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;


site-option-space "pxelinux";
# Установить TFTP-сервер и пакет пакет {{pkg|syslinux}}:
option pxelinux.magic f1:00:74:7e;
#: <syntaxhighlight lang="bash"># apt-get install tftp-server-xinetd syslinux</syntaxhighlight>
if exists dhcp-parameter-request-list {
#:Пакет {{pkg|syslinux}} предоставляет загрузчик pxelinux.0, который PXE-клиенты на базе BIOS могут использовать для загрузки установочного ядра Linux (vmlinuz).
# Always send the PXELINUX options (specified in hexadecimal)
# Отредактировать файл {{path|/etc/xinetd.d/tftp}} и убедиться что включен TFTP-сервер:
option dhcp-parameter-request-list = concat(option dhcp-parameter-request-list,d0,d1,d2,d3);
#: <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
}
}


if substring (option vendor-class-identifier, 0, 9) = "PXEClient" {
menuentry $"Install NFS "'ALT Server 10.1 x86_64' --id 'nfs' {
   filename "pxelinux.0";
   echo $"Loading Linux vmlinuz ..."
} else if substring (option vendor-class-identifier, 0, 9) = "Etherboot"
  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 ..."
   filename "vmlinuz";
  initrd /boot/initrd.img
# option vendor-encapsulated-options
}
}


################ subnet ##################################################
menuentry $"Memory Test (may not work with Secure Boot)" --id 'memtest' {
    linux /boot/memtest.efi
}
</syntaxhighlight>


subnet 192.168.0.0 netmask 255.255.255.0
Где:
{
*''default''— загрузочная запись по умолчанию указывает на метку ftp;
        range 192.168.0.32 192.168.0.63;
*''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]].


group {
Затем в файл конфигурации загрузчика к одному из пунктов загрузки дописать параметр загрузки ai (без значения) и параметр curl с указанием каталога с установочными файлами (каталог с установочными файлами может находиться как на этом же сервере, так и на другом сервере). В этом же файле можно также установить время ожидания и указать пункт меню, загружаемый по умолчанию.
 
Пример для режима Legacy (файл {{path|/var/lib/tftpboot/pxelinux.cfg/default}})
<syntaxhighlight lang="cfg">
timeout 120
default nfs


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


option pxelinux.configfile "default";
Пример для UEFI (файл {{path|/var/lib/tftpboot/grub.cfg}}):
option pxelinux.pathprefix "/pxelinux.cfg/";
#option pxelinux.reboottime 30;


host work
<syntaxhighlight lang="cfg">
{
set timeout=120
hardware ethernet 00:19:00:00:00:00;
set default=nfs
        #filename "pxelinux.0";
}


host vmware
menuentry $"Install NFS "'ALT Server 10.1 x86_64' --id 'nfs' {
{
  echo $"Loading Linux vmlinuz ..."
hardware ethernet 00:0c:29:00:00:00;
  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/
        #filename "pxelinux.0";
  echo $"Loading initial ramdisk ..."
}
  initrd /boot/initrd.img
}</pre>
}
</syntaxhighlight>


''# cd /var/lib/tftpboot''
=== Загрузка компьютера ===
''# cp /usr/lib/syslinux/pxelinux.0 .''
Включаем новый компьютер, вызываем его BIOS SETUP, разрешаем "LAN adapter BOOT ROM", "PXE boot" или аналогичный пункт настройки, загружаем.
''# cp -a /media/cdrom/isolinux .''
''# mv isolinux altlinux''
я переименовал isolinux в altlinux и isolinux/alt0/full.cz
переименовал в server.cz или desktop.cz)


Моё содержимое /var/lib/tftpboot
В процессе загрузки видна заставка PXELINUX, затем начинается загрузка. Если указано несколько вариантов загрузки, будет предложен выбор:
<pre>/var/lib/tftpboot/pxelinux.cfg
/var/lib/tftpboot/pxelinux.cfg/default -> altlinux.cfg
/var/lib/tftpboot/pxelinux.cfg/altlinux.msg
/var/lib/tftpboot/pxelinux.cfg/altlinux.cfg
/var/lib/tftpboot/pxelinux.cfg/suse.cfg
/var/lib/tftpboot/pxelinux.cfg/suse.msg
/var/lib/tftpboot/altlinux
/var/lib/tftpboot/altlinux/en.hlp
/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
[[Файл:Netinstall_uefi.png|Сетевая установка в режиме UEFI]]
<pre>default harddisk
implicit        0
display        altlinux.msg
prompt          1
#timeout        100


label desktop
== Сетевая инсталляция ALT Linux 9.0 ==
  kernel ../altlinux/alt0/vmlinuz
Требуется: сетевая карта с поддержкой PXE<ref>Как вариант, дискетка или ещё что-нибудь с Etherboot.</ref>.
  append initrd=../altlinux/alt0/desktop.cz lang=ru_RU stagename=altinst showopts ramdisk_size=65536
Установить следующие пакеты:
automatic=method:ftp,network:dhcp,server:192.168.0.1,directory:/pub/ALTLinux/Desktop/4.0b
<syntaxhighlight lang="bash"># apt-get install dhcp-server syslinux tftp-server vsftpd tftp-server-xinetd apache2-base</syntaxhighlight>
# xdriver=amd
# net=8139too
Настройка 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";
    }
}


label server
subnet 192.168.1.0 netmask 255.255.255.0 {
  kernel ../altlinux/alt0/vmlinuz
    default-lease-time 3600;
  append initrd=../altlinux/alt0/server.cz lang=ru_RU stagename=altinst showopts ramdisk_size=65536
    max-lease-time 3600;
automatic=method:ftp,network:dhcp,server:192.168.0.1,directory:/pub/ALTLinux/Server/4.0.1/install
    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 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
label ftp
   kernel ../altlinux/alt0/vmlinuz-4.0.2-rescue
   kernel syslinux/alt0/vmlinuz
   append initrd=../altlinux/alt0/initrd-4.0.2-rescue net=8139too ramdisk_size=65536 live fastboot stagename=rescue showopts
  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
automatic=method:ftp,network:dhcp,server:192.168.0.1,directory:/pub/ALTLinux/Desktop/4.0.2
 
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
label memtest
   kernel ../altlinux/memtest
   linux memtest.bin
</syntaxhighlight>


label harddisk
Содержимое файла {{path|/var/lib/tftpboot/pxelinux.cfg/default.msg}}:
  localboot 0x80</pre>
<syntaxhighlight lang="cfg">
Type one of:


automatic=… можно убрать и ввести все данные в процессе инсталляции.
ftp  - install from ftp archive
method=ftp можно заменить на http, nfs
http  - install from http site
directory:/pub/ALTLinux/Server/4.0.1/install надо подмонтировть на серваке
nfs  - install from nfs directory
(наприм: mount -o loop altlinux-server.iso /var/ftp/pub/ALTLinux/Server/4.0.1/install)
local - boot from 1st HDD
Можно добавить к ''append initrd'' опции с необходимыми параметрами.
mem  - run memtest
''# xdriver=amd''
</syntaxhighlight>
''# net=8139too''
=== Настройка установки в 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/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>


/var/lib/tftpboot/pxelinux.cfg/altlinux.msg
=== Настройка HTTP ===
<pre>^L
Для 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>


                    Welcome to ALTLinux 4.0 network installation
== Сетевая установка ALT Linux 7.0 ==
=== Минимально необходимые ручные настройки для однократной установки ===
Обычно в сети уже имеется сервер DHCP.
Особенности реализации:
*вносятся изменения в уже имеющийся сервер DHCP (ISC или совместимый по формату конфигов) — в ОС «Альт» пакет {{pkg|dhcp-server}};
*сервер TFTP выполняется в режиме программы, но не демона — используем пакет tftpd;
*в качестве источника установки используется один из имеющихся серверов (демонов): FTP, HTTP или NFS.
=== Подготовка загрузчика ===
Пусть корень сервера TFTP будет {{path|~/Altlinux/PXEINSTALL}}.
#Создаём каталоги для сервера TFTP: {{cmd|mkdir -p ~/Altlinux/PXEINSTALL/pxelinux.cfg ~/Altlinux/PXEINSTALL/alt0}}
#Копируем загрузчик из пакета syslinux: {{cmd|cp /usr/lib/syslinux/pxelinux.0 ~/Altlinux/PXEINSTALL}}
#Создаём файл конфигурации загрузчика — умолчание для всех компьютеров
#:(Примечание: Размер виртуального диска в "append ... ramdisk_size=" определяется размером файла "altinst" — если места не хватит, pxelinux.0 будет бесконечно спрашивать источник загрузки.
#:<syntaxhighlight lang="cfg">
echo "
default local
timeout 120
prompt 1
display pxelinux.cfg/altlinux.msg


label local
localboot 0


#install source: FTP
label ftp
kernel alt0/vmlinuz
append initrd=alt0/full.cz live fastboot showopts automatic=method:ftp,network:dhcp,server:192.0.2.2,directory:/pub/ALTLinux/ stagename=altinst ramdisk_size=45000


^0fTo start the installation enter 'server' and press <return>.^07
#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


Available boot options:
#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:


  desktop   - Installation Desktop
ftp   - install from ftp archive
  server    - Installation Server
http - install from http site
  noacpi    - Installation Server - ACPI Disabled
nfs   - install from nfs directory
# failsafe - Installation - Safe Settings
local - boot from 1st HDD
   live      - Run Live System
" > ~/Altlinux/PXEINSTALL/pxelinux.cfg/altlinux.msg
  rescue    - Rescue System
</syntaxhighlight>
  memtest  - Memory Test
  harddisk  - Boot from Harddisk
  work      - Boot test image</pre>


На сетевухе включаем загрузку по PXE и правим mac address в dhcp.conf
=== Подготовка сервера DHCP (BOOTP) ===
''# service dhcpd reload''
В файл конфигурации сервера 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}}.


включайте персоналку, а CDюк на Горбушку :)
Если хочется увидеть, какие файлы запрашивает клиент (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 />


* [http://lists.altlinux.ru/pipermail/sarlug/2007-October/004835.html]
== Ссылки ==
* [http://lists.altlinux.ru/pipermail/sarlug/2007-October/004835.html]
* [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 Сетевая загрузка тонкого клиента ]
* [[Propagator/nfsroot]]
* [[netboot]]
* [[Installer/common/propagator]]
* [[diskless/drbl]]
* [[diskless/drbl]]
{{Category navigation|title=Системному администратору|category=Admin|sortkey={{SUBPAGENAME}}}}
{{Category navigation|title=HOWTO|category=HOWTO|sortkey={{SUBPAGENAME}}}}

Текущая версия от 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-сервером!

Ссылки