Данная статья применима к:

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.8)
  • Astra Linux Special Edition РУСБ.10015-01 и РУСБ.10015-10 (очередное обновление 1.7)
  • Astra Linux Special Edition РУСБ.10015-37 (очередное обновление 7.7)

  • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)

  • Astra Linux Special Edition РУСБ.10015-16 исп. 1

  • Astra Linux Common Edition 2.12

Внимание!

  1. Установка Astra Linux в автоматическом режиме означает автоматическое принятие лицензионного соглашения (см. Лицензионные соглашения и политика лицензирования ГК Astra Linux).
  2. При установке в автоматическом режиме Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) и Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7) и более поздних обновлений выбор уровня защищенности должен осуществляться в соответствии с условиями действующего лицензионного договора. Подробнее про уровни защищенности см.  Astra Linux Special Edition (очередное обновление x.7): Ключевые изменения в комплексе средств защиты информации.

PXE (англ.Preboot eXecution Environment) — среда для загрузки компьютеров с помощью сетевой карты без использования жестких дисков, компакт-дисков и других подобных устройств. Частным случаем автоматической загрузки является установка ОС по сети. Подробная информация об автоматической установке ОС с помощью списка ответов: Автоматическая установка Astra Linux Special Edition 1.7.

Введение

Предполагается, что для выполнения загрузки по сети используется следующая конфигурация оборудования:

  • Все компьютеры находятся в одной локальной сети (в одном широковещательном домене).
  • В этой сети имеются:
    • Настроенный DHCP-сервер (см. DHCP: служба isc-dhcp-server и DHCP: служба kea), выдающий клиентским компьютерам не только сетевые IP-адреса, но и другие сетевые параметры (в частности, IP-адрес TFTP-сервера, с которого будут загружаться первичные данные для дальнейшего развертывания ОС). Далее для примера приводится установка и настройка DHCP-сервера, однако если в сети уже имеется собственный DHCP-сервер, то следует выполнить его настройку в соответствии с приведенными в статье инструкциями и инструкциями к используемому ПО.
    • Настроенный TFTP сервер, с которого можно загрузить первичные данные и файлы для первичной загрузки:
    • Настроенные разделяемые сетевые ресурсы, из которых можно загружать файлы, в том числе сетевые репозитории пакетов. Для предоставления этих ресурсов могут использоваться различные серверы. например, интернет-репозитории Astra Linux. Для загрузки могут использоваться протоколы FTP или HTTP (см.  Создание собственного/служебного репозитория).

      В обычных репозиториях пакетов нет загрузочных модулей ядра. Чтобы необходимые модули были доступны при сетевой установке проще всего использовать в качестве разделяемых сетевых ресурсов примонтированные установочные диски (образы дисков). Также загрузочные модули можно указать в меню выбора параметров загрузки.

      Для примера далее используются HTTP-репозитории:

В общем случае в составе инфраструктуры PXE используются РАЗНЫЕ источники данных, работающие по РАЗНЫМ протоколам, расположенные в РАЗНЫХ местах файловой системы, и, возможно, даже на разных серверах:


Для упрощения изложения далее предполагается, что сетевые службы DHCP, TFTP, HTTP располагаются на одном и том же компьютере. При необходимости эти службы могут быть установлены на разных компьютерах

Как это работает:

  1. Компьютер-клиент подключается к сети и запрашивает для себя IP-адрес, передавая в запросе информацию о собственной конфигурации.
  2. DHCP-сервер выбирает и передает компьютеру-клиенту его IP-адрес. Вместе с адресом передаются дополнительные сетевые параметры, в том числе IP-адрес TFTP-сервера с необходимыми для установки ОС файлами.
  3. Компьютер-клиент подключается к TFTP-серверу и загружает базовый загрузчик. При этом используется протокол TFTP.
  4. Компьютер-клиент запускает базовый загрузчик, который используя протокол TFTP загружает свой конфигурационный файл, и выполняет предписанные этим файлом действия (вывод интерактивного меню, загрузка образа и т.д.).  При этом могут загружаться дополнительные файлы для чего используются протоколы FTP, HTTP, HTTPS и могут использоваться разные серверы.

Установка и настройка сервера PXE

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

Установить необходимые пакеты:

sudo apt install tftpd-hpa pxelinux syslinux grub-efi-amd64-bin console-cyrillic
Где:

  • tftpd-hpa — TFTP-server;
  • pxelinux — файлы для традиционной сетевой загрузки;
  • syslinux — файлы (библиотеки) для организации меню;
  • grub-efi-amd64-bin — файлы для загрузки EFI;
  • console-cyrillic — шрифты, требуются если предполагается использовать кириллицу в меню традиционной загрузки;
  • дополнительно может понадобиться установить и настроить:

Настройка службы TFTP

Служба tftpd после установки запускается автоматически и сразу предоставляет доступ к каталогу /srv/tftp/, в котором далее и будут размещены файлы для сетевой загрузки. Дополнительной настройки может требовать доступ к службе TFTP из-под NAT, см. ниже.

Настройка работы службы TFTP для доступа из-под NAT

Если клиент TFTP находится в сети NAT, а сервер TFTP находится вне этой сети, то для предоставления доступа клиента к серверу TFTP на сервере NAT может понадобиться выполнить дополнительные настройки:

  1. Загрузить модуль ядра nf_nat_tftp:
    sudo modprobe nf_nat_tftp
  2. Создать правило iptables для пересылки пакетов TFTP через NAT :
    sudo iptables -t raw -I PREROUTING -j CT -p udp -m udp --dport 69 --helper tftp
  3. Для того, чтобы сделанные изменения сохранялись после перезагрузки:
    1. Для автоматической загрузки модуля создать файл с произвольным именем и расширением conf в каталоге /etc/modules-load.d и указать в нем имя загружаемого модуля, например файл /etc/modules-load.d/nf_nat_ftp.conf:
      sudo echo "nf_nat_ftp" | sudo tee /etc/modules-load.d/nf_nat_ftp.conf
    2. Для сохранения правила iptables см. Сохранение и восстановление правил iptables.

Настройка службы FTP

Для настройки службы FTP можно использовать инструкцию Использование протокола FTP. При настройке необходимо учесть, что для использования FTP для загрузки по сети должен быть разрешен анонимный доступ, см. FTP для анонимных пользователей: только чтение.

Установка и настройка службы DHCP

Создание собственной службы DHCP требуется только в том случае, если в сети нет уже такой действующей службы. Если в сети уже имеется служба DHCP (DHCP-сервер), то следует внести в его настройку указанные ниже параметры в соответствии с инструкциями по эксплуатации используемой службы.

Минимальная настройка службы должна обеспечивать назначение динамических адресов компьютерам-клиентам и передачу информации  для первичной загрузки. 

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

Служба isc-dhcp-server

Для создания собственного DHCP-сервера:
  1. Установить пакет:

    sudo apt install isc-dhcp-server

  2. Настроить пакет:

    1. В файле /etc/default/isc-dhcp-server указать используемый сетевой интерфейс :

      INTERFACESv4="eth0"
    2. Настроить конфигурацию службы в файле /etc/dhcp/dhcpd.conf. В данной конфигурации dhcp сервер будет определять тип клиента (UEFI или Legacy BIOS) и передавать ему нужный загрузчик:

      authoritative;
      option domain-name "my.dom";
      default-lease-time 600;
      max-lease-time 7200;
      log-facility local7;
      option domain-name-servers 77.88.8.8;
      allow booting;
      allow bootp;
      option fqdn.no-client-update    on;  
      option fqdn.rcode2            255;
      option pxegrub code 150 = text ;
      
      next-server 192.168.56.1; 
      option architecture code 93 = unsigned integer 16 ;
      # Опция архитектуры 0x0007 - загрузка EFI
      # Опция архитекторы 0x0000 - традиционная загрузка
      if option architecture = 00:07 {
        filename "debian-installer/grub/x86_64-efi/core.efi"; 
      } elsif option architecture = 00:00 {
        filename "pxelinux.0"; 
      }
      
      subnet 192.168.56.0 netmask 255.255.255.0 {
          range 192.168.56.20 192.168.56.250;
          option broadcast-address 192.168.56.255;
          option routers 192.168.56.1;
          option subnet-mask 255.255.255.0;
      }  
    3. После внесения изменений в настройки перезапустить службу:

      sudo systemctl restart isc-dhcp-server

Служба kea

Конфигурационные файлы службы kea находятся в каталоге /etc/kea. Пример конфигурационного файла /etc/kea/dhcp4.conf:

{
  "Dhcp4": {
    "interfaces-config": { "interfaces": [ "enp1s0" ] },
    "control-socket": { "socket-type": "unix", "socket-name": "/run/kea/kea4-ctrl-socket" },
    "lease-database": { "type": "memfile", "lfc-interval": 3600 },
    "expired-leases-processing": { "reclaim-timer-wait-time": 10, "flush-reclaimed-timer-wait-time": 25, "hold-reclaimed-time": 3600, "max-reclaim-leases": 100, "max-reclaim-time": 250, "unwarned-reclaim-cycles": 5 },
    "renew-timer": 900,
    "rebind-timer": 1800,
    "valid-lifetime": 3600,
    "option-data": [ { "name": "domain-name-servers", "data": "192.168.56.1, 192.168.56.2" },
                     { "code": 15, "data": "example.org" },
                     { "name": "domain-search", "data": "mydomain.example.com, example.com" },
                     { "name": "default-ip-ttl", "data": "0xf0" }
    ],
    "next-server": "192.168.56.1",
    "client-classes": [ { "name": "ipxe_64_efi", "test": "option[93].hex == 0x0007", "option-data": [ { "name": "boot-file-name", "data": "debian-installer/grub/x86_64-efi/core.efi" } ] },
                        { "name": "ipxe_64_nil", "test": "option[93].hex == 0x0000", "option-data": [ { "name": "boot-file-name", "data": "pxelinux.0" } ] }
    ],
    "subnet4": [ {  "subnet": "192.168.56.0/24", "pools": [ { "pool": "192.168.56.20 - 192.168.56.200" } ], "option-data": [ { "name": "routers", "data": "192.168.56.254" } ] } ]
  }
}


Подготовка файлов

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

Подготовка комплекта файлов для загрузки

Подготовка комплекта файлов для загрузки EFI

Для настройки автоматической установки при использовании загрузки EFI:

  1. Установить пакет  grub-efi-amd64-bin.
  2. Выполнить команду:
    sudo grub-mknetdir --net-directory=/srv/tftp --subdir=/debian-installer/grub
    где /srv/tftp — корневой каталог сетевого ресурса, предоставляемого TFTP-сервером.
  3. Также для первичной загрузки понадобятся файлы с ядром ОС и с образом корневой файловой системы (также используются для традиционной загрузки):
    1. файлы vmlinuz и initrd — в Astra Linux Special Edition x.8, доступны на установочных дисках в корневом каталоге;
    2. файлы linux и initrd.gz — в более ранних обновлениях,  доступны на установочных дисках в каталоге netinst/debian-installer/amd64.
  4. Если в загрузочном меню планируется использовать символы кириллицы, то понадобится файл со шрифтом /usr/share/grub/unicode.pf2, входящий в состав пакета grub-common. Этот шрифт использует стандартную кодировку UTF8. Далее в примерах предполагается, что файл /usr/share/grub/unicode.pf2 скопирован в файл /srv/tftp/debian-installer/grub/fonts/unicode.pf2.

Подготовка комплекта файлов для традиционной загрузки

Для традиционной загрузки по сети нужны следующие файлы:

  • Базовый загрузчик pxelinux.0. Доступен в составе пакета pxelinux, файл /usr/lib/PXELINUX/pxelinux.0. 
  • Библиотеки syslinux. Необходимы для работы меню. Доступны в составе пакета syslinux в каталоге /usr/lib/syslinux/modules. Примерный набор необходимых библиотек:
    • ldlinux.c32 — библиотека для загрузки меню;
    • menu.c32 — библиотека реализации меню;
    • chain.c32 — библиотека для реализации вложенных меню;
    • vesamenu.c32 — библиотека для реализации альтернативного меню (меню vesa);
    • libcom.c32, libutil.c32 — вспомогательные библиотеки.
  • Загрузочное меню — должно быть создано вручную, см. далее.
  • Ядро ОС и образ корневой файловой системы (также используются для загрузки EFI):
    • файлы vmlinuz и initrd — в Astra Linux Special Edition x.8, доступны на установочных дисках в корневом каталоге;
    • файлы linux и initrd.gz — в более ранних обновлениях,  доступны на установочных дисках в каталоге netinst/debian-installer/amd64.
  • Файл UniCyr_8x16.psf — шрифт с поддержкой кириллицы для меню традиционной загрузки. Доступен в составе пакета console-cyrillic (файл /usr/share/console-cyrillic/UniCyr_8x16.psf). Шрифт использует кодировку CP866, то есть для его применения кириллицу следует вводить не в стандартной кодировке  UTF8, а в кодировке CP866 (в терминах текстового редактора kate - IBM688). Далее в примерах предполагается, что шрифт скопирован в файл /srv/tftp/pxelimux.cfg/UniCyr_8x16.psf.

Для копирования файлов с установочных дисков эти диски следует примонтировать, например:

  1. Для Astra Linux Special Edition, если основной установочный диск находится в приводе компакт дисков:

    sudo mkdir -p /srv/repo/se/
    sudo mount /dev/sr0 /srv/repo/se/
    sudo mkdir -p /srv/tftp/se/
    sudo cp /srv/repo/se/netinst/linux /srv/tftp/se/
    sudo cp /srv/repo/se/netinst/initrd.gz /srv/tftp/se/

    Для Astra Linux Common Edition, если образ установочного диска находится в файле /srv/ce212.iso:

    sudo mkdir -p /srv/repo/ce/
    sudo mount /srv/ce212.iso /srv/repo/ce
    sudo mkdir -p /srv/tftp/ce/
    sudo cp /srv/repo/ce/netinst/linux /srv/tftp/ce/
    sudo cp /srv/repo/ce/netinst/initrd.gz /srv/tftp/ce/

  2. Скопировать в каталог /srv/tftp файл pxelinux.0 и необходимые библиотеки syslinux из установленной ОС:

    sudo cp /usr/lib/PXELINUX/pxelinux.0 /srv/tftp/
    sudo cp /usr/lib/syslinux/modules/bios/{chain.c32,ldlinux.c32,libcom32.c32,libutil.c32,menu.c32,vesamenu.c32} /srv/tftp/

Создание загрузочного меню

В загрузочном меню указывается:

  • текстовая информация для идентификации элементов меню;
  • загружаемые модули, в том числе файлы ядра и файловой системы:
    • vmlinuz и initrd — в Astra Linux Special Edition x.8, доступны на установочных дисках в корневом каталоге;
    • linux и initrd.gz — в более ранних обновлениях,  доступны на установочных дисках в каталоге netinst/debian-installer/amd64;
  • параметры загружаемого ядра и параметры автоматической настройки, в том числе:
    • параметры, которые при обычной установке должны  быть заданы до установки сетевого подключения:
      • настройки локализации;
      • настройки клавиатуры;
      • имя компьютера;
      • первичные сетевые настройки;
    • для автоматической установки — файл со сценарием автоматической установки (файл preseeed);
    • для загрузки live-образа — файл этого образа.

Подробнее про файлы preseed см.:


При использовании приведенных далее примеров по умолчанию загрузка клиента выполняется с локального жесткого диска. Это сделано для предотвращения повторной автоматической установки после завершения первой установки, или случайной установки на компьютер с уже установленной ОС, подключенный к этой же сети. 

Создание загрузочного меню для загрузки EFI

Загрузочное меню для загрузки EFI располагается в файле /srv/tftp/debian-installer/grub/grub.cfg (при использовании для tftp каталога /srv/tftp/). Пример меню:

if loadfont $prefix/fonts/unicode.pf2 ; then
#  set gfxmode=800x600
  set gfxmode=1920x1080
  set gfxpayload=keep
  insmod efi_gop
  insmod efi_uga
  insmod video_bochs
  insmod video_cirrus
  insmod gfxterm
  insmod png
  terminal_output gfxterm
fi

# Таймаут для выполнения автоматической загрузки
set timeout=50

if background_image /isolinux/splash.png; then
  set color_normal=light-gray/black
  set color_highlight=white/black
else
  set menu_color_normal=cyan/blue
  set menu_color_highlight=white/blue
fi

menuentry "Загрузка с диска" {
    insmod chain
    insmod disk
    insmod part_gpt
    insmod part_mbr
    search --set=root --file /efi/astralinux/grubx64.efi
    chainloader /efi/astralinux/grubx64.efi
    boot
}

submenu "Установка и live-загрузка Astra Linux Special Edtion 1.8 EFI" {
  submenu "Установка Astra Linux Special Edtion 1.8 EFI" {
    menuentry "Установка Astra Linux Special Edtion 1.8 EFI" {
        set background_color=red
        set gfxpayload=keep
        linux se/vmlinuz quiet modprobe.blacklist=evbug boot=live astra_install=1 fetch=ftp://192.168.56.1/repo/01.08/01/live/filesystem.squashfs astra-installer-preseed=tftp://192.168.56.1/astra-installer-preseed.yaml
        initrd se/initrd
    }
  }
  submenu "Live-загрузка Astra Linux Special Edtion 1.8 EFI" {
    menuentry "Установка Live-Astra Linux Special Edtion 1.8 EFI" {
        set background_color=red
        set gfxpayload=keep
        linux se/vmlinuz modprobe.blacklist=evbug boot=live astra-install=0 fetch=ftp://192.168.56.1/repo/01.08main/live/filesystem.squashfs nologin username=astra-live
        initrd se/initrd
    }
  }
}

submenu "Astra Linux предыдущие версии" {
  menuentry 'Install Astra Linux SE 1.7' {
      set background_color=black
      set root=(tftp)
      linux se/linux modprobe.blacklist=evbug auto=true priority=critical debian-installer/locale=en_US console-keymaps-at/keymap=ru hostname=se17 domain=my.dom astra-license/license=true url=tftp://192.168.56.1/01.07/preseed-lvm.lvm.cfg interface=auto netcfg/dhcp_timeout=60 mirror/ftp/directory=/repo/1.07/main astra_install=1
      initrd se/initrd.gz
  }

  menuentry 'Install Astra Linux CE 2.12.42' {
      set background_color=black
      linux    /ce/linux modprobe.blacklist=evbug auto=true priority=critical debian-installer/locale=en_US console-keymaps-at/keymap=ru hostname=ce212 domain=my.dom astra-license/license=true url=tftp://192.168.56.10/2.12/preseed.cfg interface=auto netcfg/dhcp_timeout=60
       initrd ce/initrd.gz
   }
}


Создание загрузочного меню для традиционной загрузки

  1. Создать каталог /srv/tftp/pxelinux.cfg/:

    sudo mkdir -p /srv/tftp/pxelinux.cfg

  2. Создать в этом каталоге файл /srv/tftp/pxelinux.cfg/default. Пример содержимого файла:

    Содержимое файла может зависеть от аппаратной конфигурации компьютеров, на которых выполняется установке.

    ui menu.c32
    # или альтернативная реализация меню:
    # ui vesamenu.c32
    PROMPT 0
     
    MENU TITLE PXE Boot menu
    # Таймаут для выполнения автоматической загрузки
    TIMEOUT 50
    DEFAULT local
      
    LABEL local
        MENU LABEL Boot from local drive
        kernel chain.c32
        append hd0
    
    # Astra Linux Special Edition 1.8
    # - ядро (kernel) находится в файле se/vmlinuz,
    # - initrd находится в файле se/initrd,
    # - файл автоматической установки (preseed) находится в файле se/preseed18.cfg
    LABEL netinstall
        MENU LABEL Start Astra Linux SE 1.8 net install
        kernel se/vmlinuz
         append initrd=se/initrd modprobe.blacklist=evbug auto=true priority=critical debian-installer/locale=en_US console-keymaps-at/keymap=ru hostname=se16 domain=my.dom astra-license/license=true url=tftp://192.168.56.1/se/preseed18.cfg interface=auto netcfg/dhcp_timeout=60 astra_install=1 vga=788 debian-installer/allow_unauthenticated=true nomodeset
    
    # Astra Linux Special Edition
    # - ядро (kernel) находится в файле se/linux,
    # - initrd находится в файле se/initrd.gz,
    # - файл автоматической установки (preseed) находится в файле se/preseed17.cfg
    LABEL netinstall
        MENU LABEL Start Astra Linux SE 1.7 net install
        kernel se/linux
        append initrd=se/initrd.gz modprobe.blacklist=evbug auto=true priority=critical debian-installer/locale=en_US console-keymaps-at/keymap=ru hostname=se16 domain=my.dom astra-license/license=true url=tftp://192.168.56.1/se/preseed17.cfg interface=auto netcfg/dhcp_timeout=60 astra_install=1 vga=788 debian-installer/allow_unauthenticated=true nomodeset
    
    # Astra Linux Common Edition
    # - файлы находятся в каталоге ce, имена файлов такие же, как для 1.7
    LABEL netinstall
        MENU LABEL Start Astra Linux CE net install
        kernel ce/linux
        append initrd=ce/initrd.gz modprobe.blacklist=evbug auto=true priority=critical debian-installer/locale=en_US console-keymaps-at/keymap=ru hostname=ce212 domain=my.dom astra-license/license=true url=tftp://192.168.56.1/ce/preseed.cfg interface=auto netcfg/dhcp_timeout=60 vga=788 debian-installer/allow_unauthenticated=true nomodeset

Важные параметры:

    1. hostname - имя хоста, которое будет использовано при автоматической установке ОС;

    2. domain - имя домена ;

    3. url - адрес, по которому должны быть доступны конфигурационные файлы. В данном примере используется протокол TFTP, однако можно использовать FTP или HTTP (файлы при этом должны быть размещены в соответствующих локациях).

    4. append ... astra_install=1 - параметр ядра astra_install=1 необходим для корректной установки Astra Linux Special Edition с включенным МКЦ.