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

  • 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.

Установка и настройка службы 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 располагается в файле debian-installer/grub/grub.cfg. Пример меню:

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

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. Пример содержимого файла:

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

  3. 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 с включенным МКЦ.

  4. Для применения сделанных изменений перезапустить службы:

    sudo systemctl restart isc-dhcp-server # если используется
    sudo systemctl restart tftpd-hpa