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

Материал из ALT Linux Wiki
Строка 126: Строка 126:
option arch code 93 = unsigned integer 16;
option arch code 93 = unsigned integer 16;
class "pxeclients" {
class "pxeclients" {
        match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
    match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
        next-server 192.168.1.1;
    next-server 192.168.1.1;
        if option arch = 00:06 {
    if option arch = 00:06 {
              filename "bootia32.efi";
        filename "bootia32.efi";
        } else if option arch = 00:07 {
    } else if option arch = 00:07 {
              filename "shimx64.efi";
        filename "shimx64.efi";
        } else {
    } else {
              filename "pxelinux.0";
        filename "pxelinux.0";
        }
    }
}
}



Версия от 08:21, 11 сентября 2023

Сетевая установка ALT Linux

Требуются:

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


Сетевая установка ALT Linux 7.0

Минимально необходимые ручные настройки для однократной установки.

Обычно в сети уже имеется сервер DHCP. Особенности реализации:

  • вносятся изменения в уже имеющийся сервер DHCP (ISC или совместимый по формату конфигов) — в Альтлинуксе пакет dhcp-server;
  • сервер TFTP выполняется в режиме программы, но не демона — используем пакет tftpd;
  • в качестве источника установки используется один из имеющихся серверов (демонов): FTP, HTTP или NFS.

Подготовка загрузчика

Пусть корень сервера TFTP будет ~/Altlinux/PXEINSTALL.

# Создаём каталоги для сервера TFTP.
mkdir -p ~/Altlinux/PXEINSTALL/pxelinux.cfg ~/Altlinux/PXEINSTALL/alt0

# Копируем загрузчик из пакета syslinux
cp /usr/lib/syslinux/pxelinux.0 ~/Altlinux/PXEINSTALL

# Создаём файл конфигурации загрузчика -- умолчание для всех компьютеров
# Примечание. Размер виртуального диска в "append ... ramdisk_size=" определяется размером файла "altinst",
# если места не хватит, pxelinux.0 будет бесконечно спрашивать источник загрузки.
echo "
default local
timeout 120
prompt 1
display pxelinux.cfg/altlinux.msg

label local
localboot 0

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

#install source: HTTP
label http
kernel alt0/vmlinuz
append initrd=alt0/full.cz live fastboot automatic=method:http,network:dhcp,server:192.0.2.2,directory:/Altlinux stagename=altinst ramdisk_size=45000

#install source: NFS
label nfs
kernel alt0/vmlinuz
append initrd=alt0/full.cz ai live fastboot automatic=method:nfs,network:dhcp,server:192.0.2.2,directory:/space/ftp/pub/Altlinux/ stagename=altinst
" > ~/Altlinux/PXEINSTALL/pxelinux.cfg/default

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

# Создаём файл с подсказкой о выборе загрузки
echo "

Network install Altlinux 7.0.4
Type one of:

ftp   - install from ftp archive
http  - install from http site
nfs   - install from nfs directory
local - boot from 1st HDD

" > ~/Altlinux/PXEINSTALL/pxelinux.cfg/altlinux.msg

Подготовка сервера DHCP (BOOTP)

В файл конфигурации сервера DHCP добавляем секцию для нашего нового компьютера:

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

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

Запуск сервера TFTP

Запустим программу сервера TFTP в foreground chroot в подготовленный каталог:

sudo in.tftpd -L4s ~/Altlinux/PXEINSTALL

Проверить, всё ли в порядке, можно в файлах протоколов /var/log/daemons/warnings и /var/log/daemons/errors.

Если хочется увидеть, какие файлы запрашивает клиент (PXE), укажите высокий уровень протоколирования и наблюдайте лог /var/log/daemons/info. В одном окне консоли:

sudo in.tftpd -L4s --verbosity 10 ~/Altlinux/PXEINSTALL

В другом:

sudo tail -F /var/log/daemons/info

Публикация источника установки

Монтируем загрузочный CD или DVD и раздаём его содержимое по ftp, http или nfs Пример для FTP:

sudo mkdir /ftp/pub/Altlinux
sudo mount -t iso9660 -o ro /dev/sdd /ftp/pub/Altlinux

или

sudo 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 предложит указать источник загрузки - в текстовой форме ввода можно задать адрес сервера, путь к содержимому установочного диска, логин и пароль.


Сетевая инсталляция ALT Linux 9.0

Требуется: сетевая карта с поддержкой PXE[1]. Установить следующие пакеты:

 # apt-get install dhcp-server syslinux tftp-server vsftpd tftp-server-xinetd apache2-base

Настройка dhcpd сервера /etc/dhcp/dhcpd.conf[2]:

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

Примечания

  1. Как вариант, дискетка или ещё что-нибудь с Etherboot.
  2. Уточните под свою сеть! Не пересекитесь с уже работающим DHCP-сервером!

Ссылки