NetInstall start

Материал из ALT Linux Wiki
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.
Примечание: Обратите внимание, что это не официальная документация, а попытка начинающего админа объяснить материал начинающим админам.
Внимание! Данная страница находится в разработке и не готова для использования!

Установка по сети

Техническая часть

Многие компьютеры и серверы поддерживают установку системы не только с CD/DVD и флешек, но так же по сети.

Данный вариант загрузки обеспечивается с помощью технологии PXE - (Preboot eXecution Environment, произносится пикси) — среды для загрузки компьютера с помощью сетевой карты без использования локальных носителей данных (жёсткого диска, USB-накопителя и пр).

Для организации загрузки системы в PXE используются следующие протоколы:

  • IP - сетевой протокол объединяющий сегменты сети в единую сеть, обеспечивая доставку пакетов данных между любыми узлами сети через произвольное число промежуточных узлов.
  • UDP - сетевой протокол транспортного уровня, с ним компьютерные приложения могут посылать сообщения другим хостам по IP-сети без необходимости предварительного сообщения для установки специальных каналов передачи или путей данных.
  • BOOTP - сетевой протокол прикладного уровня, используемый для автоматического получения клиентом IP-адреса. Это обычно происходит во время загрузки компьютера.
  • TFTP - (Trivial File Transfer Protocol — простой протокол передачи файлов) - используется, в основном, для первоначальной загрузки бездисковых рабочих станций. TFTP, в отличие от FTP, не содержит возможностей аутентификации (хотя возможна фильтрация по IP-адресу) и основан на транспортном протоколе UDP.

PXE-код, обычно находящийся в ПЗУ сетевой карты, получает из сети по протоколу TFTP (получив адрес TFTP-сервера по BOOTP) исполняемый файл, после чего передаёт ему управление.

Параметры нашей сети (для примера)
Параметр Значение
Сеть 10.0.2.0
Маска 255.255.255.0
Шлюз 10.0.2.1
Адрес компьютера с PXE-сервером 10.0.2.4
Адрес с DHCP-сервером (в примере тот же компьютер) 10.0.2.4

Устанавливаем пакеты

# apt-get install dhcp-server tftp-server-xinetd syslinux

Настраиваем DHCP-сервер

DHCP-сервер для автоматической настройки сетевых интерфейсов в локальной сети, именно он присваивает каждому устройству в локальной сети IP-адреса (если настроена раздача таких адресов автоматически). Нам же нужно настроить этот сервер таким образом, чтобы компьютер при запуске загрузки по сети автоматически получил адрес TFTP-сервера и загрузил с него образ системы.

Наш сервер DHCP dhcpd. настраиваем его через файл - /etc/dhcp/dhcpd.conf

# mcedit /etc/dhcp/dhcpd.conf

Скопируйте в файл следующие значения, обратив внимание на комментарии.

Примечание: Адреса сети вы должны заменить на свои
Внимание! Опция option root-path указывает относительный путь, где будут храниться образы. Если вы прорабатываете данную инструкцию в первый раз, не меняйте ее значение, а расположите образы в указанной папке
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 10.0.2.0 netmask 255.255.255.0 {
        # Здесь ↓ указываем адрес компьютера, на котором будет располагаться TFTP-сервер. В нашем примере он там же, где DHCP-сервер
        next-server 10.0.2.4;
        # адрес NFS-сервера для установки в Legacy
        option root-path "/var/lib/tftpboot";
        # адрес шлюза сети  
        option routers 10.0.2.1;
        # адрес DNS-сервера сети или внешний адрес для обслуживания DNS-имен
        option domain-name-servers 8.8.8.8;
        # Срок аренды в секундах - стандартное и максимальное
        default-lease-time 3600;
        max-lease-time 3600;
        # Область DHCP
        range 10.0.2.70 10.0.2.80;
}

Сохраняем и закрываем файл.

Запускаем DHCP-сервер:

# systemctl enable --now dhcpd

Мы настроили DHCP-сервер с определенным диапазоном (10.0.2.70-10.0.2.80) и определенной подсетью (10.0.2.0).

Любой компьютер с поддержкой PXE получит загрузчик указанный в настройках DHCP. Для UEFI это будет shimx64.efi, для BIOS — файл pxelinux.0.

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


Настраиваем TFTP-сервер

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

Правим файл /etc/xinetd.d/tftp:

# mcedit /etc/xinetd.d/tftp

Приводим строчку disable к следующему виду:

 disable = no

Правим файл /etc/xinetd.conf:

# mcedit /etc/xinetd.conf

Приводим строчку only_from = 127.0.0.1 к следующему виду:

 # only_from = 127.0.0.1

Перезапускаем службу xinetd:

 # systemctl restart xinetd

Публикация образа

Скачиваем любой дистрибутив ALT Linux, например, Starterkit XFCE - http://nightly.altlinux.org/p10/permalink/alt-p10-xfce-latest-x86_64.iso.

Примечание: Вы можете скачать и использовать любой другой дистрибутив. Стартеркит взят для примера.


Например, образ скачан в /home/ladmin/Загрузки/alt-p10-xfce-latest-x86_64.iso.

Монтируем данный ISO-образ:

# mkdir -p /mnt/iso/
# mount -o loop '/home/ladmin/Загрузки/alt-p10-xfce-latest-x86_64.iso' /mnt/iso

Создаем каталог для ОС:

# mkdir -p /var/lib/tftpboot/images/ALT/

Копируем образ ОС выполнив команду

# cp -vR /mnt/iso/* /var/lib/tftpboot/images/ALT/

Отмонтируем образ:

# umount /mnt/iso/

Настройка установки в Legacy

Создаем подкаталог для хранения файлов загрузочного образа в /var/lib/tftpboot:

Примечание: Да, это каталог с именем pxelinux.cfg
# 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 /var/lib/tftpboot/images/ALT/syslinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
# chmod 644 /var/lib/tftpboot/pxelinux.cfg/default


Содержимое файла /var/lib/tftpboot/pxelinux.cfg/default.

Правим следующей командой:

# mcedit /var/lib/tftpboot/pxelinux.cfg/default
timeout 120
prompt 1
default local
display pxelinux.cfg/default.msg

label ftp
  kernel /boot/vmlinuz
  append initrd=/boot/initrd.img fastboot changedisk automatic=method:ftp,network:dhcp,server:10.0.2.4,directory:/ALT stagename=live ramdisk_size=669397 showopts nosplash mpath lang=ru_RU

Где:

Примечание: Тут нам нужно обратить внимание на следующие параметры:
  • server - Адрес компьютера с PXE-сервером (см. таблицу в начале)
  • directory - /var/lib/tftpboot/images/ALT - путь в который мы распаковали образ ALT Linux
  • stagename - имя большого файла, содержащего ФС образа ALT Linux, в Starterkits это live, в других он может отличаться


Содержимое файла /var/lib/tftpboot/pxelinux.cfg/default.msg:

Type one of:
ftp     - install from ftp archive

Настройка установки в 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:
    # rm -f /var/ftp
    # ln -s /var/lib/tftpboot/images /var/ftp