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

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

Ключ

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

Оглавление

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

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

установка производится на компьютер клиент, подключенный к локальной сети;
  • в этой сети имеются:
    • настроенный DHCP-сервер, выдающий клиентским компьютерам не только сетевые IP-адреса, но и другие сетевые параметры (в частности, IP-адрес TFTP-сервера, с которого будет загружаться установочный образ);
    • настроенный TFTP сервер, с которого можно загрузить установочные данные и файлы для первичной загрузки:
      • tftp://192.168.56.1/smolensk
      • tftp://192.168.56.1/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 и РУСБ.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) — среда для загрузки компьютеров с помощью сетевой карты без использования жестких дисков, компакт-дисков и других устройств, применяемых при загрузке операционной системы.
    Подробная информация об автоматической установке с помощью списка ответов: https://www.debian.org/releases/buster/amd64/apbs02.en.html.


    Примечание

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

    • Виртуальный графический адаптер  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

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

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

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

    Информация

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

    • ОС СН Смоленск 1.6
    • ОС ОН Орёл 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 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/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/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/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=tftp://192.168.56.1/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=tftp://192.168.56.1/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=tftp://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 Смоленск 1.6: preseed_smol.cfg

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

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

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

    или

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

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

    Указываем путь к 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
    # для ОС СН Смоленск
    d-i mirror/http/directory string /repo/smolensk
    # или, вариант для ОС ОН Орёл
    #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
    # или, вариант для ОС ОН Орёл
    #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 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 и задание пароля:
    Предупреждение

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

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

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

    В ОС ОН Орёл можно выполнить обновление указав в 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

    Там же создать файл 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;

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

    Приложение: 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.