Примечание
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