Autoinstall
Материал из ALT Linux Wiki
(Новая страница: «Дистрибутив ALT Linux можно установить в автоматическом режиме. Для этого нужно иметь установ...») |
м (→Формат файла vm-profile.scm: уточнение по возможному происхождению) |
||
(45 промежуточных версий не показаны.) | |||
Строка 1: | Строка 1: | ||
- | Дистрибутив ALT Linux можно установить в автоматическом режиме. Для этого нужно иметь установочный диск и доступный по сети каталог с несколькими файлами. | + | Дистрибутив ALT Linux можно установить в автоматическом режиме. Для этого нужно иметь установочный диск и доступный по сети каталог с несколькими файлами. |
+ | |||
+ | Данное руководство проверено на установке [[Альт Линукс 6.0 Кентавр]]. | ||
+ | |||
+ | == Требования к дистрибутиву == | ||
+ | Для работы автоустановки в образ установщика необходимо включить пакет {{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. |
+ | |||
+ | Для автоустановки требуется диск с дистрибутивом (в приводе или с сетевого ресурса) и набор из четырёх файлов, описывающих процесс установки. Все четыре файла нужно поместить в каталог, доступный по сети по протоколам HTTP или FTP, и указать путь к нему в параметрах загрузки '''curl'''. | ||
+ | |||
+ | Формат адреса в curl должен быть представлен в виде URL. Пример параметров загрузки: | ||
+ | |||
+ | <pre>ai curl=ftp://192.168.0.1/metadata/</pre> | ||
+ | |||
+ | {{Note|Для этого достаточно создать на сервере каталог {{path|/var/srv/public/metadata}} и положить туда файлы. Параметры загрузки образа можно прописать в файле конфигурации {{path|/var/lib/tftpboot/pxelinux.cfg/default}}.}} | ||
+ | |||
+ | {{Attention|По умолчанию сервер отдаёт по протоколу https:// с самоподписанным сертификатом, поэтому лучше использовать протокол ftp://}} | ||
+ | |||
+ | При невозможности получения из указанного источника по сети, программа установки будет смотреть в следующих местах: | ||
+ | # на диске в каталоге '''/Metadata/''' | ||
+ | # в образе установщика в каталоге '''/usr/share/install2/metadata/''' | ||
+ | |||
+ | {{Attention|Автоустановка работает со штатными дистрибутивами пока только при сетевой установке. При запуске с диска сеть недоступна. Подробности: {{altbug|26813}}.}} | ||
+ | |||
+ | == Содержимое каталога metadata == | ||
+ | |||
+ | В каталоге metadata могут быть следующие файлы: | ||
+ | * '''autoinstall.scm''' — сценарий установки на языке scheme. [[Файл:Autoinstall.scm|Пример файла autoinstall.scm]] | ||
+ | * '''vm-profile.scm''' — схема разбивки жёсткого диска на языке Scheme. [[Файл:Vm-profile.scm|Пример файла vm-profile.scm]] | ||
+ | * '''pkg-groups.tar''' — архив, содержащий дополнительные к базовой системе группы пакетов (можно просто взять с диска из подкаталога Metadata/ <source lang="Bash">cp /srv/public/netinst/mnt/Metadata/pkg-groups.tar /srv/public/metadata/</source> | ||
+ | |||
+ | == Делаем «собственный» дистрибутив == | ||
+ | |||
+ | При автоустановке по сети (например, через 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 представляет из себя командный скрипт для программы установки, написанный с использованием языка программирования scheme. Каждая строка крипта — команда для модуля программы установки. Рассмотрим в качестве примера стандартный скрипт автоматической установки операционной системы: | ||
+ | |||
+ | <source lang="lisp">; установка языка операционной системы (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" language ("ru_RU") device "/dev/sda") | ||
+ | ; настройка сетевого интерфейса на получение адреса по 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 (например, в Альт Линукс 6.0 Кентавр) имя узла (''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|Учтите, что в качестве источника пакетов при установке выступает сам диск, поэтому указание не лежащих на нём пакетов приведёт к сбою установки. Если хотите добавить новые пакеты, пересоберите диск дистрибутива или используйте скрипты, выполняющиеся после установки.}} | ||
+ | |||
+ | == alterator-postinstall == | ||
+ | |||
+ | С апреля 2015 года появился пакет {{pkg|alterator-postinstall}}[https://github.com/sergelogvinov/alterator-postinstall.git], который позволяет выполнить в конце установки или при первом запуске команду или скрипт, скачиваемый по сети. Этот пакет должен устанавливаться вместе с другими пакетами, так как запускается во второй стадии установки. | ||
+ | |||
+ | Пример использования: | ||
+ | <source lang="Lisp">("/postinstall/firsttime" script "http://server/post.sh")</source> | ||
+ | |||
+ | Уровни запуска (указываются после префикса {{cmd|/postinstall/}}: | ||
+ | ;laststate | ||
+ | :Скрипт запускается при завершении Alterator (перед перезагрузкой после установки) | ||
+ | ;firsttime | ||
+ | :Скрипт запускается во время первого запуска ОС | ||
+ | |||
+ | Типы команд: | ||
+ | <source lang="Lisp">("/postinstall/laststate" script "http://server/script.sh")</source> | ||
+ | Скрипт скачивается с сервера и выполняется | ||
+ | <source lang="Lisp">("/postinstall/laststate" run "command arg1 arg2")</source> | ||
+ | Запуск команды и аргументов. Возможно указание перенаправления. | ||
+ | |||
+ | === Примечание по chroot === | ||
+ | На уровне {{cmd|laststate}} для работы с установленной системой требуется указывать пути с {{path|$destdir}} или выполнять команды через {{cmd|run_chroot}}: | ||
+ | post.sh | ||
+ | <source lang="Bash">#!/bin/sh | ||
+ | |||
+ | a= . install2-init-functions | ||
- | + | run_chroot sh -c "date > /root/STAMP_1" | |
+ | date > $destdir/root/STAMP_2</source> | ||
- | + | == Советы и секреты == | |
+ | * Для отладки укажите в параметрах загрузки ядра {{term|instdebug}} | ||
+ | == Примечания == | ||
+ | <references/> | ||
- | + | {{Category navigation|title=Программное обеспечение|category=Программное_обеспечение|sortkey={{SUBPAGENAME}}}} | |
- | + | {{Category navigation|title=HOWTO|category=HOWTO|sortkey={{SUBPAGENAME}}}} |
Текущая версия на 17:46, 4 марта 2016
Дистрибутив ALT Linux можно установить в автоматическом режиме. Для этого нужно иметь установочный диск и доступный по сети каталог с несколькими файлами.
Данное руководство проверено на установке Альт Линукс 6.0 Кентавр.
Содержание |
Требования к дистрибутиву
Для работы автоустановки в образ установщика необходимо включить пакет 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/
При невозможности получения из указанного источника по сети, программа установки будет смотреть в следующих местах:
- на диске в каталоге /Metadata/
- в образе установщика в каталоге /usr/share/install2/metadata/
Содержимое каталога 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) есть возможность править состав и скрипты автоустановки «вживую».
- Распакуйте содержимое установочного диска в /srv/public/netinst/mnt.
- Добавьте autoinstall.scm в каталог в /srv/public/netinst/mnt/Metadata.
- Можете добавить свои пакеты в состав пакетов в подкаталоге ALTLinux/RPMS.main. После этого запустите
genbasedir --topdir=/srv/public ALTLinux main
Формат файла autoinstall.scm
Файл autoinstall.scm представляет из себя командный скрипт для программы установки, написанный с использованием языка программирования scheme. Каждая строка крипта — команда для модуля программы установки. Рассмотрим в качестве примера стандартный скрипт автоматической установки операционной системы:
; установка языка операционной системы (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" language ("ru_RU") device "/dev/sda") ; настройка сетевого интерфейса на получение адреса по 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 (например, в Альт Линукс 6.0 Кентавр) имя узла (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 ())
См. тж.:
- письмо, про
size
; -
письмо, про-- судя по alterator-vm.git, начиная от alterator-vm-0.4.1-alt8, помимоmethods
(methods plain)
есть поддержка и(methods raid plain)
.
Формат файла 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
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
Советы и секреты
- Для отладки укажите в параметрах загрузки ядра instdebug