Autoinstall: различия между версиями

Материал из ALT Linux Wiki
(не показаны 54 промежуточные версии 13 участников)
Строка 1: Строка 1:
Дистрибутив ALT Linux можно установить в автоматическом режиме. Для этого нужно иметь установочный диск и доступный по сети каталог с несколькими файлами.
Дистрибутив ALT Linux можно установить в автоматическом режиме. Для этого нужно иметь установочный диск и доступный по сети каталог с несколькими файлами.  
 
Данное руководство проверено на установке [[Альт Сервер 9|Альт Сервер 9.1]] (FalcoRusticolus).
 
== Требования к дистрибутиву ==
Для работы автоустановки в образ установщика необходимо включить пакет {{pkg|curl}} — в случае [[m-p|mkimage-profiles]] это цель <tt>use/install2/net</tt> или непосредственно:
@$(call add,INSTALL2_PACKAGES,curl)
 
Если используется постустановочная доводка, включите в базовые пакеты {{pkg|alterator-postinstall}}<ref>https://github.com/sergelogvinov/alterator-postinstall</ref>:
@$(call add,BASE_PACKAGES,alterator-postinstall)


== Запуск установки ==
== Запуск установки ==


Для включения режима автоматической установки ядру инсталятора операционной системы необходимо передать параметр curl, содержащий адрес каталога с командными файлами.  
Для включения режима автоматической установки ядру инсталятора операционной системы необходимо передать параметр загрузки '''ai''' (без значения). Сделать это можно в меню загрузки диска или в приглашении '''boot:''' при загрузке по сети. Автоустановка поддерживается в следующих режимах установки: http, ftp, cdrom, disk, nfs.


Формат адреса должен быть представлен в виде URL. Например:
Для автоустановки требуется диск с дистрибутивом (в приводе или с сетевого ресурса) и набор из четырёх файлов, описывающих процесс установки. Все четыре файла нужно поместить в каталог, доступный по сети по протоколам HTTP или FTP, и указать путь к нему в параметрах загрузки '''curl'''.  


curl=http://192.168.5.1/installer/metadata/
Формат адреса в curl должен быть представлен в виде URL. Пример параметров загрузки:
 
<pre>ai curl=ftp://192.168.0.1/metadata/</pre>
 
{{Note|Для этого достаточно создать на сервере каталог {{path|/srv/public/metadata}} и положить туда файлы. Параметры загрузки образа можно прописать в файле конфигурации {{path|/var/lib/tftpboot/pxelinux.cfg/default}}.}}
 
{{Attention|По умолчанию сервер отдаёт по протоколу https:// с самоподписанным сертификатом, поэтому лучше использовать протокол ftp://}}
 
При невозможности получения из указанного источника по сети, программа установки будет смотреть в следующих местах:
# на диске в каталоге '''/Metadata/'''
# в образе установщика в каталоге '''/usr/share/install2/metadata/'''
 
{{Attention|Автоустановка работает со штатными дистрибутивами пока только при сетевой установке. При запуске с диска сеть недоступна. Подробности: {{altbug|26813}}.}}


== Содержимое каталога metadata ==
== Содержимое каталога metadata ==


В каталоге metadata могут быть следующие файлы:
В каталоге metadata могут быть следующие файлы:
* '''autoinstall.scm''' — сценарий установки на языке scheme
* '''autoinstall.scm''' — сценарий установки на языке scheme. [[Файл:Autoinstall.scm|Пример файла autoinstall.scm]]
* '''vm-profile.scm''' — схема разбивки жёсткого диска на языке scheme
* '''vm-profile.scm''' — схема разбивки жёсткого диска на языке Scheme. [[Файл:Vm-profile.scm|Пример файла vm-profile.scm]]
* '''pkg-groups.tar''' — архив, содержащий дополнительные к базовой системе группы пакетов
* '''pkg-groups.tar''' — архив, содержащий дополнительные к базовой системе группы пакетов (можно просто взять с диска из подкаталога Metadata/ <source lang="Bash">cp /srv/public/netinst/mnt/Metadata/pkg-groups.tar /srv/public/metadata/</source>
* '''root.pub''' — публичный ключ пользователя root, который будет использоваться для авторизации при доступе в установленную систему через сетевой интерфейс
 
== Делаем «собственный» дистрибутив ==
 
При автоустановке по сети (например, через alterator-netinst) есть возможность править состав и скрипты автоустановки «вживую».
 
# Распакуйте содержимое установочного диска в ''/srv/public/netinst/mnt''.
# Добавьте autoinstall.scm в каталог в ''/srv/public/netinst/mnt/Metadata''.
# Можете добавить свои пакеты в состав пакетов в подкаталоге ALTLinux/RPMS.main. После этого запустите <pre>genbasedir --topdir=/srv/public ALTLinux main</pre>


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


Файл autoinstall.scm представляет из себя командный скрипт для программы установки, написанный с использованием языка программирования scheme. Каждая строка крипта — команда для модуля программы установки. Рассмотрим в качестве примера стандартный скрипт автоматической установки операционной системы:
Файл autoinstall.scm представляет из себя командный скрипт для программы установки, написанный с использованием языка программирования scheme. Каждая строка скрипта — команда для модуля программы установки. Рассмотрим в качестве примера стандартный скрипт автоматической установки операционной системы:


<source lang="lisp">; установка языка операционной системы
{{Attention|Не нужно без оглядки применять этот рецепт на любом дистрибутиве. Рекомендуем сначала установить дистрибутив, потом посмотреть лог выполняемых команд в {{path|/root/.install-log/wizard.log}}}}
(("sysconfig-base" "language") action "write" lang ("ru_RU"))
 
; установка переключателя клавиатуры
<source lang="lisp">; установка языка операционной системы (ru_RU)
(("sysconfig-base" "kbd") action "write" layout "ctrl_shift_toggle")
("/sysconfig-base/language" action "write" lang ("ru_RU"))
; установка временной зоны в Europe/Moscow
; установка переключателя расладки клавиатуры на Ctrl+Shift
(("datetime-installer") action "write" commit #t name "RU" zone "Europe/Moscow" utc #t)
("/sysconfig-base/kbd" action "write" layout "ctrl_shift_toggle")
; установка часового пояса в Europe/Moscow, время в BIOS будет храниться в UTC
("/datetime-installer" action "write" commit #t name "RU" zone "Europe/Moscow" utc #t)
; автоматическая разбивка жёсткого диска
; автоматическая разбивка жёсткого диска
(("evms" "control") action "write" control open installer #t)
("/evms/control" action "write" control open installer #t)
(("evms" "control") action "write" control update)
("/evms/control" action "write" control update)
(("evms" "profiles" "hpcnode") action apply commit #t clearall #t exclude ())
("/evms/profiles/workstation" action apply commit #f clearall #t exclude ())
(("evms" "control") action "write" control commit)
("/evms/control" action "write" control commit)
(("evms" "control") action "write" control close)
("/evms/control" action "write" control close)
; установка пакетов операционной системы
("pkg-init" action "write")
; установка только базовой системы (дополнительные группы пакетов из pkg-groups.tar указываются по именам через пробел)
("/pkg-install" action "write" lists "" auto #t)
("/preinstall" action "write")
; установка загрузчика GRUB в MBR на первый жёсткий диск
("/grub" action "write" device "/dev/sda" passwd #f passwd_1 "*" passwd_2 "*")
; настройка сетевого интерфейса на получение адреса по DHCP
("/net-eth" action "write" reset #t)
("/net-eth" action "write" name "eth0" configuration "dhcp" default "" search "" dns "" computer_name "c245")
; настройка сетевого интерфейса на статический IPv4
; ("/net-eth" action "write" name "eth0" configuration "static" default "192.168.1.1" search "localhost.com" dns "192.168.1.1" computer_name "c245" ipv "4" ipv_enabled #t)
; ("/net-eth" action "add_iface_address" name "eth0" addip "192.168.1.2" addmask "24" ipv "4")
("/net-eth" action "write" commit #t)
; установка пароля суперпользователя root '123'
("/root/change_password" language ("ru_RU") passwd_2 "123" passwd_1 "123")
; задание первого пользователя 'test' с паролем '123'
("/users/create_account" new_name "test" gecos "" allow_su #t auto #f passwd_1 "123" passwd_2 "123")
</source>
 
'''Внимание!'''
 
При установке пакета alterator-net-domain имя узла (''computer_name'') не должно содержать точку, иначе это может вызвать сбой установки. Подробности: {{altbug|27017}}
 
<div id="vm-profile"></div>
 
== Формат файла vm-profile.scm ==
 
Файл {{path|/var/cache/alterator/vm-profile.scm}} содержит сценарий на языке scheme, описывающий формат автоматической разбивки жёсткого диска. Рассмотрим его на примере:
 
<source lang="lisp">((workstation
  (title . "Setup for workstation")
  (action . trivial)
  (actiondata  ("swap" (size 1024000 . 1024000) (fsim . "SWAPFS") (methods plain))
              ("/" (size 20971520 . 20971520 ) (fsim . "Ext2/3") (methods plain))
              ("/home" (size 1024000 . #t) (fsim . "Ext2/3") (methods  plain))))
              )</source>
 
 
 
Обратите внимание: числовые константы ''не'' закавычиваются!  Типичным следствием такой ошибки является оценка "требуется 0 MB".
 
Все числа указаны в виде 512-байтных блоков, поэтому чтобы получить размер в байтах, нужно умножить значения на 512.
 
В примере указана разбивка:
* подкачка (swap) — 512 МБ;
* корневой раздел (/) — 10 ГБ;
* /home - всё остальное, но не меньше 500 МБ.
 
Вы можете не указывать этот профиль вообще, возложив автоматическую разметку на профиль в составе дистрибутива (куда он может попасть из сборочного профиля либо в результате выполнения скрипта из пакета вроде {{pkg|volumes-profile-*}} или {{pkg|installer-distro-*}}; вариант по умолчанию содержится в {{pkg|alterator-vm}}).
 
Имя профиля (workstation) указывается в autoinstall.scm:
<source lang="lisp">("/evms/profiles/workstation" action apply commit #f clearall #t exclude ())</source>
См. тж.:
* [http://lists.altlinux.org/pipermail/devel/2007-April/057886.html письмо, про <code>size</code>];
* <strike>[http://lists.altlinux.org/pipermail/devel/2007-April/138788.html письмо, про <code>methods</code>]</strike> -- судя по [http://git.altlinux.org/gears/a/alterator-vm.git alterator-vm.git], начиная от {{pkg|alterator-vm-0.4.1-alt8}}, помимо <code>(methods plain)</code> есть поддержка и <code>(methods raid plain)</code>.
 
== Формат файла pkg-groups.tar ==
 
Файл pkg-groups.tar представляет собой tar-архив с двумя подкаталогами: ''groups'' (содержащий описание групп программного обеспечения в файлах .desktop) и ''lists'' (содержащий файлы со списками пакетов для каждой группы). В подкаталоге lists находится скрытый файл ''.base'', содержащий список пакетов «базовой системы» (то есть те пакеты, которые устанавливаются в любом случае). Описание форматов указания групп описано в [[Alterator-pkg]].
 
Файл pkg-groups.tar проще всего взять с диска из каталога '''/Metadata/''' и доработать, если необходимо.
 
Для изменения списка пакетов распакуйте архив командой
tar xf pkg-groups.tar
 
После этого перейдите в подкаталог ''lists'' и добавьте или измените файл группы. Имена пакетов указываются по одному в каждой строке. Имя файла используемой группы затем указывается через пробел в autoinstall.scm:
 
<source lang="lisp">(("pkg-install") action "write" lists "group-1 group-2" auto #t)</source>
 
где group-1 и group-2 — имена файлов со списками пакетов из подкаталога ''lists''.
 
После исправлений упакуйте снова в архив командой:
tar cf pkg-groups.tar groups lists
 
{{Attention|Учтите, что в качестве источника пакетов при установке выступает сам диск, поэтому указание не лежащих на нём пакетов приведёт к сбою установки. Если хотите добавить новые пакеты, пересоберите диск дистрибутива или используйте скрипты, выполняющиеся после установки.}}
 
== Автоустановка в UEFI ==
 
В файле '''autoinstall.scm''' поменять установку загрузчика с ''/dev/vda'' на ''efi'':
 
<source lang="lisp">("/grub" action "write" language ("ru_RU") device "efi")</source>
 
В файле  '''vm-profile.scm''' добавить разбивку диска для ''/boot/efi'':
 
<source lang="lisp">("/boot/efi" (size 1024000 . 1024000 ) (fsim . "FAT32") (methods plain))</source>


; установка пакетов операционной системы
=== Настройка установки по ipxe ===
(("pkg-init") action "write")
 
(("pkg-install") action "write" lists "" auto #t)
Перейти в каталог {{path|/var/lib/tftpboot}}.
(("preinstall") action "write")
 
Создать файл '''grub.cfg''' со следующим содержимым:
<source lang="lisp">
set timeout=5
menuentry "Start autoinstall" {
  linuxefi /vmlinuz fastboot live lowmem  ramdisk_size=871661 showopts ai curl=ftp://192.168.1.100/metadata/ automatic=method:cdrom quiet splash stagename=altinst automatic=method:nfs,network:dhcp,server:192.168.1.100,directory:/srv/public/netinst/mnt/
  initrdefi /full.cz
}
</source>
 
Скопировать файлы '''full.cz''' и '''vmlinuz''' из {{path|/srv/public/netinst/mnt/syslinux/alt0/}} в  {{path|/var/lib/tftpboot/}}:
<source lang="lisp">
# cp /srv/public/netinst/mnt/syslinux/alt0/{full.cz,vmlinuz} /var/lib/tftpboot/
</source>
 
Извлечь файлы из rpm-пакета '''shim-signed-*.rpm''' и скопировать '''shimx64.efi''' в папку {{path|/var/lib/tftpboot}}:
<source lang="lisp">
# rpm2cpio /srv/public/netinst/mnt/ALTLinux/RPMS.main/shim-signed-15-alt1.x86_64.rpm | cpio -idmv
# cp usr/lib64/efi/shimx64.efi /var/lib/tftpboot/
</source>
 
Перейти в папку {{path|/var/lib/tftpboot}} и скачать файл ''grubx64.efi'':
<source lang="lisp">
# rpm2cpio /srv/public/netinst/mnt/ALTLinux/RPMS.main/grub-efi-2.02-alt29.x86_64 | cpio -idmv
# cp usr/lib64/efi/grubx64.efi /var/lib/tftpboot/
</source>
 
Для nfs-установки добавить в файл {{path|/etc/exports}} следующую строчку:
<source lang="lisp">/srv/public/netinst/mnt -ro,insecure,no_subtree_check,fsid=1 *</source>
Применить изменения:
<source lang="lisp"># exportfs -r</source>
 
В файле  {{path|/etc/dhcp/dhcpd.conf}} строчку ''filename'' изменить на:
<source lang="lisp">filename "shimx64.efi"</source>


; установка загрузчика (конфигурация по умолчанию)
Перезапустить сервис ''dhcpd'':
(("lilo" "globals") action "write" target "boot" devname #t)
<source lang="lisp"># systemctl restart dhcpd</source>
(("lilo" "globals") action "write" target "timeout" timeout "100")
(("lilo" "globals") action "write" target "default" default "ALTLinux")
(("lilo" "commit") action "write" confonly #f)


; настройка сетевого интерфейса на получение адреса по DHCP
== alterator-postinstall ==
(("net-eth") action "write" reset #t)
(("net-eth") action "write" name "eth0" configuration "dhcp" default "" computer_name "localhost")
(("net-eth") action "write" commit #t)


; специфичные для HPC настройки — адрес storage server
С апреля 2015 года появился пакет {{pkg|alterator-postinstall}}[https://github.com/sergelogvinov/alterator-postinstall.git], который позволяет выполнить в конце установки или при первом запуске команду или скрипт, скачиваемый по сети. Этот пакет должен устанавливаться вместе с другими пакетами, так как запускается во второй стадии установки.
(("hpc-storage") action "write" type "nfs" location "")
; адрес сервера syslog
(("hpc-syslog") action "write" mode "gather" server "")
; установка типа mpi
(("hpc-mpi") action "write" type "openmpi")


; установка пароля пользователя root
Пример использования:
("/root/change_password" passwd_2 "парольroot" passwd_1 "парольroot")</source>
<source lang="Lisp">("/postinstall/firsttime" script "http://server/post.sh")</source>


== Формат файла vm-profile.scm ==
Уровни запуска (указываются после префикса {{cmd|/postinstall/}}:
;laststate
:Скрипт запускается при завершении Alterator (перед перезагрузкой после установки)
;firsttime
:Скрипт запускается во время первого запуска ОС


Файл vm-profile.svm содержит сценарий на языке scheme, описывающий формат автоматической разбивки жёсткого диска. Рассмотрим его на примере:
Типы команд:
<source lang="Lisp">("/postinstall/laststate" script "http://server/script.sh")</source>
Скрипт скачивается с сервера и выполняется
<source lang="Lisp">("/postinstall/laststate" run "command arg1 arg2")</source>
Запуск команды и аргументов. Возможно указание перенаправления.


<source lang="lisp">; имя профиля
=== Примечание по chroot ===
((server
На уровне {{cmd|laststate}} для работы с установленной системой требуется указывать пути с {{path|$destdir}} или выполнять команды через {{cmd|run_chroot}}:
post.sh
<source lang="Bash">#!/bin/sh


; описание профиля
a= . install2-init-functions
(title . «Setup for server»)


; тип действия, в данный момент только trivial
run_chroot sh -c "date > /root/STAMP_1"
(action . Trivial)
date > $destdir/root/STAMP_2</source>


; данные для действия. В данном случае создаётся раздел swap с размером 512 мегабайт  (размер указывается в блоках длиной 512 килобайт)
== Профили ==
(actiondata  ("swap" (size . 1048576) (fsim . "SWAPFS") (methods raid plain))


; данные для создания корневого раздела, объёмом 1 гигабайт, с файловой системой ext3
=== Альт Образование 9.2 ===
("/" (size . 2097152) (fsim . "Ext2/3") (methods raid plain))
Все группы, диск разбивается на два раздела: 1 ГиБ — подкачка (swap), от 30 ГиБ и до конца диска — /.<br />
Часовой пояс: Europe/Moscow, пароли — 123 для ''root'' и для пользователя ''user''.<br />
Имя хоста: ''host-229''.<br />
{{path|autoinstall.scm}}
<source lang="lisp">("/sysconfig-base/language" action "write" lang ("ru_RU"))
("/sysconfig-base/kbd" action "write" layout "alt_sh_toggle")
("/datetime-installer" action "write" commit #t name "RU" zone "Europe/Moscow" utc #t ctime "")
("/evms/control" action "write" control open installer #t)
("/evms/control" action "write" control update)
("/evms/profiles/workstation" action apply commit #f clearall #t exclude ())
("/evms/control" action "write" control commit)
("/evms/control" action "write" control close)
("pkg-init" action "write")
;;; Установить все группы, но требуется около 21 ГиБ
;;; ("/pkg-install" action "write" lists "education/base education/preschool education/gradeschool education/highschool education/secondary_vocational education/university education/kde5 education/teacher education/server-apps-edu education/video-conferencing" auto #t)
;;; Минимальная установка с графической средой (6,6 ГиБ)
("/pkg-install" action "write" lists "" auto #t)
("/preinstall" action "write")
("/grub" action "write" device "/dev/sda" passwd #f passwd_1 "*" passwd_2 "*")
("/net-eth" action "write" name "" ipv "4" configuration "dhcp" default "" search "" dns "" computer_name "host-229" ipv_enabled #t)
("/net-eth" action "write" commit #t)
("/root/change_password" passwd_auto "*" passwd_2 "123" passwd_1 "123")
("/users/create_account" new_name "user" gecos "" allow_su #t auto #f passwd_auto "*" passwd_1 "123" passwd_2 "123" autologin #f)</source>
{{path|vm-profile.scm}}
<source lang="lisp">((workstation
  (title . "Setup for workstation")
  (action . trivial)
  (actiondata  ("swap" (size 2048000 . 2048000) (fsim . "SWAPFS") (methods plain))
              ("/" (size 62914560 . #t ) (fsim . "Ext2/3") (methods plain))
              )))</source>


; данные для создания раздела /home, объёмом 10 гигабайт, с файловой системой ext3
== Советы и секреты ==
("/home" (size 20971520 . #t) (fsim . "Ext2/3") (methods raid plain))
* Для отладки укажите в параметрах загрузки ядра {{term|instdebug}}
* При установке пакетов могут возникать ошибки. Отследить их можно командой: <pre>grep E: /tmp/pkg-install.log</pre>


; данные для создания раздела /var, объёмом 5 гигабайт, с файловой системой ext3
== Примечания ==
("/var" (size  10485760. #t) (fsim . "Ext2/3") (methods raid plain))
<references/>
)))</source>


[[Категория:HOWTO]]
{{Category navigation|title=Программное обеспечение|category=Программное_обеспечение|sortkey={{SUBPAGENAME}}}}
[[Категория:Программное обеспечение]]
{{Category navigation|title=HOWTO|category=HOWTO|sortkey={{SUBPAGENAME}}}}

Версия от 17:50, 8 мая 2021

Дистрибутив ALT Linux можно установить в автоматическом режиме. Для этого нужно иметь установочный диск и доступный по сети каталог с несколькими файлами.

Данное руководство проверено на установке Альт Сервер 9.1 (FalcoRusticolus).

Требования к дистрибутиву

Для работы автоустановки в образ установщика необходимо включить пакет curl — в случае mkimage-profiles это цель use/install2/net или непосредственно:

@$(call add,INSTALL2_PACKAGES,curl)

Если используется постустановочная доводка, включите в базовые пакеты alterator-postinstall[1]:

@$(call add,BASE_PACKAGES,alterator-postinstall)

Запуск установки

Для включения режима автоматической установки ядру инсталятора операционной системы необходимо передать параметр загрузки ai (без значения). Сделать это можно в меню загрузки диска или в приглашении boot: при загрузке по сети. Автоустановка поддерживается в следующих режимах установки: http, ftp, cdrom, disk, nfs.

Для автоустановки требуется диск с дистрибутивом (в приводе или с сетевого ресурса) и набор из четырёх файлов, описывающих процесс установки. Все четыре файла нужно поместить в каталог, доступный по сети по протоколам HTTP или FTP, и указать путь к нему в параметрах загрузки curl.

Формат адреса в curl должен быть представлен в виде URL. Пример параметров загрузки:

ai curl=ftp://192.168.0.1/metadata/
Примечание: Для этого достаточно создать на сервере каталог /srv/public/metadata и положить туда файлы. Параметры загрузки образа можно прописать в файле конфигурации /var/lib/tftpboot/pxelinux.cfg/default.


Внимание! По умолчанию сервер отдаёт по протоколу https:// с самоподписанным сертификатом, поэтому лучше использовать протокол ftp://


При невозможности получения из указанного источника по сети, программа установки будет смотреть в следующих местах:

  1. на диске в каталоге /Metadata/
  2. в образе установщика в каталоге /usr/share/install2/metadata/
Внимание! Автоустановка работает со штатными дистрибутивами пока только при сетевой установке. При запуске с диска сеть недоступна. Подробности: altbug #26813.


Содержимое каталога metadata

В каталоге metadata могут быть следующие файлы:

  • autoinstall.scm — сценарий установки на языке scheme. Файл:Autoinstall.scm
  • vm-profile.scm — схема разбивки жёсткого диска на языке Scheme. Файл:Vm-profile.scm
  • pkg-groups.tar — архив, содержащий дополнительные к базовой системе группы пакетов (можно просто взять с диска из подкаталога Metadata/
    cp /srv/public/netinst/mnt/Metadata/pkg-groups.tar /srv/public/metadata/
    

Делаем «собственный» дистрибутив

При автоустановке по сети (например, через alterator-netinst) есть возможность править состав и скрипты автоустановки «вживую».

  1. Распакуйте содержимое установочного диска в /srv/public/netinst/mnt.
  2. Добавьте autoinstall.scm в каталог в /srv/public/netinst/mnt/Metadata.
  3. Можете добавить свои пакеты в состав пакетов в подкаталоге ALTLinux/RPMS.main. После этого запустите
    genbasedir --topdir=/srv/public ALTLinux main

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

Файл autoinstall.scm представляет из себя командный скрипт для программы установки, написанный с использованием языка программирования scheme. Каждая строка скрипта — команда для модуля программы установки. Рассмотрим в качестве примера стандартный скрипт автоматической установки операционной системы:

Внимание! Не нужно без оглядки применять этот рецепт на любом дистрибутиве. Рекомендуем сначала установить дистрибутив, потом посмотреть лог выполняемых команд в /root/.install-log/wizard.log


; установка языка операционной системы (ru_RU)
("/sysconfig-base/language" action "write" lang ("ru_RU"))
; установка переключателя расладки клавиатуры на Ctrl+Shift
("/sysconfig-base/kbd" action "write" layout "ctrl_shift_toggle")
; установка часового пояса в Europe/Moscow, время в BIOS будет храниться в UTC
("/datetime-installer" action "write" commit #t name "RU" zone "Europe/Moscow" utc #t)
; автоматическая разбивка жёсткого диска
("/evms/control" action "write" control open installer #t)
("/evms/control" action "write" control update)
("/evms/profiles/workstation" action apply commit #f clearall #t exclude ())
("/evms/control" action "write" control commit)
("/evms/control" action "write" control close)
; установка пакетов операционной системы
("pkg-init" action "write")
; установка только базовой системы (дополнительные группы пакетов из pkg-groups.tar указываются по именам через пробел)
("/pkg-install" action "write" lists "" auto #t)
("/preinstall" action "write")
; установка загрузчика GRUB в MBR на первый жёсткий диск
("/grub" action "write" device "/dev/sda" passwd #f passwd_1 "*" passwd_2 "*")
; настройка сетевого интерфейса на получение адреса по DHCP
("/net-eth" action "write" reset #t)
("/net-eth" action "write" name "eth0" configuration "dhcp" default "" search "" dns "" computer_name "c245")
; настройка сетевого интерфейса на статический IPv4
; ("/net-eth" action "write" name "eth0" configuration "static" default "192.168.1.1" search "localhost.com" dns "192.168.1.1" computer_name "c245" ipv "4" ipv_enabled #t)
; ("/net-eth" action "add_iface_address" name "eth0" addip "192.168.1.2" addmask "24" ipv "4")
("/net-eth" action "write" commit #t)
; установка пароля суперпользователя root '123'
("/root/change_password" language ("ru_RU") passwd_2 "123" passwd_1 "123")
; задание первого пользователя 'test' с паролем '123'
("/users/create_account" new_name "test" gecos "" allow_su #t auto #f passwd_1 "123" passwd_2 "123")

Внимание!

При установке пакета alterator-net-domain имя узла (computer_name) не должно содержать точку, иначе это может вызвать сбой установки. Подробности: altbug #27017

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

Файл /var/cache/alterator/vm-profile.scm содержит сценарий на языке scheme, описывающий формат автоматической разбивки жёсткого диска. Рассмотрим его на примере:

((workstation
  (title . "Setup for workstation")
  (action . trivial)
  (actiondata  ("swap" (size 1024000 . 1024000) (fsim . "SWAPFS") (methods plain))
               ("/" (size 20971520 . 20971520 ) (fsim . "Ext2/3") (methods plain))
               ("/home" (size 1024000 . #t) (fsim . "Ext2/3") (methods  plain))))
               )


Обратите внимание: числовые константы не закавычиваются! Типичным следствием такой ошибки является оценка "требуется 0 MB".

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

В примере указана разбивка:

  • подкачка (swap) — 512 МБ;
  • корневой раздел (/) — 10 ГБ;
  • /home - всё остальное, но не меньше 500 МБ.

Вы можете не указывать этот профиль вообще, возложив автоматическую разметку на профиль в составе дистрибутива (куда он может попасть из сборочного профиля либо в результате выполнения скрипта из пакета вроде volumes-profile-* или installer-distro-*; вариант по умолчанию содержится в alterator-vm).

Имя профиля (workstation) указывается в autoinstall.scm:

("/evms/profiles/workstation" action apply commit #f clearall #t exclude ())

См. тж.:

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

Файл pkg-groups.tar представляет собой tar-архив с двумя подкаталогами: groups (содержащий описание групп программного обеспечения в файлах .desktop) и lists (содержащий файлы со списками пакетов для каждой группы). В подкаталоге lists находится скрытый файл .base, содержащий список пакетов «базовой системы» (то есть те пакеты, которые устанавливаются в любом случае). Описание форматов указания групп описано в Alterator-pkg.

Файл pkg-groups.tar проще всего взять с диска из каталога /Metadata/ и доработать, если необходимо.

Для изменения списка пакетов распакуйте архив командой

tar xf pkg-groups.tar

После этого перейдите в подкаталог lists и добавьте или измените файл группы. Имена пакетов указываются по одному в каждой строке. Имя файла используемой группы затем указывается через пробел в autoinstall.scm:

(("pkg-install") action "write" lists "group-1 group-2" auto #t)

где group-1 и group-2 — имена файлов со списками пакетов из подкаталога lists.

После исправлений упакуйте снова в архив командой:

tar cf pkg-groups.tar groups lists
Внимание! Учтите, что в качестве источника пакетов при установке выступает сам диск, поэтому указание не лежащих на нём пакетов приведёт к сбою установки. Если хотите добавить новые пакеты, пересоберите диск дистрибутива или используйте скрипты, выполняющиеся после установки.


Автоустановка в UEFI

В файле autoinstall.scm поменять установку загрузчика с /dev/vda на efi:

("/grub" action "write" language ("ru_RU") device "efi")

В файле vm-profile.scm добавить разбивку диска для /boot/efi:

("/boot/efi" (size 1024000 . 1024000 ) (fsim . "FAT32") (methods plain))

Настройка установки по ipxe

Перейти в каталог /var/lib/tftpboot.

Создать файл grub.cfg со следующим содержимым:

set timeout=5
menuentry "Start autoinstall" {
  linuxefi /vmlinuz fastboot live lowmem  ramdisk_size=871661 showopts ai curl=ftp://192.168.1.100/metadata/ automatic=method:cdrom quiet splash stagename=altinst automatic=method:nfs,network:dhcp,server:192.168.1.100,directory:/srv/public/netinst/mnt/
  initrdefi /full.cz
}

Скопировать файлы full.cz и vmlinuz из /srv/public/netinst/mnt/syslinux/alt0/ в /var/lib/tftpboot/:

# cp /srv/public/netinst/mnt/syslinux/alt0/{full.cz,vmlinuz} /var/lib/tftpboot/

Извлечь файлы из rpm-пакета shim-signed-*.rpm и скопировать shimx64.efi в папку /var/lib/tftpboot:

# rpm2cpio /srv/public/netinst/mnt/ALTLinux/RPMS.main/shim-signed-15-alt1.x86_64.rpm | cpio -idmv
# cp usr/lib64/efi/shimx64.efi /var/lib/tftpboot/

Перейти в папку /var/lib/tftpboot и скачать файл grubx64.efi:

# rpm2cpio /srv/public/netinst/mnt/ALTLinux/RPMS.main/grub-efi-2.02-alt29.x86_64 | cpio -idmv
# cp usr/lib64/efi/grubx64.efi /var/lib/tftpboot/

Для nfs-установки добавить в файл /etc/exports следующую строчку:

/srv/public/netinst/mnt -ro,insecure,no_subtree_check,fsid=1 *

Применить изменения:

# exportfs -r

В файле /etc/dhcp/dhcpd.conf строчку filename изменить на:

filename "shimx64.efi"

Перезапустить сервис dhcpd:

# systemctl restart dhcpd

alterator-postinstall

С апреля 2015 года появился пакет alterator-postinstall[1], который позволяет выполнить в конце установки или при первом запуске команду или скрипт, скачиваемый по сети. Этот пакет должен устанавливаться вместе с другими пакетами, так как запускается во второй стадии установки.

Пример использования:

("/postinstall/firsttime" script "http://server/post.sh")

Уровни запуска (указываются после префикса /postinstall/:

laststate
Скрипт запускается при завершении Alterator (перед перезагрузкой после установки)
firsttime
Скрипт запускается во время первого запуска ОС

Типы команд:

("/postinstall/laststate" script "http://server/script.sh")

Скрипт скачивается с сервера и выполняется

("/postinstall/laststate" run "command arg1 arg2")

Запуск команды и аргументов. Возможно указание перенаправления.

Примечание по chroot

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

#!/bin/sh

a= . install2-init-functions

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

Профили

Альт Образование 9.2

Все группы, диск разбивается на два раздела: 1 ГиБ — подкачка (swap), от 30 ГиБ и до конца диска — /.
Часовой пояс: Europe/Moscow, пароли — 123 для root и для пользователя user.
Имя хоста: host-229.
autoinstall.scm

("/sysconfig-base/language" action "write" lang ("ru_RU"))
("/sysconfig-base/kbd" action "write" layout "alt_sh_toggle")
("/datetime-installer" action "write" commit #t name "RU" zone "Europe/Moscow" utc #t ctime "")
("/evms/control" action "write" control open installer #t)
("/evms/control" action "write" control update)
("/evms/profiles/workstation" action apply commit #f clearall #t exclude ())
("/evms/control" action "write" control commit)
("/evms/control" action "write" control close)
("pkg-init" action "write")
;;; Установить все группы, но требуется около 21 ГиБ
;;; ("/pkg-install" action "write" lists "education/base education/preschool education/gradeschool education/highschool education/secondary_vocational education/university education/kde5 education/teacher education/server-apps-edu education/video-conferencing" auto #t)
;;; Минимальная установка с графической средой (6,6 ГиБ)
("/pkg-install" action "write" lists "" auto #t)
("/preinstall" action "write")
("/grub" action "write" device "/dev/sda" passwd #f passwd_1 "*" passwd_2 "*")
("/net-eth" action "write" name "" ipv "4" configuration "dhcp" default "" search "" dns "" computer_name "host-229" ipv_enabled #t)
("/net-eth" action "write" commit #t)
("/root/change_password" passwd_auto "*" passwd_2 "123" passwd_1 "123")
("/users/create_account" new_name "user" gecos "" allow_su #t auto #f passwd_auto "*" passwd_1 "123" passwd_2 "123" autologin #f)

vm-profile.scm

((workstation
  (title . "Setup for workstation")
  (action . trivial)
  (actiondata  ("swap" (size 2048000 . 2048000) (fsim . "SWAPFS") (methods plain))
               ("/" (size 62914560 . #t ) (fsim . "Ext2/3") (methods plain))
               )))

Советы и секреты

  • Для отладки укажите в параметрах загрузки ядра instdebug
  • При установке пакетов могут возникать ошибки. Отследить их можно командой:
    grep E: /tmp/pkg-install.log

Примечания