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

Материал из ALT Linux Wiki
Нет описания правки
(→‎Формат файла vm-profile.scm: письмо, про methods)
Строка 112: Строка 112:
Вы можете не указывать этот профиль вообще, возложив автоматическую разметку на профиль в составе дистрибутива. Имя профиля (workstation) указывается в autoinstall.scm:
Вы можете не указывать этот профиль вообще, возложив автоматическую разметку на профиль в составе дистрибутива. Имя профиля (workstation) указывается в autoinstall.scm:
<source lang="lisp">("/evms/profiles/workstation" action apply commit #f clearall #t exclude ())</source>
<source lang="lisp">("/evms/profiles/workstation" action apply commit #f clearall #t exclude ())</source>
См. тж. [http://lists.altlinux.org/pipermail/devel/2007-April/057886.html это письмо].
См. тж.:
* [http://lists.altlinux.org/pipermail/devel/2007-April/057886.html письмо, про <code>size</code>];
* [http://lists.altlinux.org/pipermail/devel/2007-April/138788.html письмо, про <code>methods</code>].


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

Версия от 18:19, 8 октября 2015

Дистрибутив 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/
Примечание: Для этого достаточно создать на сервере каталог /var/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. Каждая строка крипта — команда для модуля программы установки. Рассмотрим в качестве примера стандартный скрипт автоматической установки операционной системы:

; установка языка операционной системы (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 МБ.

Вы можете не указывать этот профиль вообще, возложив автоматическую разметку на профиль в составе дистрибутива. Имя профиля (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
Внимание! Учтите, что в качестве источника пакетов при установке выступает сам диск, поэтому указание не лежащих на нём пакетов приведёт к сбою установки. Если хотите добавить новые пакеты, пересоберите диск дистрибутива или используйте скрипты, выполняющиеся после установки.


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

Примечания