Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление

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

Предполагается, что:

установка производится на компьютер клиент, подключенный к локальной сети;
  • в этой сети имеются:
    • настроенный FTP (TFTP) сервер, с которого можно загрузить установочный образ;
    • настроенный DHCP-сервер, выдающий клиентским компьютерам не только сетевые IP-адреса, но и другие сетевые параметры (в частности, IP-адрес TFTP-сервера, с которого будет загружаться установочный образ);
    • настроенные репозитории, из которых можно загружать пакеты. Для примера используются репозитории
      http://192.168.56.1/repo/smolensk
      и
      http://192.168.56.1/repo/orel
      Подробнее про настройку репозиториев см. Создание локального репозитория.
  • Информация
    Для упрощения изложения далее предполагается, что DHCP-сервер и TFTP-сервер располагаются на одном и том же компьютере. При необходимости серверы могут быть установлены на разных компьютерах

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

    клиент подключается к сети и запрашивает IP-адрес, передавая в запросе информацию о собственной конфигурации;


    Информация
    titleДанная статья применима к:
    • 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



    Предупреждение
    titleВнимание!
    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
    DHCP-сервер назначает клиенту IP-адрес и вместе с назначенным адресом передаёт клиенту дополнительные сетевые параметры, в том числа IP-адрес TFTP-сервера с необходимыми файлами;
  • клиент подключается к TFTP-серверу и загружает файлы.
  • Информация

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

    • ОС СН Смоленск 1.6
    • ОС ОН Орёл 2.12
    ИнформацияPXE (англ.Preboot eXecution Environment
    ) — среда для загрузки компьютеров с помощью сетевой карты без использования
    жёстких info
    жестких дисков, компакт-дисков и других устройств, применяемых при загрузке операционной системы.

    Подробная информация об автоматической
    установке с
    установке с помощью списка ответов:

    stretchs390xapbs01ru


    Примечание

    Описанная  в данной статье методика установки на виртуальных машинах может приводить к черному экрану после перезагрузки. Чтобы избежать этого рекомендуется использовать виртуальные графические адаптеры:

    • Виртуальный графический адаптер  VMSVGA для Oracle VirtualBox;
    • Виртуальный графический адаптер cirrus или qxl для Virt Manager.


    Подготовка инфраструктуры PXE на Astra Linux

    См. страницу Подготовка инфраструктуры PXE на Astra Linux

    Автоматическая установка с помощью файла preseed

    Hide If
    special@anonymous


    Информация

    Начиная с обновления 1.7.4 при сетевой установке с технологического установочного диска (ТУД) автоматически вызывается интерактивный диалог настройки network-console, предоставляющий возможность переключения дальнейшего выполнения установки под удаленное управление с использованием протокола SSH. Если эта возможность не требуется (требуется полное завершение установки с помощью файла preseed без интерактивного взаимодействия), то  отключить вызов network-console можно задав в файле выбора устанавливаемой ОС /srv/tftp/pxelinux.cfg/default параметр ядра network-console/enable=false, например:

    Блок кода
    append initrd=se/initrd.gz network-console/enable=false



    Файлы preseed представляют собой заранее подготовленные ответы на вопросы установщика ОС. Их использование позволяет обеспечить полностью автоматическую установку с заранее заданной конфигурацией.

    Ссылки для скачивания файлов:

    Файл после скачивания скопировать в каталог установочных файлов соответствующего дистрибутива под именем preseed.cfg, например:

    Информация
    sudo cp preseed_se16.cfg /srv/tftp/se/preseed.cfg

    или

    Информация
    sudo cp preseed_ce.cfg /srv/tftp/ce/preseed.cfg

    Важные параметры файла preseed:

    1. Пути к репозиториям пакетов:

      Информация
      Порядок настройки репозиториев пакетов см. в статье Создание локальных и сетевых репозиториев.


      1. Пример путь к HTTP-репозиторию с пакетами для установки:

        Блок кода
        # Репозиторий для установки
        # Если вы выберете ftp, то mirror/country string устанавливать не обязательно
        d-i mirror/protocol string http
        d-i mirror/country string manual
        d-i mirror/http/hostname string 192.168.56.1
        # для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
        d-i mirror/http/directory string /repo/se
        # или, вариант для Astra Linux Common Edition 2.12
        #d-i mirror/http/directory string /repo/ce
        d-i mirror/http/proxy string


      2. Пример указания пути для FTP-репозиториев:

        Блок кода
        d-i mirror/protocol string ftp
        d-i mirror/ftp/hostname string 192.168.56.1
        d-i mirror/ftp/directory string /repo/se
        # или, вариант для Astra Linux Common Edition 2.12
        #d-i mirror/ftp/directory string /repo/ce
        d-i mirror/ftp/proxy string


    2. Часовой пояс:

      Блок кода
      # Здесь можно указать любое допустимое значение для $TZ; смотрите
      # допустимые значения в файле /usr/share/zoneinfo/.
      d-i time/zone string Europe/Moscow


    3. В следующем блоке подготавливаются разделы на жестком диске (по умолчанию стоит автоматическое создание с использованием всего диска, с одним корневым разделом и разделом подкачки (см. Область подкачки (swap): особенности применения и обеспечения безопасности)):

      Раскрыть
      #Если система имеет свободное место, вы можете выбрать для разметки
      # только его.
      # Замечание: нужно указывать локализованные (переведённые) значения.
      #d-i partman-auto/init_automatically_partition \
      # select Авто - использовать наибольшее свободное место

      #Или же, вы можете задать размечаемый диск. Имя устройства
      # должно задаваться в обычном не-devfs формате.
      # Например, для использования первого жёсткого диска SCSI/SATA:
      #d-i partman-auto/disk string /dev/sda
      # Замечание: если вы хотите использовать любой доступный диск, не важно
      # какое у него имя, закоммерируйте строку выше. Она работает только если
      # в системе один жёсткий диск.
      # Также, вы можете указать какой метод использовать.
      # Доступные методы: "regular", "lvm" и "crypto"
      d-i partman-auto/method string regular

      # Автоматическая установка на компьютеры с уже установленной ОС в режиме UEFI без запроса подтверждения
      # d-i partman-efi/non_efi_system boolean true

      # Если один из дисков, который нужно разметить с помощью автоматической
      # разметки, содержит старую конфигурацию LVM, то пользователю выдаётся
      # предупреждение. Ответ можно автоматизировать...
      d-i partman-auto/purge_lvm_from_device boolean true
      # И подтвердить запись lvm разделов.
      d-i partman-lvm/confirm boolean true

      # Вы можете выбрать любой из имеющихся наборов разметки.
      # Замечание: он должен содержать локализованные (переведённые) значения.
      # Расскомментируйте ниже нужный тип разметки

      # Для режима legacy bios:
      d-i partman-auto/choose_recipe select atomic

      # Для режима UEFI:
      # d-i partman-auto/choose_recipe select /lib/partman/recipes-amd64-efi/30atomic

      # Этот параметр заставляет partman выполнить разметку автоматически
      # без подтверждения.
      d-i partman/confirm_write_new_label boolean true
      d-i partman/choose_partition select finish
      d-i partman/confirm boolean true
      d-i partman-auto-crypto/erase_disks boolean true
      d-i partman-basicfilesystems/no_swap boolean true
      d-i partman-target/mount_failed boolean true
      d-i partman-partitioning/unknown_label boolean true
      d-i partman-auto/purge_lvm_from_device string true
      d-i partman-lvm/vgdelete_confirm boolean true
      d-i partman/confirm_write_new_label string true
      d-i partman-lvm/confirm boolean true
      d-i partman/confirm_nooverwrite boolean true


    4. Создание пользователя (user) и задание пароля:

      Предупреждение

      Не рекомендуется использовать пароли в виде открытого текста.
      В примере ниже использован вариант с указанием пароля 12345678 в виде открытого текста, и вариант с указанием хеша. Получить хеш пароля можно командой:

      Command
      openssl passwd -1

      Эта команда запросит ввод пароля и выведет на экран кеш этого пароля.


      Блок кода
      # Создать учётную запись обычного пользователя.
      d-i passwd/user-fullname string u
      d-i passwd/username string u
      
      # Пароль обычного пользователя, или открытым текстом
      #d-i passwd/user-password password 12345678
      #d-i passwd/user-password-again password 12345678
      
      # или в виде MD5 хеша.
      d-i passwd/user-password-crypted password $1$EPkHS/dI$0tl23aI/oMBBNdBVZP0o.1


    5. Устанавливаемые компоненты:

      Блок кода
      tasksel tasksel/first multiselect Base, Fly
      # Доступные компоненты и входящие в них пакеты можно посмотреть в /usr/share/tasksel/debian-tasks.desc

      Дополнительно устанавливаемые пакеты можно указать в: 

      Блок кода
      # Отдельные дополнительные пакеты для установки
      d-i pkgsel/include string openssh-server 


    6. Установка загрузчика. По умолчанию, загрузчик ставится на первый диск в MBR. Но в Astra Linux Common Edition 2.12 необходимо указать вручную, на какой диск ставить загрузчик:

      Блок кода
      #  В ОС ALCE необходимо указывать на какой диск ставить загрузчик
      grub-installer  grub-installer/choose_bootdev   select  /dev/sda
      d-i grub-pc/install_devices multiselect /dev/sda
      
      # По умолчанию grub ставится на первый диск
      # Или же, если вы хотите установить загрузчик не в mbr,
      # то раскомментируйте и отредактируйте следующие строки:
      #d-i grub-installer/only_debian boolean false
      #d-i grub-installer/with_other_os boolean false
      #d-i grub-installer/bootdev  string (hd0,0)
      #d-i grub-pc/install_devices multiselect /dev/sda
      # Для установки grub на несколько дисков:
      #d-i grub-installer/bootdev  string (hd0,0) (hd1,0) (hd2,0)
      


    7. Пароль для загрузчика:

      Предупреждение

      Не рекомендуется использовать пароли в виде открытого текста.
      В примере ниже использован пароль 12345678 и его хеш. Получить хеш пароля можно командой:

      Command
      openssl passwd -1

      Эта команда запросит ввод пароля и выведет на экран кеш этого пароля.
      Не указывайте пароль в виде открытого текста!


      Блок кода
      # Необязательный пароль на grub, или в виде открытого текста
      #d-i grub-installer/password password 12345678
      #d-i grub-installer/password-again password 12345678
      #grub-installer grub-installer/password-mismatch error
      # или в виде хеша пароля по алгоритму MD5, смотрите grub-md5-crypt(8).
      d-i grub-installer/password-crypted password $1$EPkHS/dI$0tl23aI/oMBBNdBVZP0o.1
      


    8. Выполнение команд перед завершением установки и перезагрузкой компьютера, например включить ssh сервер:

      Блок кода
      # Эта команда выполняется перед окончанием установки, пока ещё
      # есть рабочий каталог /target. Вы можете выполнить chroot в /target
      # и непосредственно использовать его, или же воспользоваться командами
      # apt-install и in-target для облегчения задачи установки пакетов и
      # запуска команд в целевой системе.
      d-i preseed/late_command string in-target systemctl enable ssh.service


    Теперь, если подключить машину к этой сети и настроить в BIOS/UEFI загрузку по сети, автоматически запустится установка Astra Linux . Так же можно установить систему вручную, ответив на все вопросы, и после установки выполнить команды:

    Command

    sudo debconf-get-selections --installer > preseed.new
    sudo debconf-get-selections >> preseed.new

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

    Автоматическая установка обновлений после установки системы

    В Astra Linux Common Edition 2.12 можно выполнить обновление указав команды обновления в параметре late-command:

    Блок кода
    d-i preseed/late_command string in-target apt update; in-target apt dist-upgrade;

    В Astra Linux Special Edition для автоматической установки обновлений нужно создать файл update.service в корне ftp или http сервера с таким содержимым:

    Блок кода
    [Unit]
    Description=Update system
    After=rc-local.service network-online.target
    Before=getty.target
    Before=systemd-user-sessions.service
    
    [Service]
    StandardOutput=tty
    Type=oneshot
    ExecStart=/usr/local/bin/update.sh
    
    [Install]
    WantedBy=multi-user.target

    Там же создать файл update.sh в котором должны быть указаны репозитории с обновлениями. Репозитории могут размещаться где угодно, важно только правильно указать путь к ним:

    Блок кода
    #!/bin/bash
    
    clear
    # вносим в /etc/apt/sources.list используемые репозитории (для примера - репозиторий server, работающий по протоколу ftp):
    echo "deb ftp://server/repo/se/mounted-iso-main smolensk main contrib non-free" > /etc/apt/sources.list
    echo "deb ftp://server/repo/se/mounted-iso-devel smolensk main contrib non-free" >> /etc/apt/sources.list
    echo "deb ftp://server/repo/se/repository-update smolensk main contrib non-free" >> /etc/apt/sources.list
    echo "deb ftp://server/repo/se/repository-update-dev smolensk main contrib non-free"  >> /etc/apt/sources.list
    
    echo "Updating system, please wait..."
    echo "Do not turn off your computer!"
    apt-get update &> /dev/null
    apt-get -y dist-upgrade &> /dev/null
    apt-get -y install chromium &> /dev/null
    rm -f /etc/systemd/system/multi-user.target.wants/update.service
    systemctl daemon-reload
    rm -f /usr/local/bin/update.sh
    reboot

    а в файл preseed в конец добавить команды для загрузки и запуска созданных файлов:

    Блок кода
    d-i preseed/late_command string in-target systemctl enable ssh ; \
                                    in-target wget -O /usr/local/bin/update.sh ftp://10.0.2.20/se/update.sh; \
                                    in-target chmod +x /usr/local/bin/update.sh; \
                                    in-target wget -O /lib/systemd/system/update.service ftp://10.0.2.20/se/update.service; \
                                    in-target systemctl enable update.service;

    Если всё сделано корректно - то после завершения установки ОС, после первой перезагрузки выполнится сценарий обновления, самоудалится и перезагрузит машину.


    Автоматическая разметка дисковых разделов с помощью partman-auto

    См. страницу Автоматическая разметка дисковых разделов с помощью partman-auto

    Особенности настройки параметров сети

    Eсли файл ответов загружается из сети, то настройка параметров сети выполняется до загрузки файла ответов, и параметры настройки сети, заданные в этом файле, игнорируются. То есть, настройка сети с помощью файла ответов по умолчанию применима если загрузка происходит с компакт-диска или USB-накопителя. При загрузке файла ответов из сети можно только указать используемый для загрузки файлов ответов сетевой интерфейс, для чего используется параметр ядра interface, например interface=eth1.

    Принудительно выполнить перенастройку сети (например, задать статический адрес) с помощью файла ответов после завершения установки по сети можно следующим способом:

    1. Создать на ftp-сервере сценарий со следующим содержимым:

      Блок кода
      #!/bin/sh
      kill-all-dhcp; netcfg

      При выполнении этого сценария будут отключены службы автоматической настройки сети через DHCP и выполнены директивы netcfg из файла ответов (список возможных директив см. ниже).


    2. Сделать файл с созданным сценарием исполняемым:

      Command
      sudo chmod +x <имя_файла_со_сценарием>


    3. Добавить следующую строку в файл ответов непосредственно перед статической настройкой сети:

      Блок кода
      d-i preseed/run string ftp://<путь_к_файл_со_сценарием>


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

    Пер

    ПеременнаяОписание
    d-i netcfg/enable boolean falseПолностью  выключить настройку сети. Это полезно при установке на устройства, не имеющие сети, когда вопросы о сети неуместны.
    d-i netcfg/choose_interface select autoАвтоматический выбор активного сетевого интерфейса, если такой имеется. Если имеется более одного интерфейса, то при данной настройке список интерфейсов выводиться не будет.
    d-i netcfg/choose_interface select eth1Принудительный выбор указанного сетевого интерфейса (в данном случае - интерфейс eth1).
    d-i netcfg/link_wait_timeout string 10Время ожидания появления связи (link) (по умолчанию 3 секунды). Значение указывается в секундах.
    d-i netcfg/dhcp_timeout string 60
    d-i netcfg/dhcpv6_timeout string 60
    Время ожидания параметров DHCP
    d-i netcfg/disable_autoconfig boolean trueОтключение автоматической настройки сети, переход к ручной настройке.
    d-i netcfg/dhcp_failed note
    d-i netcfg/dhcp_options select Configure network manually 
    Игнорирование отсутствия DHCP-сервера

    d-i netcfg/get_nameservers string 192.168.1.1
    d-i netcfg/get_ipaddress string 192.168.1.42
    d-i netcfg/get_netmask string 255.255.255.0
    d-i netcfg/get_gateway string 192.168.1.1
    d-i netcfg/confirm_static boolean true

    Статические настройки параметров сети (пример для IPv4).
    d-i netcfg/get_ipaddress string fc00::2
    d-i netcfg/get_netmask string ffff:ffff:ffff:ffff::
    d-i netcfg/get_gateway string fc00::1
    d-i netcfg/get_nameservers string fc00::1
    d-i netcfg/confirm_static boolean true 
    Статические настройки параметров сети (пример для IPv6).
    d-i netcfg/hostname string somehostПринудительное задание имени хоста (значения, предлагаемые DHCP  или реверсивным DNS игнорируются).
    d-i netcfg/wireless_wep stringВыключение диалога о ключе WEP
    d-i netcfg/dhcp_hostname string radishСпециальное имя DHCP-сервера, которое используют некоторые провайдеры в качестве некоего пароля.
    d-i hw-detect/load_firmware boolean trueРазрешение загрузки несвободных микропрограмм без запроса подтверждения (или значение false для запрета загрузки).
    netcfg/get_netmask string 255.255.255.0Принудительное задание маски сети. Если не задано, то маска выбирается автоматически.
    netcfg/get_gateway string 192.168.1.1Принудительное задание адреса сетевого шлюза. Если не задано, то адрес сетевого шлюза выбирается автоматически. Специальное значение none указывает, что шлюз не используется.


    Якорь
    preseed1.7
    preseed1.7
    Пример файла preseed для Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.7

    Полный текст файла preseed для Astra Linux Special Edition 1.7 см. на странице Пример файла preseed для Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.7.

    Особенности настройки:

    1. Загрузка выполняется из Интернет-репозитория Astra Linux Special Edition РУСБ.10015-01 очередное обновление 1.7 (см. Интернет-репозитории Astra Linux Special Edition x.7);
    2. Установка выполняется с раздельными дисковыми разделами для корневого каталога и каталогов /boot и /tmp и без создания раздела подкачки (подробнее про рекомендованную структуру разделов см. Рекомендации по безопасной установке и эксплуатации Astra Linux):

      Блок кода
      d-i partman-auto/expert_recipe string myroot :: \
           512 16384 512 ext2 \
               $primary{ } $bootable{ } \
               method{ format } format{ } use_filesystem{ } filesystem{ ext2 } mountpoint{ /boot } .\
           8192 16384 16384 ext4 \
               method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /     } .\
           2048 16384 2048 ext4 \
               method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /tmp  } options/noexec{ noexec } options/nodev{ nodev } options/nosuid{ nosuid } .\
           500 8192 -1 ext4 \
               method{ format } format{ } use_filesystem{ } filesystem{ ext4 } mountpoint{ /home } . 
      d-i partman-auto/choose_recipe select myroot


    3. Установка ПО выполняется в минимальной конфигурации (только базовые пакеты Base packages и графическая оболочка Fly desktop), дополнительно устанавливается служба SSH Server для обеспечения возможности удаленного управления компьютером:

      Блок кода
      tasksel tasksel/first multiselect Base packages, Fly desktop, SSH server

      Установка ПО Astra Linux Directory (ALD) не выполняется;

    4. Создается пользователь-администратор с именем astra и паролем 12345678;
       
    5. В примере файла ОС устанавливается c максимальным уровнем защищенности, однако возможны варианты:
      1. Максимальный уровень защищенности:

        Блок кода
        d-i astra-additional-setup/os-check select Maximum security level Smolensk


      2. Усиленный уровень защищенности:

        Блок кода
        d-i astra-additional-setup/os-check select Advanced security level Voronezh


      3. Базовый уровень защищенности:

        Блок кода
        d-i astra-additional-setup/os-check select Base security level Orel


    6. Если это позволяет выбранный уровень защищенности, то могут быть включены МРД и МКЦ. Также может быть запрещена трассировка:
      1. Максимальный уровень защищенности:

        Блок кода
        d-i astra-additional-setup/additional-settings-smolensk multiselect Enable Mandatory Integrity Control, Enable Mandatory Access Control, Disable ptrace capability


      2. Усиленный уровень защищенности:

        Блок кода
        d-i astra-additional-setup/additional-settings-voronezh multiselect Enable Mandatory Integrity Control, Disable ptrace capability


      3. Базовый уровень защищенности:

        Блок кода
        d-i astra-additional-setup/additional-settings-orel multiselect Disable ptrace capability


    7. При установке выполняется синхронизация времени:

      Блок кода
      d-i clock-setup/ntp boolean true
      d-i clock-setup/ntp-server string ntp2.vniiftri.ru


    8. После установки:
        1. Удалятся серверная служба синхронизации времени ntp, и включается клиентская служба синхронизации времени systemd-timesyncd.service (см. Службы синхронизации времени в Astra Linux):
      Блок кода
      d-i preseed/late_command string in-target apt purge -y ntp ; \
                                      in-target systemctl enable systemd-timesyncd.service ; \
      
      1. Удаляются созданные при установке сетевые подключения:

        Блок кода
        in-target rm -f /etc/NetworkManager/system-connections/*; 

        (сетевые подключения будут автоматически созданы при включении компьютера после установки).



    Загрузка по сети в режиме восстановления (rescue mode)

    Предупреждение
    Разрешение загрузки (локально или по сети) в режиме восстановления существенно снижает защищенность информационной системы, предоставляя неограниченных доступ анонимным пользователям.

    Для того, чтобы предоставить пользователям возможность загрузки компьютеров в режиме восстановления следует создать в файле pxelinux.cfg/default элемент меню, ссылающийся на файл preseed. Например, для файла с именем preseed.cfg:

    Блок кода
    LABEL netinstall
        MENU LABEL Start Astra Linux 1.07.02 rescue
        kernel 1.07.00/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 rescue/enable=true

    От ранее приведенных примеров меню данный пример отличается добавленной опцией:

    Блок кода
    rescue/enable=true

    включающей загрузку в режиме восстановления

    Настройка DHCP/TFTP-сервера

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

    Command
    sudo apt install isc-dhcp-server tftpd-hpa pxelinux syslinux

    Где:

    • Пакеты для DHCP-сервера:
      • isc-dhcp-server - DНCP-севрер;
    • Пакеты для TFTP-сервера:
      • tftpd-hpa - TFTP-server;
      • pxelinux - загрузчик для сетевой загрузки PXE;
      • syslinux - загрузчик для сетевой загрузки DOS FAT / NTFS;

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

    Пропишем наш сетевой интерфейс в /etc/default/isc-dhcp-server:

    Блок кода
    INTERFACESv4="eth0"

    Настроим /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 8.8.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 ;
    if option architecture = 00:07 {
      filename "bootx64.efi"; 
    } elsif option architecture = 00:09 {
      filename "bootx64.efi";
    } else {
      filename "pxelinux.0"; 
    }
    
    subnet 192.168.56.0 netmask 255.255.255.0 {
        range 192.168.56.20 192.168.56.250;
        option domain-name "example.com";
        option broadcast-address 192.168.56.255;
        option routers 192.168.56.1;
        option subnet-mask 255.255.255.0;
    }  

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

    • pxelinux.0;
    • библиотеки syslinux;
    • ядро ОС;
    • специальный initrd.

    Эти файлы находятся на установочном диске в каталоге netinst. Скопируем ядро и initrd  в /srv/tftp/.

    Для Astra Linux SE Смоленск (в примере ниже предполагается, что основной установочный диск находится в приводе компакт дисков):

    Command

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

    Для Astra Linux CE Орел (предполагается, что образ установочного диска нходтся в файле orel.iso):

    Command

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

    Скопируем файл pxelinux.0 и необходимые библиотеки syslinux:
    Command

    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} /srv/tftp/

    Создадим каталог:

    Command

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

    И создадим файл /srv/tftp/pxelinux.cfg/default со следующим содержимым:

    Блок кода
    ui menu.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 SE Smolensk
    LABEL netinstall
        MENU LABEL Start Astra Linux Smolensk net install
        kernel smolensk/linux
        append initrd=smolensk/initrd.gz modprobe.blacklist=evbug auto=true priority=critical debian-installer/locale=en_US console-keymaps-at/keymap=ru hostname=astra16 domain=my.dom astra-license/license=true url=http://192.168.56.1/repo/smolensk/preseed.cfg interface=auto netcfg/dhcp_timeout=60
    # Astra Linux CE Orel
    LABEL netinstall
        MENU LABEL Start Astra Linux Orel net install
        kernel orel/linux
        append initrd=orel/initrd.gz modprobe.blacklist=evbug auto=true priority=critical debian-installer/locale=en_US console-keymaps-at/keymap=ru hostname=orel212 domain=my.dom astra-license/license=true url=http://192.168.56.1/repo/orel/preseed.cfg interface=auto netcfg/dhcp_timeout=60

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

    Для загрузки в режиме UEFI служит специальный EFI образ загрузчика grub: скачать

    Распакуйте архив netinst.tar.gz в /srv/tftp

    Command

    sudo tar xvf netinst.tar.gz -C /srv/tftp

    Рассмотрим конфигурационный файл /srv/tftp/debian-installer/amd64/grub/grub.cfg

    Блок кода
    if loadfont $prefix/font.pf2 ; then
      set gfxmode=800x600
      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 "Boot default EFI bootloader" {
     set background_color=black
     regexp -s root '\((.+)\)' "$cmdpath"
     chainloader /EFI/Boot/Bootx64.efi
    }
    
    # Установка Astra Linux SE Смоленск
    menuentry 'Install Astra Linux SE Smolensk' {
        set background_color=black
        linux    /smolensk/linux modprobe.blacklist=evbug debian-installer/allow_unauthenticated=true auto=true priority=critical debian-installer/locale=en_US console-keymaps-at/keymap=ru hostname=test2 domain=my.dom astra-license/license=true url=ftp://192.168.56.1/repo/smolensk/preseed.cfg interface=auto netcfg/dhcp_timeout=60
        initrd   /smolensk/initrd.gz
    }
    # Установка Astra Linux CE Орел
    menuentry 'Install Astra Linux CE Orel' {
        set background_color=black
        linux    /orel/linux modprobe.blacklist=evbug debian-installer/allow_unauthenticated=true auto=true priority=critical debian-installer/locale=en_US console-keymaps-at/keymap=ru hostname=test2 domain=my.dom astra-license/license=true url=ftp://192.168.56.1/orel/preseed.cfg interface=auto netcfg/dhcp_timeout=60
        initrd   /orel/initrd.gz
    }
    
    

    По умолчанию стоит загрузка образа EFI из EFI/Boot/Bootx64.efi (на некоторых системах может быть иначе), что бы избежать повторной автоматической установки, после завершения первой, или случайной установки на компьютер с уже установленной ОС, подключенный к этой же сети.

    Перезапускаем сервисы:

    Command

    sudo systemctl restart isc-dhcp-server
    sudo systemctl restart tftpd-hpa

    Автоматическая установка с помощью файла preseed.cfg

    Файл preseed.cfg для Astra Linux SE Смоленск 1.6: preseed_smol.cfg

    Файл preseed.cfg для Astra Linux CE Орел 2.12: preseed_orel.cfg

    Файл после скачивания скопировать каталог соответствующего дистрибутива под именем preseed.cfg:

    Информация
    sudo cp preseed_smol.cfg /srv/repo/smolensk/preseed.cfg

    или

    Информация
    sudo cp preseed_orel.cfg /srv/repo/orel/preseed.cfg

    Разберем важные параметры файла preseed:

    Указываем путь к репозиторию с установочными файлами. Если используется протокол ftp меняем http на ftp и раскомментируем строку d-i mirror/protocol string ftp. 

    Блок кода
    # Если вы выберете ftp, то mirror/country string устанавливать не нужно.
    #d-i mirror/protocol string ftp
    d-i mirror/country string manual
    d-i mirror/http/hostname string 192.168.56.1
    d-i mirror/http/directory string /repo/smolensk/main
    d-i mirror/http/proxy string

    Устанавливаем часовой пояс

    Блок кода
    # Здесь вы можете указать любое допустимое значение для $TZ; смотрите
    # допустимые значения в файле /usr/share/zoneinfo/.
    d-i time/zone string Europe/Moscow

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

    Раскрыть#Если система имеет свободное место, вы можете выбрать для разметки
    # только его.
    # Замечание: нужно указывать локализованные (переведённые) значения.
    #d-i partman-auto/init_automatically_partition \
    # select Авто - использовать наибольшее свободное место
    #Или же, вы можете задать размечаемый диск. Имя устройства
    # должно задаваться в обычном не-devfs формате.
    # Например, для использования первого жёсткого диска SCSI/SATA:
    #d-i partman-auto/disk string /dev/sda
    # Замечание: если вы хотите использовать любой доступный диск, не важно
    # какое у него имя, закоммерируйте строку выше. Она работает только если
    # в системе один жёсткий диск.
    # Также, вы можете указать какой метод использовать.
    # Доступные методы: "regular", "lvm" и "crypto"
    d-i partman-auto/method string regular
    # Если один из дисков, который нужно разметить с помощью автоматической
    # разметки, содержит старую конфигурацию LVM, то пользователю выдаётся
    # предупреждение. Ответ можно автоматизировать...
    d-i partman-auto/purge_lvm_from_device boolean true
    # И подтвердить запись lvm разделов.
    d-i partman-lvm/confirm boolean true
    # Вы можете выбрать любой из имеющихся наборов разметки.
    # Замечание: он должен содержать локализованные (переведённые) значения.
    # Расскомментируйте ниже нужный тип разметки
    # Для режима legacy bios:
    d-i partman-auto/choose_recipe select atomic
    # Для режима UEFI:
    # d-i partman-auto/choose_recipe select /lib/partman/recipes-amd64-efi/30atomic
    # Этот параметр заставляет partman выполнить разметку автоматически
    # без подтверждения.
    d-i partman/confirm_write_new_label boolean true
    d-i partman/choose_partition select finish
    d-i partman/confirm boolean true
    d-i partman-auto-crypto/erase_disks boolean true
    d-i partman-basicfilesystems/no_swap boolean true
    d-i partman-target/mount_failed boolean true
    d-i partman-partitioning/unknown_label boolean true
    d-i partman-auto/purge_lvm_from_device string true
    d-i partman-lvm/vgdelete_confirm boolean true
    d-i partman/confirm_write_new_label string true
    d-i partman-lvm/confirm boolean true
    d-i partman/confirm_nooverwrite boolean trueСоздание пользователя user и задание пароля:
    Блок кода
    # Создать учётную запись обычного пользователя.
    d-i passwd/user-fullname string user
    d-i passwd/username string user
    
    # Пароль обычного пользователя, или открытым текстом
    d-i passwd/user-password password 12345678
    d-i passwd/user-password-again password 12345678

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

    Блок кода
    tasksel tasksel/first multiselect Base, Fly
    # Доступные компоненты и входящие в них пакеты можно посмотреть в /usr/share/tasksel/debian-tasks.desc

    Дополнительно устанавливаемые пакеты можно указать в: 

    Блок кода
    # Отдельные дополнительные пакеты для установки
    d-i pkgsel/include string openssh-server 

    Установка загрузчика. По умолчанию, загрузчик ставится на первый диск в MBR. Но в Astra Linux CE Орел необходимо указать вручную, на какой диск ставить загрузчик:

    Блок кода
    #  В ОС ALCE Орел необходимо указывать на какой диск ставить загрузчик
    grub-installer  grub-installer/choose_bootdev   select  /dev/sda
    d-i grub-pc/install_devices multiselect /dev/sda
    
    # По умолчанию grub ставится на первый диск
    # Или же, если вы хотите установить загрузчик не в mbr,
    # то раскомментируйте и отредактируйте следующие строки:
    #d-i grub-installer/only_debian boolean false
    #d-i grub-installer/with_other_os boolean false
    #d-i grub-installer/bootdev  string (hd0,0)
    #d-i grub-pc/install_devices multiselect /dev/sda
    # Для установки grub на несколько дисков:
    #d-i grub-installer/bootdev  string (hd0,0) (hd1,0) (hd2,0)
    
    

    Пароль для загрузчика:

    Блок кода
    # Необязательный пароль на grub, или в виде открытого текста
    d-i grub-installer/password password 12345678
    d-i grub-installer/password-again password 12345678
    
    
    Самый последний параметр позволяет выполнить команды перед завершением установки и перезагрузки компьютера, например включить ssh сервер:
    Блок кода
    # Эта команда выполняется перед окончанием установки, пока ещё
    # есть рабочий каталог /target. Вы можете выполнить chroot в /target
    # и непосредственно использовать его, или же воспользоваться командами
    # apt-install и in-target для облегчения задачи установки пакетов и
    # запуска команд в целевой системе.
    d-i preseed/late_command string in-target systemctl enable ssh.service

    Теперь, если подключить машину к этой сети и настроить в BIOS/UEFI загрузку по сети, автоматически запустится установка Astra Linux . Так же можно, установить систему, вручную ответив на все вопросы и после установки выполнить  

    Command

    debconf-get-selections --installer > preseed.new
    debconf-get-selections >> preseed.new

    Это создаст файл preseed.new с готовыми ответами, который можно использовать при следующих установках.

    Автоматическая установка обновлений после установки системы

    В ОС ОН Орёл можно выполнить обновление указав в late-command:

    Блок кода
    d-i preseed/late_command string in-target apt update; in-target apt dist-upgrade;

    В ОС СН Смоленск  для автоматической установки обновлений нужно создать файл update.service в корне ftp или http сервера с таким содержимым:

    Блок кода
    [Unit]
    Description=Update system
    After=rc-local.service network-online.target
    Before=getty.target
    Before=systemd-user-sessions.service
    
    [Service]
    StandardOutput=tty
    Type=oneshot
    ExecStart=/usr/local/bin/update.sh
    
    [Install]
    WantedBy=multi-user.target

    Там же создать файл /usr/local/bin/update.sh c таким содержимым:

    Блок кода
    #!/bin/bash
    
    clear
    # тут добавляем в /etc/apt/sources.list наши репозитории 
    echo "deb ftp://repo/smolensk/mounted-iso-main smolensk main contrib non-free" > /etc/apt/sources.list
    echo "deb ftp://repo/smolensk/mounted-iso-devel smolensk main contrib non-free" >> /etc/apt/sources.list
    echo "deb ftp://repo/smolensk/repository-update smolensk main contrib non-free" >> /etc/apt/sources.list
    echo "deb ftp://repo/smolensk/repository-update-dev smolensk main contrib non-free"  >> /etc/apt/sources.list
    
    echo "Updating system, please wait..."
    echo "Do not turn off your computer!"
    apt-get update &> /dev/null
    apt-get -y dist-upgrade &> /dev/null
    apt-get -y install chromium &> /dev/null
    rm -f /etc/systemd/system/multi-user.target.wants/update.service
    systemctl daemon-reload
    rm -f /usr/local/bin/update.sh
    reboot

    а в preseed.conf в конец добавляем:

    Блок кода
    d-i preseed/late_command string in-target wget -O /usr/local/bin/update.sh ftp://192.168.56.1/update.sh; \
                                    in-target chmod +x /usr/local/bin/update.sh; \
                                    in-target wget -O /lib/systemd/system/update.service ftp://192.168.56.1/update.service; \
                                    in-target systemctl enable update.service;
    Выполняем установку, после первой перезагрузки выполнится наш скрипт, самоудалится и перезагрузит машину. Готово.