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

Материал из ALT Linux Wiki
Нет описания правки
 
(не показаны 4 промежуточные версии этого же участника)
Строка 1: Строка 1:
== Сетевая установка ALT Linux ==
== Сетевая установка ALT Linux. Начальные условия ==
Требуются:  
 
Процесс сетевой установки можно разделить на несколько стадий:
# Получение IP-адреса в сети сетевой картой, а также получение адреса TFTP-сервера.
# Загрузка PXE-загрузчика. На этом этапе происходит загрузка PXE-загрузчика по протоколу TFTP.
# Загрузка и запуск ядра ОС и начальной файловой системы. Начальная файловая система подгружается в ОЗУ. Она содержит необходимые утилиты, скрипты и драйвера для получения доступа к корневой файловой системе.
# Получение IP-адреса ядром ОС по протоколу DHCP.
# Монтирование корневой файловой системы (может происходить по протоколу NFS или путем предварительной выгрузки в ОЗУ по протоколам FTP и HTTP).
# Запуск установки ОС.
 
Для осуществления успешной сетевой установки требуются:  
* на новом компьютере — сетевой интерфейс с поддержкой PXE;
* на новом компьютере — сетевой интерфейс с поддержкой 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-установки.}}
{{Note|Настроить сервер сетевых установок можно также в модуле [[ЦУС]] [[Alterator-netinst|Сервер сетевых установок]]. Но в настоящий момент модуль [[Alterator-netinst|Сервер сетевых установок]] не позволяет настроить установку в EFI-режиме для PXE-установки.}}


=== Сетевая инсталляция ALT 10.x ===
== Сетевая инсталляция ALT 10.x ==
Требуется: сетевая карта с поддержкой PXE.
 
Установить пакет {{pkg|syslinux}}:
<syntaxhighlight lang="bash"># apt-get install syslinux</syntaxhighlight>


==== Настройка DHCP ====
=== Настройка DHCP ===
# Установить DHCP-сервер:
# Установить DHCP-сервер:
#: <syntaxhighlight lang="bash"># apt-get install dhcp-server</syntaxhighlight>
#: <syntaxhighlight lang="bash"># apt-get install dhcp-server</syntaxhighlight>
Строка 20: Строка 27:
#: <syntaxhighlight lang="ini">option arch code 93 = unsigned integer 16;
#: <syntaxhighlight lang="ini">option arch code 93 = unsigned integer 16;
if option arch = 00:06 {
if option arch = 00:06 {
     filename "bootia32.efi";
    # EFI IA32 => Grub2
     filename "shimx64.efi";
     } else if option arch = 00:07 {
     } 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";
     filename "shimx64.efi";
     } else {
     } else {
    # Intel x86PC (BIOS) => PXELinux
     filename "pxelinux.0";
     filename "pxelinux.0";
}
}
Строка 43: Строка 56:
#: <syntaxhighlight lang="bash"># systemctl enable --now dhcpd</syntaxhighlight>
#: <syntaxhighlight lang="bash"># systemctl enable --now dhcpd</syntaxhighlight>


==== Настройка TFTP ====
В этом примере настраивается пул общедоступных IP-адресов в диапазоне от 192.168.0.190 до 192.168.0.200 в подсети 192.168.0.0/24. Любая система в подсети, загружаемая по PXE, использует загрузчик, указанный в параметре ''filename''. Для клиентов на базе UEFI используется файл загрузчика shimx64.efi, для клиентов на базе BIOS —  файл pxelinux.0.
 
{{Note|Архитектура системы клиента DHCP<ref>https://wiki.syslinux.org/wiki/index.php?title=PXELINUX</ref>:
*06 (EFI IA32) иногда используется некоторыми поставщиками для устаревшей (CSM) загрузки компьютеров x64;
*07 (EFI BC) иногда используется некоторыми поставщиками для загрузки EFI x64.}}
 
Параметр ''next-server'' указывает IP-адрес TFTP-сервера, с которого клиент может загрузить файл загрузчика.
 
{{Note|Параметр ''next-server'' следует указывать даже если для размещения служб DHCP и TFTP используется один и тот же сервер.}}
 
=== Настройка TFTP ===
Trivial File Transfer Protocol (TFTP) используется для загрузки загрузочного образа на клиентскую машину.
Trivial File Transfer Protocol (TFTP) используется для загрузки загрузочного образа на клиентскую машину.


# Установить TFTP-сервер:
# Установить TFTP-сервер и пакет пакет {{pkg|syslinux}}:
#: <syntaxhighlight lang="bash"># apt-get install tftp-server-xinetd</syntaxhighlight>
#: <syntaxhighlight lang="bash"># apt-get install tftp-server-xinetd syslinux</syntaxhighlight>
#:Пакет {{pkg|syslinux}} предоставляет загрузчик pxelinux.0, который PXE-клиенты на базе BIOS могут использовать для загрузки установочного ядра Linux (vmlinuz).
# Отредактировать файл {{path|/etc/xinetd.d/tftp}} и убедиться что включен TFTP-сервер:
# Отредактировать файл {{path|/etc/xinetd.d/tftp}} и убедиться что включен TFTP-сервер:
#: <syntaxhighlight lang="ini">disable = no</syntaxhighlight>
#: <syntaxhighlight lang="ini">disable = no</syntaxhighlight>
Строка 55: Строка 79:
#: <syntaxhighlight lang="bash"># systemctl restart xinetd</syntaxhighlight>
#: <syntaxhighlight lang="bash"># systemctl restart xinetd</syntaxhighlight>


==== Публикация источника установки ====
Загрузить ISO-образ и переместить его на PXE-сервер.
Загрузить ISO-образ и переместить его на PXE-сервер.


Строка 60: Строка 85:
<syntaxhighlight lang="bash"># mkdir -p /srv/public/netinst/mnt/
<syntaxhighlight lang="bash"># mkdir -p /srv/public/netinst/mnt/
# mount -t iso9660 -o loop,ro /path/iso-file.iso /srv/public/netinst/mnt</syntaxhighlight>
# 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:
Создать подкаталог для хранения файлов загрузочного образа в /var/lib/tftpboot:
<syntaxhighlight lang="bash"># mkdir -p /var/lib/tftpboot/pxelinux.cfg</syntaxhighlight>
<syntaxhighlight lang="bash"># mkdir -p /var/lib/tftpboot/pxelinux.cfg</syntaxhighlight>
Строка 65: Строка 96:
<syntaxhighlight lang="bash"># cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/
<syntaxhighlight lang="bash"># cp /usr/lib/syslinux/pxelinux.0 /var/lib/tftpboot/
</syntaxhighlight>
</syntaxhighlight>
Скопировать каталог boot, содержащий ядро ОС и начальную файловую систему, выполнив команду:
<syntaxhighlight lang="bash"># cp -r /srv/public/netinst/mnt/boot/ /var/lib/tftpboot/</syntaxhighlight>


===== Настройка установки в Legacy =====
Создать файл конфигурации загрузчика по умолчанию {{path|/var/lib/tftpboot/pxelinux.cfg/default}} и файл {{path|/var/lib/tftpboot/pxelinux.cfg/default.msg}}
Создать файлы {{path|/var/lib/tftpboot/pxelinux.cfg/default}} и {{path|/var/lib/tftpboot/pxelinux.cfg/default.msg}}


{{note|Можно скопировать файл конфигурации загрузчика {{path|/var/lib/tftpboot/pxelinux.cfg/default}} с диска:
{{note|Можно скопировать файл конфигурации загрузчика {{path|/var/lib/tftpboot/pxelinux.cfg/default}} с диска:
Строка 77: Строка 105:


Содержимое файла {{path|/var/lib/tftpboot/pxelinux.cfg/default}}:
Содержимое файла {{path|/var/lib/tftpboot/pxelinux.cfg/default}}:
<syntaxhighlight lang="text">
<syntaxhighlight lang="cfg">
timeout 120
timeout 120
prompt 1
prompt 1
Строка 98: Строка 126:
   linux /boot/memtest.bin
   linux /boot/memtest.bin
</syntaxhighlight>
</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}}:
Содержимое файла {{path|/var/lib/tftpboot/pxelinux.cfg/default.msg}}:
<syntaxhighlight lang="text">
<syntaxhighlight lang="cfg">
Type one of:
Type one of:
ftp    - install from ftp archive
ftp    - install from ftp archive
Строка 107: Строка 143:
memtest - run memtest
memtest - run memtest
</syntaxhighlight>
</syntaxhighlight>
===== Настройка установки в UEFI =====
 
Создать конфигурационный файл grub.cfg в {{path|/var/lib/tftpboot}}.  
==== Настройка установки в 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|Можно взять файл с диска:
{{note|Можно взять файл с диска:
Строка 116: Строка 157:


Пример файла {{path|/var/lib/tftpboot/grub.cfg}}:
Пример файла {{path|/var/lib/tftpboot/grub.cfg}}:
<syntaxhighlight lang="text">
<syntaxhighlight lang="cfg">
set timeout=120
set timeout=120
 
set default=ftp
menuentry $"Install FTP "'ALT Server 10.1 x86_64' {
menuentry $"Install FTP "'ALT Server 10.1 x86_64'--id 'ftp' {
   echo $"Loading Linux vmlinuz ..."
   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  
   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  
Строка 126: Строка 167:
}
}


menuentry $"Install NFS "'ALT Server 10.1 x86_64' {
menuentry $"Install NFS "'ALT Server 10.1 x86_64' --id 'nfs' {
   echo $"Loading Linux vmlinuz ..."
   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  
   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  
Строка 138: Строка 179:
</syntaxhighlight>
</syntaxhighlight>


Получить файлы shimx64.efi и grubx64.efi:
Где:
<syntaxhighlight lang="bash"># cp /usr/lib64/efi/shimx64.efi /var/lib/tftpboot
*''default''— загрузочная запись по умолчанию указывает на метку ftp;
# cp /usr/lib64/efi/grubx64.efi /var/lib/tftpboot</syntaxhighlight>
*''timeout''— загружает клиент, используя загрузочную запись по умолчанию, после таймаута в 120 секунд;
*''linux''— определяет файла ядра (путь до ядра ОС относительно пути, указанного в конфигурации TFTP) и параметры, которые должны быть добавлены при загрузке ядра, например расположение установочных пакетов и способы доступа к этим пакетам;
*''initrd''— путь к корневой файловой системе для начальной загрузки (относительно пути, указанного в конфигурации TFTP).


===== Настройка FTP =====
=== Настройка FTP ===


# Установить FTP-сервер:
# Установить FTP-сервер:
Строка 153: Строка 196:
#: <syntaxhighlight lang="bash"># ln -s /srv/public /var/ftp</syntaxhighlight>
#: <syntaxhighlight lang="bash"># ln -s /srv/public /var/ftp</syntaxhighlight>


===== Настройка NFS =====
=== Настройка NFS ===
# Установить NFS-сервер:
# Установить NFS-сервер:
#: <syntaxhighlight lang="bash"># apt-get install nfs-server</syntaxhighlight>
#: <syntaxhighlight lang="bash"># apt-get install nfs-server</syntaxhighlight>
Строка 168: Строка 211:
#: <syntaxhighlight lang="bash"># systemctl enable --now nfs-server</syntaxhighlight>
#: <syntaxhighlight lang="bash"># systemctl enable --now nfs-server</syntaxhighlight>


==== Загрузка компьютера ====
=== Автоматическая установка ===
Включаем новый компьютер, вызываем его BIOS SETUP, разрешаем "LAN adapter BOOT ROM", "PXE boot" или аналогичный пункт настройки, загружаем.
Для включения режима автоматической установки необходимо подготовить файлы, описанные в статье [[Autoinstall]].


В процессе загрузки видна заставка PXELINUX, затем начинается загрузка. Если указано несколько вариантов загрузки, будет предложен выбор:
Затем в файл конфигурации загрузчика к одному из пунктов загрузки дописать параметр загрузки ai (без значения) и параметр curl с указанием каталога с установочными файлами (каталог с установочными файлами может находиться как на этом же сервере, так и на другом сервере). В этом же файле можно также установить время ожидания и указать пункт меню, загружаемый по умолчанию.
 
 
[[Файл:Netinstall_uefi.png|Сетевая установка в режиме UEFI]]
Пример для режима Legacy (файл {{path|/var/lib/tftpboot/pxelinux.cfg/default}})
 
<syntaxhighlight lang="cfg">
=== Сетевая установка ALT Linux 7.0 ===
==== Минимально необходимые ручные настройки для однократной установки ====
Обычно в сети уже имеется сервер DHCP.
Особенности реализации:
*вносятся изменения в уже имеющийся сервер DHCP (ISC или совместимый по формату конфигов) — в Альтлинуксе пакет dhcp-server;
*сервер TFTP выполняется в режиме программы, но не демона — используем пакет tftpd;
*в качестве источника установки используется один из имеющихся серверов (демонов): FTP, HTTP или NFS.
===== Подготовка загрузчика =====
Пусть корень сервера TFTP будет ~/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 будет бесконечно спрашивать источник загрузки.
#:<source lang=bash>
echo "
default local
timeout 120
timeout 120
prompt 1
default nfs
display pxelinux.cfg/altlinux.msg


label local
label nfs
localboot 0
  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>


#install source: FTP
Пример для UEFI (файл {{path|/var/lib/tftpboot/grub.cfg}}):
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
<syntaxhighlight lang="cfg">
label http
set timeout=120
kernel alt0/vmlinuz
set default=nfs
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
menuentry $"Install NFS "'ALT Server 10.1 x86_64' --id 'nfs' {
label nfs
  echo $"Loading Linux vmlinuz ..."
kernel alt0/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/
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
  echo $"Loading initial ramdisk ..."
" > ~/Altlinux/PXEINSTALL/pxelinux.cfg/default
   initrd /boot/initrd.img
</source>
#Если известен адрес MAC сетевой карты, можно сделать копию или hardlink файла конфигурации для этого адреса MAC.
#Нельзя делать simlink из-за того, что in.tftpd с опцией -s отказывается ресолвить симлинки.
#:Пример: {{cmd|ln default ~/Altlinux/PXEINSTALL/pxelinux.cfg/01-00-18-f3-d0-62-06}}
#Создаём файл с подсказкой о выборе загрузки
#:<source lang=bash>
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
</source>
 
===== Подготовка сервера DHCP (BOOTP) =====
В файл конфигурации сервера DHCP добавляем секцию для нашего нового компьютера:
<pre>
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
}
}
</pre>
</syntaxhighlight>
(Эта секция добавлена рядом  с секцией "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" или аналогичный пункт настройки, загружаем.
Включаем новый компьютер, вызываем его BIOS SETUP, разрешаем "LAN adapter BOOT ROM", "PXE boot" или аналогичный пункт настройки, загружаем.


В процессе загрузки видна заставка PXELINUX, затем начинается загрузка. Если FTP или HTTP требует аутентификацию, PXELINUX предложит указать источник загрузки - в текстовой форме ввода можно задать адрес сервера, путь к содержимому установочного диска, логин и пароль.
В процессе загрузки видна заставка PXELINUX, затем начинается загрузка. Если указано несколько вариантов загрузки, будет предложен выбор:
 
[[Файл:Netinstall_uefi.png|Сетевая установка в режиме UEFI]]


=== Сетевая инсталляция ALT Linux 9.0 ===
== Сетевая инсталляция ALT Linux 9.0 ==
Требуется: сетевая карта с поддержкой PXE<ref>Как вариант, дискетка или ещё что-нибудь с Etherboot.</ref>.
Требуется: сетевая карта с поддержкой PXE<ref>Как вариант, дискетка или ещё что-нибудь с Etherboot.</ref>.
Установить следующие пакеты:
Установить следующие пакеты:
# apt-get install dhcp-server syslinux tftp-server vsftpd tftp-server-xinetd apache2-base
<syntaxhighlight lang="bash"># apt-get install dhcp-server syslinux tftp-server vsftpd tftp-server-xinetd apache2-base</syntaxhighlight>
Настройка dhcpd сервера /etc/dhcp/dhcpd.conf<ref>Уточните под свою сеть!  Не пересекитесь с уже работающим DHCP-сервером!</ref>:
<pre>
Настройка DHCP-сервера {{path|/etc/dhcp/dhcpd.conf}}<ref>Уточните под свою сеть!  Не пересекитесь с уже работающим DHCP-сервером!</ref>:
<syntaxhighlight lang="ini">
option arch code 93 = unsigned integer 16;
option arch code 93 = unsigned integer 16;
class "pxeclients" {
class "pxeclients" {
Строка 287: Строка 271:
     range 192.168.1.100 192.168.1.200;
     range 192.168.1.100 192.168.1.200;
}
}
</pre>
</syntaxhighlight>
<pre>
<syntaxhighlight lang="bash">
# mkdir -p /srv/public/netinst/mnt/
# mkdir -p /srv/public/netinst/mnt/
# mount /dev/sr0 /srv/public/netinst/mnt/
# mount /dev/sr0 /srv/public/netinst/mnt/
Строка 295: Строка 279:
# mkdir -p /var/lib/tftpboot/pxelinux.cfg
# mkdir -p /var/lib/tftpboot/pxelinux.cfg
# touch /var/lib/tftpboot/pxelinux.cfg/default /var/lib/tftpboot/pxelinux.cfg/default.msg
# touch /var/lib/tftpboot/pxelinux.cfg/default /var/lib/tftpboot/pxelinux.cfg/default.msg
</pre>
</syntaxhighlight>
===== Настройка установки в Legacy =====
=== Настройка установки в Legacy ===
Содержимое файла /var/lib/tftpboot/pxelinux.cfg/default:
Содержимое файла {{path|/var/lib/tftpboot/pxelinux.cfg/default}}:
<pre>
<syntaxhighlight lang="cfg">
default local
default local
display pxelinux.cfg/default.msg
display pxelinux.cfg/default.msg
Строка 321: Строка 305:
label memtest
label memtest
   linux memtest.bin
   linux memtest.bin
</pre>
</syntaxhighlight>


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


Строка 332: Строка 316:
local - boot from 1st HDD
local - boot from 1st HDD
mem  - run memtest
mem  - run memtest
</pre>
</syntaxhighlight>
===== Настройка установки в UEFI =====
=== Настройка установки в UEFI ===
Содержимое файла /var/lib/tftpboot/grub.cfg:
Содержимое файла {{path|/var/lib/tftpboot/grub.cfg}}:
<pre>
<syntaxhighlight lang="cfg">
set timeout=120
set timeout=120
menuentry "FTP install" {
menuentry "FTP install" {
Строка 350: Строка 334:
   initrdefi syslinux/alt0/full.cz
   initrdefi syslinux/alt0/full.cz
}
}
</pre>
</syntaxhighlight>


Получить файлы shimx64.efi и grubx64.efi:
Получить файлы shimx64.efi и grubx64.efi:
<pre>
<syntaxhighlight lang="bash">
cp /usr/lib64/efi/shimx64.efi /var/lib/tftpboot
# cp /usr/lib64/efi/shimx64.efi /var/lib/tftpboot
cp /usr/lib64/efi/grubx64.efi /var/lib/tftpboot
# cp /usr/lib64/efi/grubx64.efi /var/lib/tftpboot
</pre>
</syntaxhighlight>
===== Настройка TFTP =====
=== Настройка TFTP ===
Отредактировать файл /etc/xinetd.d/tftp и убедиться что включен tftp сервер:
Отредактировать файл {{path|/etc/xinetd.d/tftp}} и убедиться что включен TFTP-сервер:
<pre>
<syntaxhighlight lang="text">
disable = no
disable = no
</pre>
</syntaxhighlight>
Перезапустить сервис:
Перезапустить сервис:
<pre>
<syntaxhighlight lang="bash">
# systemctl restart xinetd
# systemctl restart xinetd
</pre>
</syntaxhighlight>
===== Настройка FTP =====
=== Настройка FTP ===
Отредактировать файл /etc/xinetd.d/vsftpd и убедиться что включен ftp сервер:
Отредактировать файл {{path|/etc/xinetd.d/vsftpd}} и убедиться что включен FTP-сервер:
<pre>
<syntaxhighlight lang="text">
disable = no
disable = no
</pre>
</syntaxhighlight>
Перезапустить сервис:
Перезапустить сервис:
<pre>
<syntaxhighlight lang="bash">
# systemctl restart xinetd
# systemctl restart xinetd
</pre>
</syntaxhighlight>


===== Настройка NFS =====
=== Настройка NFS ===
В файле /etc/exports должна быть следующая строчка:
В файле {{path|/etc/exports}} должна быть следующая строчка:
<pre>
<syntaxhighlight lang="text">
/srv/public -ro,insecure,no_subtree_check,fsid=1,crossmnt *
/srv/public -ro,insecure,no_subtree_check,fsid=1,crossmnt *
</pre>
</syntaxhighlight>
Экспорт каталогов:
Экспорт каталогов:
<pre>
<syntaxhighlight lang="bash">
exportfs -r
# exportfs -r
</pre>
</syntaxhighlight>


===== Настройка HTTP =====
=== Настройка HTTP ===
Для apache создать конфигурационный файл /etc/httpd2/conf/sites-available/netinst.conf со следующим содержимым:
Для apache создать конфигурационный файл {{path|/etc/httpd2/conf/sites-available/netinst.conf}} со следующим содержимым:
<pre>
<syntaxhighlight lang="apache">
<VirtualHost *:80>
<VirtualHost *:80>
   DocumentRoot /srv/public/netinst/mnt/
   DocumentRoot /srv/public/netinst/mnt/
Строка 398: Строка 382:
   </Directory>
   </Directory>
</VirtualHost>
</VirtualHost>
</pre>
</syntaxhighlight>
Применить изменения:
Применить изменения:
<pre>
<syntaxhighlight lang="bash">
a2dissite 000-default
# a2dissite 000-default
a2dissite 000-default_https
# a2dissite 000-default_https
a2ensite netinst
# a2ensite netinst
systemctl restart httpd2
# systemctl restart httpd2
</pre>
</syntaxhighlight>
 
== Сетевая установка ALT Linux 7.0 ==
=== Минимально необходимые ручные настройки для однократной установки ===
Обычно в сети уже имеется сервер DHCP.
Особенности реализации:
*вносятся изменения в уже имеющийся сервер DHCP (ISC или совместимый по формату конфигов) — в ОС «Альт» пакет {{pkg|dhcp-server}};
*сервер TFTP выполняется в режиме программы, но не демона — используем пакет tftpd;
*в качестве источника установки используется один из имеющихся серверов (демонов): FTP, HTTP или NFS.
=== Подготовка загрузчика ===
Пусть корень сервера TFTP будет {{path|~/Altlinux/PXEINSTALL}}.
#Создаём каталоги для сервера TFTP: {{cmd|mkdir -p ~/Altlinux/PXEINSTALL/pxelinux.cfg ~/Altlinux/PXEINSTALL/alt0}}
#Копируем загрузчик из пакета syslinux: {{cmd|cp /usr/lib/syslinux/pxelinux.0 ~/Altlinux/PXEINSTALL}}
#Создаём файл конфигурации загрузчика — умолчание для всех компьютеров
#:(Примечание: Размер виртуального диска в "append ... ramdisk_size=" определяется размером файла "altinst" — если места не хватит, pxelinux.0 будет бесконечно спрашивать источник загрузки.
#:<syntaxhighlight lang="cfg">
echo "
default local
timeout 120
prompt 1
display pxelinux.cfg/altlinux.msg
 
label local
localboot 0
 
#install source: FTP
label ftp
kernel alt0/vmlinuz
append initrd=alt0/full.cz live fastboot showopts automatic=method:ftp,network:dhcp,server:192.0.2.2,directory:/pub/ALTLinux/ stagename=altinst ramdisk_size=45000
 
#install source: HTTP
label http
kernel alt0/vmlinuz
append initrd=alt0/full.cz live fastboot automatic=method:http,network:dhcp,server:192.0.2.2,directory:/Altlinux stagename=altinst ramdisk_size=45000
 
#install source: NFS
label nfs
kernel alt0/vmlinuz
append initrd=alt0/full.cz ai live fastboot automatic=method:nfs,network:dhcp,server:192.0.2.2,directory:/space/ftp/pub/Altlinux/ stagename=altinst
" > ~/Altlinux/PXEINSTALL/pxelinux.cfg/default
</syntaxhighlight>
#Если известен адрес MAC сетевой карты, можно сделать копию или hardlink файла конфигурации для этого адреса MAC.
#Нельзя делать simlink из-за того, что in.tftpd с опцией -s отказывается ресолвить симлинки.
#:Пример: {{cmd|ln default ~/Altlinux/PXEINSTALL/pxelinux.cfg/01-00-18-f3-d0-62-06}}
#Создаём файл с подсказкой о выборе загрузки
#:<syntaxhighlight lang="cfg">
echo "
Network install Altlinux 7.0.4
Type one of:
 
ftp  - install from ftp archive
http  - install from http site
nfs  - install from nfs directory
local - boot from 1st HDD
" > ~/Altlinux/PXEINSTALL/pxelinux.cfg/altlinux.msg
</syntaxhighlight>
 
=== Подготовка сервера DHCP (BOOTP) ===
В файл конфигурации сервера DHCP добавляем секцию для нашего нового компьютера:
<syntaxhighlight lang="ini">
host PXE {
    hardware ethernet 00:18:f3:d0:62:06; # MAC сетевого интерфейса
    fixed-address 192.0.2.7;            # такой IP будет ему назначен (не обязателено)
    next-server 192.0.2.6;              # IP-адрес сервера TFTP
    filename "pxelinux.0";              # имя файла загрузчика PXELINUX
}
</syntaxhighlight>
Эта секция добавлена рядом  с секцией "subnet 192.0.2.0 netmask 255.255.255.0 { … }", на том же уровне иерархии.
=== Запуск сервера TFTP ===
Запустим программу сервера TFTP в foreground chroot в подготовленный каталог:
<syntaxhighlight lang="bash"># in.tftpd -L4s ~/Altlinux/PXEINSTALL</syntaxhighlight>
Проверить, всё ли в порядке, можно в файлах протоколов {{path|/var/log/daemons/warnings}} и {{path|/var/log/daemons/errors}}.
 
Если хочется увидеть, какие файлы запрашивает клиент (PXE), укажите высокий уровень протоколирования и наблюдайте лог {{path|/var/log/daemons/info}}.
В одном окне консоли:
<syntaxhighlight lang="bash"># in.tftpd -L4s --verbosity 10 ~/Altlinux/PXEINSTALL</syntaxhighlight>
В другом:
<syntaxhighlight lang="bash"># tail -F /var/log/daemons/info</syntaxhighlight>
=== Публикация источника установки ===
Монтируем загрузочный CD или DVD и раздаём его содержимое по ftp, http или nfs.
Пример для FTP:
<syntaxhighlight lang="bash"># mkdir /ftp/pub/Altlinux
# mount -t iso9660 -o ro /dev/sdd /ftp/pub/Altlinux</syntaxhighlight>
или
<syntaxhighlight lang="bash"># mount -t iso9660 -o loop,ro ~/Downloads/alt-N-installdvd.iso /ftp/pub/Altlinux</syntaxhighlight>
=== Загрузка компьютера ===
Включаем новый компьютер, вызываем его BIOS SETUP, разрешаем "LAN adapter BOOT ROM", "PXE boot" или аналогичный пункт настройки, загружаем.
 
В процессе загрузки видна заставка PXELINUX, затем начинается загрузка. Если FTP или HTTP требует аутентификацию, PXELINUX предложит указать источник загрузки - в текстовой форме ввода можно задать адрес сервера, путь к содержимому установочного диска, логин и пароль.


=== Примечания ===
== Примечания ==
<references />
<references />


=== Ссылки ===
== Ссылки ==
* [http://lists.altlinux.ru/pipermail/sarlug/2007-October/004835.html Описание установки по сети] (SarLUG)
* [http://lists.altlinux.ru/pipermail/sarlug/2007-October/004835.html Описание установки по сети] (SarLUG)
* [http://freesource.info/wiki/Stat'i/SozdanieTonkixKlientov  Сетевая загрузка тонкого клиента ]
* [http://freesource.info/wiki/Stat'i/SozdanieTonkixKlientov  Сетевая загрузка тонкого клиента ]

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

Ссылки