Product SiteDocumentation Site

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

24.1. Файлы автоустановки
24.1.1. Формат файла vm-profile.scm
24.1.2. Формат файла pkg-groups.tar
24.1.3. Формат файла autoinstall.scm
24.1.4. Формат файла install-scripts.tar
24.2. Запуск автоматической установки
ОС Альт Рабочая станция K можно установить в автоматическом режиме. Для этого потребуется установочный диск и доступный по сети (по протоколам HTTP или FTP) каталог с несколькими файлами.

Примечание

Пример настройки FTP-сервера см. в разделе FTP.

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

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

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

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

Примечание

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

Примечание

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

Важно

В текущей версии автоустановки невозможно указать конкретный жёсткий диск — установка выполняется на первый обнаруженный диск в системе.

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

Важно

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

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

Файл autoinstall.scm представляет собой командный скрипт для программы установки, написанный с использованием языка программирования Scheme. Каждая строка скрипта — команда для соответствующего модуля программы установки.

Примечание

Ниже приведён пример файла autoinstall.scm для частного случая установки. Если требуются особые настройки, рекомендуется сначала выполнить установку вручную, изучить лог в /root/.install-log/wizard.log, и на его основе составить собственный скрипт autoinstall.scm.
Пример файла 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)

; настройка сетевого интерфейса на получение адреса по 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)

; автоматическая разбивка жёсткого диска в профиле kworkstation_lvm
("/evms/control" action "write" control open installer #t)
("/evms/control" action "write" control update)
("/evms/profiles/kworkstation_lvm" action apply commit #f clearall #t exclude ())
("/evms/control" action "write" control commit)
("/evms/control" action "write" control close)

; установка пакетов операционной системы
("pkg-install-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 "*")

; установка пароля суперпользователя root '123'
("/root/change_password" passwd_2 "123" passwd_1 "123")
; задание первого пользователя 'user' с паролем '123'
("/users/create_account" new_name "user" real_name "Пользователь" allow_su #t auto #f passwd_1 "123" passwd_2 "123" autologin #f)
;("/postinstall/firsttime" script "ftp://192.168.0.123/metadata/update.sh")

Примечание

Для переключения раскладки по ALT+Shift используйте:
("/sysconfig-base/kbd" language ("ru_RU") action "write" layout "alt_sh_toggle")
В данном примере будет выполнена установка системы в минимальном профиле (дополнительное ПО в состав устанавливаемых пакетов включаться не будет). Если необходимо установить, например, программы для поддержки принтеров и сканеров, в список устанавливаемых пакетов нужно добавить группы kworkstation/sound-editing и kworkstation/video-editing:
("/pkg-install" action "write" lists "kworkstation/printing kworkstation/scanning" auto #t)
При установке системы в режиме 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 — скачивает и выполняет скрипт с удалённого сервера (поддерживаются протоколы http и ftp). Скрипт скачивается во время установки, а запускается в зависимости от уровня запуска;
  • run — выполняет указанную команду или набор команд напрямую (возможно указание перенаправления).

    Важно

    Для каждого уровня (laststate или firsttime) метод 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. Поэтому для работы с файлами установленной системы необходимо:
  • использовать $destdir в путях;
  • выполнять команды через утилиту run_chroot.
Пример скрипта:
#!/bin/sh

a= . install2-init-functions

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

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

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

Важно

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