Product SiteDocumentation Site

Глава 22. Автоматическая установка системы (autoinstall)

22.1. Файлы автоустановки
22.1.1. Формат файла vm-profile.scm
22.1.2. Формат файла pkg-groups.tar
22.1.3. Формат файла autoinstall.scm
22.1.4. Формат файла install-scripts.tar
22.2. Запуск автоматической установки
ОС Альт Сервер можно установить в автоматическом режиме. Для этого нужно иметь установочный диск и доступный по сети (по протоколам HTTP или FTP) каталог с несколькими файлами.

Примечание

Настроить FTP-сервер можно, например, в ЦУС (подробнее см. FTP-сервер).

22.1. Файлы автоустановки

Файлы автоустановки:
  • pkg-groups.tar — архив, содержащий дополнительные к базовой системе группы пакетов;
  • autoinstall.scm — сценарий автоматической установки на языке Scheme;
  • vm-profile.scm — различные варианты автоматической разбивки жёсткого диска на языке Scheme;
  • install-scripts.tar — архив, содержащий дополнительные скрипты для preinstall.d и postinstall.d в одноимённых каталогах. Скрипты должны быть исполняемыми. Скрипты из архива заменяют одноимённые скрипты инсталлятора.
Файлы, описывающие процесс установки, необходимо поместить в каталог (например, metadata), доступный по сети по протоколам HTTP или FTP.

22.1.1. Формат файла vm-profile.scm

Файл vm-profile.scm содержит сценарий на языке Scheme, описывающий формат автоматической разбивки жёсткого диска.
Пример файла vm-profile.scm с одним профилем (server) разбивки жёсткого диска:
((server
  (title . "Setup for server")
  (action . trivial)
  (actiondata  ("swap" (size 2048000 . 2048000) (fsim . "SWAPFS") (methods plain))
               ("/" (size 16384000 . 16384000 ) (fsim . "Ext4") (methods plain))
               ("/var" (size 4096000 . #t ) (fsim . "Ext4") (methods plain))))
               )
В примере указана разбивка:
  • подкачка (swap) — 1024 МБ;
  • корневой раздел (/) — 8 ГБ;
  • /var — всё остальное, но не меньше 2 ГБ.

Примечание

Все числа в файле vm-profile.scm указываются в виде 512-байтных блоков, поэтому чтобы получить размер в байтах, нужно умножить значения на 512.

Примечание

Добавление записи для /boot/efi не требуется — установщик добавит её сам.
Пример файла vm-profile.scm с тремя профилями разбивки жёсткого диска:
((server
  (title . "Setup for server")
  (action . trivial)
  (actiondata  ("swap" (size 2048000 . 2048000) (fsim . "SWAPFS") (methods plain))
               ("/" (size 16384000 . 16384000 ) (fsim . "Ext4") (methods plain))
               ("/var" (size 4096000 . #t ) (fsim . "Ext4") (methods plain))))
  (server_lvm
  (title . "Setup for server LVM")
  (action . trivial)
  (actiondata  ("swap" (size 2048000 . 2048000) (fsim . "SWAPFS") (methods lvm))
               ("/" (size 16384000 . 16384000 ) (fsim . "Ext4") (methods lvm))
               ("/var" (size 4096000 . #t ) (fsim . "Ext4") (methods lvm))))
  (timeshift
  (title . "Timeshift-compatible setup")
  (action . trivial)
  (actiondata  ("swap" (size 2048000 . 2048000) (fsim . "SWAPFS") (methods plain))
               ("" (size 40632320 . #t) (fsim . "BtrFS") (methods plain) (subvols ("@" . "/") ("@home" . "/home")))))
               )
В примере указаны профили:
  • server — подкачка (swap), корневой раздел и раздел /var;
  • server_lvm — подкачка (swap), корневой раздел и раздел /var в томе LVM;
  • timeshift — подкачка (swap) и раздел BtrFS с разбивкой на подразделы @ и @home.
Имя профиля указывается в файле autoinstall.scm:
("/evms/profiles/server_lvm" action apply commit #f clearall #t exclude ())

22.1.2. Формат файла pkg-groups.tar

Файл pkg-groups.tar представляет собой tar-архив с двумя подкаталогами:
  • groups — содержит описание групп программного обеспечения в файлах *.directory;
  • lists — содержит файлы со списками пакетов для каждой группы и скрытый файл .base, содержащий список пакетов «базовой системы» (то есть те пакеты, которые устанавливаются в любом случае).
Файл pkg-groups.tar проще всего взять из установочного ISO-образа из каталога /Metadata/ и доработать, если необходимо.
Для изменения списка пакетов:
  1. Распаковать архив, например, выполнив команду:
    $ tar xf pkg-groups.tar
    
  2. Перейти в подкаталог lists и добавить или изменить файл группы. Имена пакетов указываются по одному в каждой строке, например, содержимое файла admc:
    admc
    alterator-gpupdate
    gpupdate
    local-policy
    admx-basealt
    samba-dc-common
    admx-firefox
    admx-chromium
    gpui
    
  3. Упаковать архив, например, выполнив команду:
    $ tar cf pkg-groups.tar groups lists
    
Имя файла используемой группы затем указывается через пробел в autoinstall.scm:
(("pkg-install") action "write" lists "group-1 group-2" auto #t)
где group-1 и group-2 — имена файлов со списками пакетов из подкаталога lists.

Важно

В качестве источника пакетов при установке выступает сам диск, поэтому указание пакетов, которых нет на диске, приведёт к сбою установки.

22.1.3. Формат файла autoinstall.scm

Файл autoinstall.scm представляет собой командный скрипт для программы установки, написанный с использованием языка программирования Scheme. Каждая строка скрипта — команда для модуля программы установки.
Пример файла autoinstall.scm:
; установка языка операционной системы (ru_RU)
("/sysconfig-base/language" action "write" lang ("ru_RU"))
; установка переключателя раскладки клавиатуры на Ctrl+Shift
("/sysconfig-base/kbd" language ("ru_RU") action "write" layout "ctrl_shift_toggle")
; установка часового пояса в Europe/Moscow, время в BIOS будет храниться в UTC
("/datetime-installer" action "write" commit #t name "RU" zone "Europe/Moscow" utc #t)
; автоматическая разбивка жёсткого диска в профиле server_lvm
("/evms/control" action "write" control open installer #t)
("/evms/control" action "write" control update)
("/evms/profiles/server_lvm" action apply commit #f clearall #t exclude ())
("/evms/control" action "write" control commit)
("/evms/control" action "write" control close)
; перемонтирование
("/remount-destination" action "write")
; установка пакетов операционной системы
("pkg-init" action "write")
; установка только базовой системы (дополнительные группы пакетов из pkg-groups.tar указываются по именам через пробел)
("/pkg-install" action "write" lists "" auto #t)
("/preinstall" action "write")
; установка загрузчика GRUB в efi
("/grub" action "write" device "efi" passwd #f passwd_1 "*" passwd_2 "*")
; настройка сетевого интерфейса на получение адреса по DHCP
("/net-eth" action "write" reset #t)
("/net-eth" action "write" name "enp0s3" ipv "4" configuration "dhcp" default "" search "" dns "" computer_name "newhost" ipv_enabled #t)
("/net-eth" action "write" commit #t)
; установка пароля суперпользователя root '123'
("/root/change_password" passwd_2 "123" passwd_1 "123")
; задание первого пользователя 'user' с паролем '123'
("/users/create_account" new_name "user" gecos "user" allow_su #t auto #f passwd_1 "123" passwd_2 "123" autologin #f)
;("/postinstall/firsttime" script "ftp://192.168.0.123/metadata/update.sh")
В данном примере будет выполнена установка системы в минимальном профиле (дополнительное ПО в состав устанавливаемых пакетов включаться не будет). Если, например, необходимо установить графический интерфейс MATE, то в список устанавливаемых пакетов нужно добавить группу centaurus/mate:
("/pkg-install" action "write" lists "centaurus/mate" auto #t)
При установке системы в режиме EFI загрузчик устанавливается в специальный раздел efi. Пример установки пароля на загрузчик в режиме EFI (пароль '123'):
("/grub" action "write" device "efi" passwd #t passwd_1 "123" passwd_2 "123")
Если установка происходит в режиме Legacy, то загрузчик GRUB необходимо установить на первый жёсткий диск, например:
("/grub" action "write" device "/dev/sda" passwd #f passwd_1 "*" passwd_2 "*")
Пример настройки сетевого интерфейса на статический IP-адрес:
("/net-eth" action "write" reset #t)
("/net-eth" action "write" name "enp0s3" ipv "4" configuration "static" default "192.168.0.1" search "" dns "8.8.8.8" computer_name "newhost" ipv_enabled #t)
("/net-eth" action "add_iface_address" name "enp0s3" addip "192.168.0.25" addmask "24" ipv "4")
("/net-eth" action "write" commit #t)
где:
  • addip "192.168.0.25" — IP-адрес;
  • default "192.168.0.1" — шлюз по умолчанию;
  • dns "8.8.8.8" — DNS-сервер;
  • computer_name "newhost" — имя хоста.
В конец файла autoinstall.scm можно добавить шаг /postinstall, который позволяет в конце установки или при первом запуске ОС выполнить команду или скрипт. Например:
("/postinstall/firsttime" script "ftp://192.168.0.123/metadata/update.sh")
У шага /postinstall есть два уровня запуска:
  • laststate — скрипт запускается перед перезагрузкой после установки ОС;
  • firsttime — скрипт запускается во время первого запуска ОС.
И два метода (method) указания скрипта запуска:
  • script — скрипт скачивается с сервера и выполняется;
  • run — выполняется заданная команда или набор команд (возможно указание перенаправления).
Примеры:
("/postinstall/firsttime" script "http://server/script.sh")
("/postinstall/firsttime" run "curl --silent --insecure http://server/finish")

("/postinstall/laststate" script "http://server/script.sh")
("/postinstall/laststate" run "curl --silent --insecure http://server/gotoreboot")

Примечание

На уровне laststate для работы с установленной системой требуется указывать пути с $destdir или выполнять команды через run_chroot:
#!/bin/sh

a= . install2-init-functions

run_chroot sh -c "date > /root/STAMP_1"
date > $destdir/root/STAMP_2

22.1.4. Формат файла install-scripts.tar

Файл install-scripts.tar представляет собой tar-архив содержащий дополнительные скрипты.
Скрипты preinstall.d выполняются сразу после установки базовой системы. Как правило, это скрипты для дополнительной настройки базовой системы (перед установкой дополнительного набора ПО) и для переноса настроек из среды инсталлятора. Добавлять сюда свои собственные скрипты стоит только тогда, когда вы чётко представляете свои цели. Скрипты postinstall.d выполняются сразу после последнего шага инсталлятора. Как правило, это скрипты, удаляющие служебные пакеты инсталлятора из базовой системы. Если нужно сделать какие-нибудь специфические настройки системы, то это можно сделать здесь.
Скрипты preinstall.d необходимо поместить в каталог preinstall.d, скрипты postinstall.d — в каталог postinstall.d. Упаковать архив можно, например, выполнив команду:
$ tar cf install-scripts.tar preinstall.d postinstall.d

Примечание

Данные скрипты выполняются в среде установщика, а не в среде установленной системы. Для работы с установленной системой требуется указывать пути с $destdir или выполнять команды через run_chroot:
#!/bin/sh

a= . install2-init-functions

run_chroot sh -c "date > /root/STAMP_1"
date > $destdir/root/STAMP_2