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

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

Ключ

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

Оглавление

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

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

  • установка производится на компьютер клиент, подключенный к локальной сети;

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

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

клиент подключается к сети и запрашивает IP-адрес, передавая в запросе информацию о собственной конфигурации;
DHCP-сервер назначает клиенту IP-адрес и вместе с назначенным адресом передаёт клиенту дополнительные сетевые параметры, в том числа IP-адрес TFTP-сервера с необходимыми файлами сценариев установки;
клиент подключается к TFTP-серверу и загружает файлы со сценариями установки;
  • клиент выполняет установку в соответствии с полученными сценариями.
  • Предупреждение

    Установка выполняется с заранее заданными фиксированными именами (имя хоста, имя пользователя, пароль пользователя).
    Рекомендуется после установки сменить имена и пароли.

    Информация

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

    • ОС СН Смоленск 1.6
    • ОС ОН Орёл 2.12
    Информация
    PXE (англ.Preboot eXecution Environment) — среда для загрузки компьютеров с помощью сетевой карты без использования жёстких дисков, компакт-дисков и других устройств, применяемых при загрузке операционной системы.
    Информация
    Подробная информация об автоматической установке с помощью списка ответов:
    https://www.debian.org/releases/stretch/s390x/apbs01.html.ru
    Примечание

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

    • VMSVGA для Oracle VirtualBox;
    • cirrus или qlx для Virt Manager
        • orel
      • настроенные разделяемые сетевые ресурсы, из которых можно загружать пакеты. Для загрузки могут использоваться протоколы FTP или HTTP.

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

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

        • http://192.168.56.1/repo/smolensk
        • http://192.168.56.1/repo/orel
    Информация

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

    • в первом случае это источники установочных файлов и и файлов для первичной загрузки, работающий по протоколу TFTP. Размещаются в каталоге /srv/tftp/;
    • во втором случае (репозиторий пакетов), работающий по протоколу HTTP. Размещается, например, в каталоге /srv/repo или  в кателоге /var/www/html/repo. Подробнее про создание и настройку репозитория HTTP см. Создание локальных и сетевых репозиториев.


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

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

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

    • DHCP-сервер назначает клиенту IP-адрес и вместе с назначенным адресом передаёт клиенту дополнительные сетевые параметры, в том числа IP-адрес TFTP-сервера с необходимыми файлами сценариев установки;

    • клиент подключается к TFTP-серверу и загружает файлы со сценариями установки;

    • клиент выполняет установку в соответствии с полученными сценариями.


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

    Установка выполняется с заранее заданными фиксированными именами (имя хоста, имя пользователя, пароль пользователя).
    Рекомендуется после установки сменить имена и пароли.



    Информация
    titleДанная статья применима к:
    • Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)

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

    • Astra Linux Common Edition 2.12


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


    Информация
    Подробная информация об автоматической установке с помощью списка ответов:
    https://www.debian.org/releases/stretch/s390x/apbs01.html.ru


    Примечание

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

    • VMSVGA для Oracle VirtualBox;
    • cirrus или qxl для Virt Manager




    Установка и настройка 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;

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

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

    Настройка службы 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;
    }  


    После внесения изменений в настройки перезапустим сервис:

    Command
    sudo systemctl restart isc-dhcp-server

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

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

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

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

    Command

    sudo mkdir -p       /srv/repo/smolensk/
    sudo mount /dev/sr0 /srv/repo/smolensk/
    sudo mkdir -p                                /srv/tftp/smolensk

    Установка и настройка 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;

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

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

    Настройка службы 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;
    }  

    После внесения изменений в настройки перезапустим сервис:

    Command
    sudo systemctl restart isc-dhcp-server

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

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

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

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

    Command

    sudo mkdir -p /srv/repo/smolensk/
    sudo mount /dev/sr0 /srv/repo/smolensk/
    sudo mkdir -p /srv/tftp/smolensk/
    sudo cp /srv/repo/smolensk/netinst/linux        /srv/tftp/smolensk/
    sudo cp /srv/repo/smolensk/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/orelsmolensk/netinst/linux linux     /srv/tftp/orelsmolensk/
    sudo cp /srv/repo/orelsmolensk/netinst/initrd.gz /srv/tftp/orelsmolensk/

    Для Astra Linux Common Edition:

    Если образ установочного диска находится в файле orel.isoСкопируем в каталог /srv/tftp файл pxelinux.0 и необходимые библиотеки syslinux:

    Command

    sudo cp mkdir -p       /usrsrv/librepo/PXELINUX/pxelinux.0 orel/
    sudo mount orel.iso /srv/repo/orel
    sudo mkdir -p                            /srv/tftp/orel/
    sudo cp /usrsrv/librepo/orel/netinst/linux     /srv/tftp/orel/
    sudo cp /srv/repo/orel/netinst/initrd.gz /srv/tftp/orel/


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

    Command

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

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

    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=tftp://192.168.56.1/repo/smolensksmolensk/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=tftp://192.168.56.1/repo/orel/preseed.cfg interface=auto netcfg/dhcp_timeout=60

    Обратите внимание на следующие параметры:

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


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

    Для загрузки в режиме 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=ftptftp://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=ftptftp://192.168.56.1/orel/preseed.cfg interface=auto netcfg/dhcp_timeout=60
        initrd   /orel/initrd.gz
    }
    
    

    Здесь так же следует обратить внимание на правильное указание имени домена и пути поиска файлов. При этом несмотря на указание в имени пути протокола FTP в самом деле используется протокол TFTP, что следует учесть, указывая имя файла.

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

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

    Command

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

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

    Файл preseed.cfg для Astra Linux SE Смоленск Special Edition РУСБ.10015-01 (очередное обновление 1.6):   preseed_smol.cfg

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

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

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

    или

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

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

    Указываем путь к HTTP-репозиторию с установочными файлами.

    Блок кода

    Устанавливаем часовой пояспакетами для установки:

    Блок кода
    # ЗдесьРепозиторий выдля можетеустановки
    # указать любое допустимое значение для $TZ; смотрите
    # допустимые значения в файле /usr/share/zoneinfo/.Если вы выберете ftp, то mirror/country string устанавливать не обязательно
    d-i mirror/protocol string http
    d-i mirror/country string manual
    d-i timemirror/http/zone string Europe/Moscow

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

    hostname string 192.168.56.1
    # для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
    d-i mirror/http/directory string /repo/smolensk
    # или, вариант для Astra Linux Common Edition 2.12
    #d-i mirror/http/directory string /repo/orel
    d-i mirror/http/proxy string

    Или вариант для FTP-репозиториев:

    Блок кода
    d-i mirror/protocol string ftp
    d-i mirror/ftp/hostname string 192.168.56.1
    d-i mirror/ftp/directory string /repo/smolensk
    # или, вариант для Astra Linux Common Edition 2.12
    #d-i mirror/ftp/directory string /repo/orel
    d-i mirror/ftp/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
    Раскрыть
    #Если система имеет свободное место, вы можете выбрать для разметки
    # только его.
    # Замечание: нужно указывать локализованные (переведённые) значения.
    #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/unknownchoose_labelpartition booleanselect truefinish
    d-i partman-auto/purge_/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 и задание пароля:

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

    Не рекомендуется использовать пароли в виде открытого текста.
    В примере ниже использован хэш хеш пароля 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

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

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

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

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

    Установка загрузчика. По умолчанию, загрузчик ставится на первый диск в MBR. Но в Astra Linux CE Орел 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)
    
    

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

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

    Не рекомендуется использовать пароли в виде открытого текста.
    В примере ниже использован хэш хеш пароля 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
    

    Самый последний параметр позволяет выполнить команды перед завершением установки и перезагрузки компьютера, например включить 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 с готовыми ответами, который можно использовать при следующих установках.

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

    В ОС ОН Орёл 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

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

    Блок кода
    #!/bin/bash
    
    clear
    # тут добавляемвносим в /etc/apt/sources.list нашииспользуемые репозитории (для примера - репозиторий server, работающий по протоколу ftp):
    echo "deb ftp://server/repo/smolensk/mounted-iso-main smolensk main contrib non-free" > /etc/apt/sources.list
    echo "deb ftp://server/repo/smolensk/mounted-iso-devel smolensk main contrib non-free" >> /etc/apt/sources.list
    echo "deb ftp://server/repo/smolensk/repository-update smolensk main contrib non-free" >> /etc/apt/sources.list
    echo "deb ftp://server/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 systemctl enable ssh ; \
                                    in-target wget -O /usr/local/bin/update.sh ftp://10.0.2.20/smolensk/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/smolensk/update.service; \
                                    in-target systemctl enable update.service;
    Если всё сделано корректно - то после завершения установки ОС, после первой перезагрузки выполнится сценарий обновления, самоудалится и перезагрузит машину
    /update.sh ftp://10.0.2.20/smolensk/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/smolensk/update.service; \
                                    in-target systemctl enable update.service;

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


    Приложение: partman-auto - автоматическая разметка дисковых разделов

    Информация
    Данная статья является переводом статьи : https://github.com/xobs/debian-installer/blob/master/doc/devel/partman-auto-recipe.txt

    0. Введение

    Директива partman-auto является частью системы управления дисковыми разделами, автоматизирующей разбиение дисков на дисковые разделы. Порядок разбиения управляется рецептами, предоставляемыми в виде файлов, а также может управляться пакетами udeb (пакетами, предназначенными для Debian Installer) или указанием параметров разметки в файле предварительных настроек preseed. В настоящем документе описываются формы рецептов и порядок их применения.

    1. Форма рецептов

    Все символы перевода строки и табуляции преобразуются в пробелы. Далее каждые два или более пробела заменяются одним пробелом. Почти все лексемы разделяются пробелами. Важным исключением является открывающая фигурная скобка ("{"); перед котоной _не_ должно быть пробелов.
    Далее в правилах пробелы обозначаются символом подчеркивания ("_").

    Блок кода
     <рецепт>::=<заголовок>_<раздел>
     <заголовок>::=<простое имя>|<имя debconf>
     <простое имя>::=<имя>_:
    <имя> может быть, например "Multi user system".
    Блок кода
    <имя debconf>::=<шаблон debconf>_::

    Назначением лексемы <имя debconf> является перевод имен рецептов на другие языки.


    Блок кода
    <раздел>::=<раздел>|<раздел>_<разделы>
    <раздел>::=<лимиты>_<спецификации>_.
    <лимиты>::=<минимальный размер>_<приоритет>_<максимальный размер>_<файловая система>
    • <минимальный размер> задает минимальный допустимый размер дискового раздела в мегабайтах. Размер округляется до размера дискового цилиндра, поэтому есть задать минимальный размер 20МБ при размере цилиндра 12МБ размер дискового раздела будет 12МБ. Размеры также могут быть заданы в процентах от общего объёма системного ОЗУ или (начиная с partman-auto версии 87) как число плюс проценты (например, "2000+50%"), что задает размер как указанное число плюс указанный процент от общего объёма системного ОЗУ;
    • <приоритет> - некоторое число, обычно между числами <минимальный размер> и <максимальный размер>. Оно определяет приоритеты разделов при назначении размера. Если <приоритет> слишком мал (относительно приоритета другого раздела) этот раздел получит размер ближе к величине <минимальный размер>. Для маленьких разделов рекомендуется задавать <приоритет> больше чем их <максимальный размер>;
    • <максимальный размер> - максимальный размер раздела. Специальное значение -1 используется для задания разделов неограниченного размера;
    • <файловая система> - файловая система для этого раздела. Может быть задана как $default_filesystem для использования значения по умолчанию (в настоящее время ext3).


    Блок кода
    <спецификаторы>::=<спецификатор>|<спецификатор>_<спецификаторы>
    <спецификатор>::=<внутренний спецификатор>|<регулярный спецификатор>|<спецификатор типа>
    <внутренний спецификатор>::=$primary{_}|$bootable{_}|$default_filesystem{_}
    • $primary{_} - раздел должен быть создан как первичный (если это возможно);
    • $bootable{_} - раздел должен быть загрузочным;
    • $default_filesystem{_} - определяет, что должна использоваться файловая система, заданная по умолчанию (в настоящее время ext3).
    Блок кода
    <регулярный спецификатор>::=<имя файла>{ <содержимое файла> }
    • <file name> - имя файла, который будет создан в разделе (подробности см. часть 2.4 руководства по partman);
    • <file contents> - информация, которая будет записана в этот файл.
    Блок кода
    <спецификатор типа>::=$lvmok{_}|$defaultignore{_}|$lvmignore{_}
    • $lvmok{_} - указувает, что раздел может быть логическим томом LVM при использовании LVM;
    • $defaultignore{_} - используется для очистки принятых по умолчанию параметров раздела (применимо при использовании LVM);
    • $lvmignore{_} -  используется для очистки принятых по умолчанию параметров раздела LVM (применимо при неиспользовании LVM)

    Спецификаторы defaultignore и lvmignore позволяют в одном рецепте определить разные параметры, например, раздела /boot в LVM-схеме разбиения на разделы и не-LVM схеме.

    2. Примеры

    Пример: корневой раздел и раздел подкачки (swap)

    Блок кода
    partman-auto/text/atomic_scheme:
    500 10000 1000000 ext3
     $primary{ }
     $bootable{ }
     method{ format }
     format{ }
     use_filesystem{ }
     filesystem{ ext3 }
     mountpoint{ / } .
    
    64 512 300% linux-swap
     method{ swap }
     format{ } .

    Этим рецептом задается, что:

    • Раздел root должен быть не менее 500 МБ и фактически не имеет максимального размера. Размер раздела swap изменяется от 64МБ до тройного размера системного ОЗУ;
    • Параметр $bootable{ } делает раздел загружаемым, и параметр $primary{ } делает раздел первичным.

    Кроме того, в примере используются параметры:

    • method{ format } - указывает, что раздел должен быть отформатирован. Для разделов подкачки (swap) используется значение "swap". Для создания раздела без форматирования используется значение "keep" (такой раздел может применяться для резервирования дискового пространства);
    • format{ } - следует указать, чтобы раздел был отформатирован;
    • use_filesystem{ } - указывает, что на разделе размещается файловая система;
    • filesystem{ ext3 } - указывает тип файловой системы для размещения на разделе;
    • mountpoint{ / } - задает точку монтирования раздела. Дополнительно можно задать опции монтирования, например, для задания опций "nodev,ro":

      Блок кода
       options/nodev{ nodev }
       options/ro{ ro }


    Также возможно задать метку файловой системы для поддерживающих метки файловых систем. Например, для задания метки "astralinux":

    Блок кода
     label{ astralinux }

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

    Блок кода
     method{ format }
    

    Пример: корневой раздел и отдельный раздел /home 


    Блок кода
    titlepartman-auto/text/home_scheme:
    300 4000 7000 ext3
            $primary{ }
            $bootable{ }
            method{ format }
            format{ }
            use_filesystem{ }
            filesystem{ ext3 }
            mountpoint{ / } .
    
    64 512 300% linux-swap
            method{ swap }
            format{ } .
    
    100 10000 1000000000 ext3
            method{ format }
            format{ }
            use_filesystem{ }
            filesystem{ ext3 }
            mountpoint{ /home } .


    Информация
    Разделы будут создаваться в том порядке, в котором они  перечислены в рецепте.

    3. Опции, специфичные для LVM

    При использовании метода автоматического разбиения "lvm" в рецепте задаются специальные опции. Это позволяет разбить на разделы несколько дисков, определяя разделы, содержащие физические тома, принадлежность этих томов группам томов, имена и принадлежность логических томов.
    В одной сессии может быть обработано несколько дисков, что также должно быть указано в рецепте. Разделы, не являющиеся логическими томами и не имеющие назначенных дисков (например, /boot) по умолчанию размещаются на первом диске. Для явного задания физического тома определим раздел следующим образом:

    Блок кода
    100 1000 1000000000 ext3
            $defaultignore{ }
            $primary{ }
            method{ lvm }
            device{ /dev/hdb }
            vg_name{ vg00 } .
    

     Параметры "device{ ... }" и "vg_name{ }" опциональны.
    Указанные в параметре device устройства обязательно должны быть объявлены с помощью параметра partman-auto/disk.
    Группа томов, в которую входит логический том, может быть задана как "in_vg{ }", например:


    Блок кода
    96 512 300% linux-swap
            $lvmok{ }
            in_vg{ vg00 }
            lv_name{ myswap }
            method{ swap }
            format{ } .

    Параметр "lv_name{ }" задает имя логического тома, который будет создан.

    4. Зависимость от архитектуры

    Некоторые архитектуры предъявляют специфические требования к дисковым разделам. Например, многие из них требуют выделения специального дискового радела для поддержки загрузки. В частности, так называемые NewWorld PowerMAC машины требуют загрузочный дисковый раздел, размещенный в начале дискаn. Ниже приведен фрагмент рецепта для создания такого раздела:.


    Блок кода
    1 1 1 hfs
     $bootable{ }
     method{ newworld } .

    Этот раздел должен быть первым в списке разделов и он не должет быть отформатирован.

    Другой пример — архитектура  netwinder, требующая небольшой раздел /boot, отформатированный в файловую систему ext2 версии 0:


    Блок кода
    50 500 100 ext2
     $primary{ }
     $bootable{ }
     method{ format }
     format{ }
     use_filesystem{ }
     filesystem{ ext2r0 }
     mountpoint{ /boot } .

    И, наконец, пример настройки загрузочного раздела EFI для архитектуры ia64:


    Блок кода
    100 100 150 fat16
            $primary{ }
            method{ efi }
            format{ } .

    Для других архитектур см. соответствующие рецепты в udeb-пакете partman_auto.

    5. Ограничения

    Из-за ограничений реализации partman-auto для того, чтобы было использовано всё свободное дисковое пространство, должен быть задан один раздел максимального размера.  Обычно для этого используется раздел /home, которому назначается максимальный размер 1000000000, что достаточно для существующих устройств хранения данных. Если большой раздел /home не нужен, можно задать дополнительный дисковый раздел с размером 1000000000, с методом создания "keep" и оставить его не примонтированым. После завершения инсталляции такой раздел можно удалить. 

    6. Как вычисляются размеры разделов

    Предположим, требуется создать N разделов и min[i], max[i] и priority[i] — максимальный размер, минимальный размер и приоритет раздела i как описано в части 1 настоящей статьи.
    Предположим free_space — размер свободного места для размещения разделов. Тогда:

    Блок кода
    for(i=1;i<=N;i++) {
       factor[i] = priority[i] - min[i];
    }
    ready = FALSE;
    while (! ready) {
       minsum = min[1] + min[2] + ... + min[N];
       factsum = factor[1] + factor[2] + ... + factor[N];
       ready = TRUE;
       for(i=1;i<=N;i++) {
          x = min[i] + (free_space - minsum) * factor[i] / factsum;
          if (x > max[i])
             x = max[i];
          if (x != min[i]) {
             ready = FALSE;
             min[i] = x;
          }
       }
    }
    

    В итоге значение min[i] будет значением размера радела  i.