Примечание
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 с одним профилем (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))))
)
В примере указана разбивка:
Примечание
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")))))
)
В примере указаны профили:
/var;
/var в томе LVM;
autoinstall.scm:
("/evms/profiles/server_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 для частного случая установки. Если требуются особые настройки, рекомендуется сначала выполнить установку вручную, изучить лог в /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)
; автоматическая разбивка жёсткого диска в профиле server
("/evms/control" action "write" control open installer #t)
("/evms/control" action "write" control update)
("/evms/profiles/server" 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-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" 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")
Примечание
("/sysconfig-base/kbd" language ("ru_RU") action "write" layout "alt_sh_toggle")
("/pkg-install" action "write" lists "centaurus/graph" 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 — скачивает и выполняет скрипт с удалённого сервера (поддерживаются протоколы 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
install-scripts.tar представляет собой tar-архив, содержащий дополнительные скрипты:
preinstall.d — скрипты, выполняемые после установки базовой системы. Как правило, это скрипты для дополнительной настройки базовой системы (перед установкой дополнительного набора ПО) и для переноса настроек из среды инсталлятора. Добавлять сюда свои собственные скрипты стоит только тогда, когда вы чётко представляете свои цели;
postinstall.d — скрипты, выполняемые после завершения всей установки, перед перезагрузкой. Как правило, это скрипты, удаляющие служебные пакеты инсталлятора из базовой системы. Подходят для финальной настройки, очистки временных файлов и т.д.
Важно
$destdir или run_chroot (см. пример выше).
preinstall.d, скрипты postinstall.d — в каталог postinstall.d. Упаковать архив можно, выполнив команду:
$ tar cf install-scripts.tar preinstall.d postinstall.d