Примечание
pkg-groups.tar — архив, содержащий дополнительные к базовой системе группы пакетов;
autoinstall.scm — сценарий автоматической установки на языке Scheme;
vm-profile.scm — различные варианты автоматической разбивки жёсткого диска на языке Scheme;
install-scripts.tar — архив, содержащий дополнительные скрипты для preinstall.d и postinstall.d в одноимённых каталогах. Скрипты должны быть исполняемыми. Скрипты из архива заменяют одноимённые скрипты инсталлятора.
metadata), доступный по сети по протоколам HTTP или FTP.
vm-profile.scm содержит сценарий на языке Scheme, описывающий формат автоматической разбивки жёсткого диска.
vm-profile.scm с одним профилем (workstation) разбивки жёсткого диска:
((workstation
(title . "Setup for workstation")
(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))))
)
В примере указана разбивка:
Примечание
vm-profile.scm указываются в виде 512-байтных блоков, поэтому чтобы получить размер в байтах, нужно умножить значения на 512.
Примечание
/boot/efi не требуется — установщик добавит её сам.
vm-profile.scm с тремя профилями разбивки жёсткого диска:
((workstation
(title . "Setup for workstation")
(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))))
(workstation_lvm
(title . "Setup for workstation 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")))))
)
В примере указаны профили:
/var;
autoinstall.scm:
("/evms/profiles/workstation_lvm" action apply commit #f clearall #t exclude ())
pkg-groups.tar представляет собой tar-архив с двумя подкаталогами:
groups — содержит описание групп программного обеспечения в файлах *.directory;
lists — содержит файлы со списками пакетов для каждой группы и скрытый файл .base, содержащий список пакетов «базовой системы» (то есть те пакеты, которые устанавливаются в любом случае).
pkg-groups.tar проще всего взять из установочного iso-образа из каталога /Metadata/ и доработать, если необходимо.
$ tar xf pkg-groups.tar
lists и добавить или изменить файл группы. Имена пакетов указываются по одному в каждой строке, например, содержимое файла admc:
admc alterator-gpupdate gpupdate local-policy admx-basealt samba-dc-common admx-firefox admx-chromium gpui
$ 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.
Важно
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)
; автоматическая разбивка жёсткого диска в профиле workstation_lvm
("/evms/control" action "write" control open installer #t)
("/evms/control" action "write" control update)
("/evms/profiles/workstation_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")
("/pkg-install" action "write" lists "kworkstation/sound-editing kworkstation/video-editing" auto #t)
("/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 "*")
("/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")
laststate — скрипт запускается перед перезагрузкой после установки ОС;
firsttime — скрипт запускается во время первого запуска ОС.
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
install-scripts.tar представляет собой tar-архив содержащий дополнительные скрипты.
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