https://www.altlinux.org/api.php?action=feedcontributions&user=89.207.92.141&feedformat=atomALT Linux Wiki - Вклад [ru]2024-03-29T15:44:43ZВкладMediaWiki 1.38.2https://www.altlinux.org/index.php?title=Autoinstall&diff=52347Autoinstall2021-02-18T12:22:47Z<p>89.207.92.141: Правка стиля</p>
<hr />
<div>Дистрибутив ALT Linux можно установить в автоматическом режиме. Для этого нужно иметь установочный диск и доступный по сети каталог с несколькими файлами. <br />
<br />
Данное руководство проверено на установке [[Альт Сервер 9|Альт Сервер 9.1]] (FalcoRusticolus).<br />
<br />
== Требования к дистрибутиву ==<br />
Для работы автоустановки в образ установщика необходимо включить пакет {{pkg|curl}} — в случае [[m-p|mkimage-profiles]] это цель <tt>use/install2/net</tt> или непосредственно:<br />
@$(call add,INSTALL2_PACKAGES,curl)<br />
<br />
Если используется постустановочная доводка, включите в базовые пакеты {{pkg|alterator-postinstall}}<ref>https://github.com/sergelogvinov/alterator-postinstall</ref>:<br />
@$(call add,BASE_PACKAGES,alterator-postinstall)<br />
<br />
== Запуск установки ==<br />
<br />
Для включения режима автоматической установки ядру инсталятора операционной системы необходимо передать параметр загрузки '''ai''' (без значения). Сделать это можно в меню загрузки диска или в приглашении '''boot:''' при загрузке по сети. Автоустановка поддерживается в следующих режимах установки: http, ftp, cdrom, disk, nfs.<br />
<br />
Для автоустановки требуется диск с дистрибутивом (в приводе или с сетевого ресурса) и набор из четырёх файлов, описывающих процесс установки. Все четыре файла нужно поместить в каталог, доступный по сети по протоколам HTTP или FTP, и указать путь к нему в параметрах загрузки '''curl'''. <br />
<br />
Формат адреса в curl должен быть представлен в виде URL. Пример параметров загрузки:<br />
<br />
<pre>ai curl=ftp://192.168.0.1/metadata/</pre><br />
<br />
{{Note|Для этого достаточно создать на сервере каталог {{path|/srv/public/metadata}} и положить туда файлы. Параметры загрузки образа можно прописать в файле конфигурации {{path|/var/lib/tftpboot/pxelinux.cfg/default}}.}}<br />
<br />
{{Attention|По умолчанию сервер отдаёт по протоколу https:// с самоподписанным сертификатом, поэтому лучше использовать протокол ftp://}}<br />
<br />
При невозможности получения из указанного источника по сети, программа установки будет смотреть в следующих местах:<br />
# на диске в каталоге '''/Metadata/'''<br />
# в образе установщика в каталоге '''/usr/share/install2/metadata/'''<br />
<br />
{{Attention|Автоустановка работает со штатными дистрибутивами пока только при сетевой установке. При запуске с диска сеть недоступна. Подробности: {{altbug|26813}}.}}<br />
<br />
== Содержимое каталога metadata ==<br />
<br />
В каталоге metadata могут быть следующие файлы:<br />
* '''autoinstall.scm''' — сценарий установки на языке scheme. [[Файл:Autoinstall.scm|Пример файла autoinstall.scm]]<br />
* '''vm-profile.scm''' — схема разбивки жёсткого диска на языке Scheme. [[Файл:Vm-profile.scm|Пример файла vm-profile.scm]]<br />
* '''pkg-groups.tar''' — архив, содержащий дополнительные к базовой системе группы пакетов (можно просто взять с диска из подкаталога Metadata/ <source lang="Bash">cp /srv/public/netinst/mnt/Metadata/pkg-groups.tar /srv/public/metadata/</source><br />
<br />
== Делаем «собственный» дистрибутив ==<br />
<br />
При автоустановке по сети (например, через alterator-netinst) есть возможность править состав и скрипты автоустановки «вживую». <br />
<br />
# Распакуйте содержимое установочного диска в ''/srv/public/netinst/mnt''.<br />
# Добавьте autoinstall.scm в каталог в ''/srv/public/netinst/mnt/Metadata''.<br />
# Можете добавить свои пакеты в состав пакетов в подкаталоге ALTLinux/RPMS.main. После этого запустите <pre>genbasedir --topdir=/srv/public ALTLinux main</pre><br />
<br />
== Формат файла autoinstall.scm ==<br />
<br />
Файл autoinstall.scm представляет из себя командный скрипт для программы установки, написанный с использованием языка программирования scheme. Каждая строка скрипта — команда для модуля программы установки. Рассмотрим в качестве примера стандартный скрипт автоматической установки операционной системы:<br />
<br />
{{Attention|Не нужно без оглядки применять этот рецепт на любом дистрибутиве. Рекомендуем сначала установить дистрибутив, потом посмотреть лог выполняемых команд в {{path|/root/.install-log/wizard.log}}}}<br />
<br />
<source lang="lisp">; установка языка операционной системы (ru_RU)<br />
("/sysconfig-base/language" action "write" lang ("ru_RU"))<br />
; установка переключателя расладки клавиатуры на Ctrl+Shift<br />
("/sysconfig-base/kbd" action "write" layout "ctrl_shift_toggle")<br />
; установка часового пояса в Europe/Moscow, время в BIOS будет храниться в UTC<br />
("/datetime-installer" action "write" commit #t name "RU" zone "Europe/Moscow" utc #t)<br />
; автоматическая разбивка жёсткого диска<br />
("/evms/control" action "write" control open installer #t)<br />
("/evms/control" action "write" control update)<br />
("/evms/profiles/workstation" action apply commit #f clearall #t exclude ())<br />
("/evms/control" action "write" control commit)<br />
("/evms/control" action "write" control close)<br />
; установка пакетов операционной системы<br />
("pkg-init" action "write")<br />
; установка только базовой системы (дополнительные группы пакетов из pkg-groups.tar указываются по именам через пробел)<br />
("/pkg-install" action "write" lists "" auto #t)<br />
("/preinstall" action "write")<br />
; установка загрузчика GRUB в MBR на первый жёсткий диск<br />
("/grub" action "write" device "/dev/sda" passwd #f passwd_1 "*" passwd_2 "*")<br />
; настройка сетевого интерфейса на получение адреса по DHCP<br />
("/net-eth" action "write" reset #t)<br />
("/net-eth" action "write" name "eth0" configuration "dhcp" default "" search "" dns "" computer_name "c245")<br />
; настройка сетевого интерфейса на статический IPv4<br />
; ("/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)<br />
; ("/net-eth" action "add_iface_address" name "eth0" addip "192.168.1.2" addmask "24" ipv "4")<br />
("/net-eth" action "write" commit #t)<br />
; установка пароля суперпользователя root '123'<br />
("/root/change_password" language ("ru_RU") passwd_2 "123" passwd_1 "123")<br />
; задание первого пользователя 'test' с паролем '123'<br />
("/users/create_account" new_name "test" gecos "" allow_su #t auto #f passwd_1 "123" passwd_2 "123")<br />
</source><br />
<br />
'''Внимание!'''<br />
<br />
При установке пакета alterator-net-domain имя узла (''computer_name'') не должно содержать точку, иначе это может вызвать сбой установки. Подробности: {{altbug|27017}}<br />
<br />
<div id="vm-profile"></div><br />
<br />
== Формат файла vm-profile.scm ==<br />
<br />
Файл {{path|/var/cache/alterator/vm-profile.scm}} содержит сценарий на языке scheme, описывающий формат автоматической разбивки жёсткого диска. Рассмотрим его на примере:<br />
<br />
<source lang="lisp">((workstation<br />
(title . "Setup for workstation")<br />
(action . trivial)<br />
(actiondata ("swap" (size 1024000 . 1024000) (fsim . "SWAPFS") (methods plain))<br />
("/" (size 20971520 . 20971520 ) (fsim . "Ext2/3") (methods plain))<br />
("/home" (size 1024000 . #t) (fsim . "Ext2/3") (methods plain))))<br />
)</source><br />
<br />
<br />
<br />
Обратите внимание: числовые константы ''не'' закавычиваются! Типичным следствием такой ошибки является оценка "требуется 0 MB".<br />
<br />
Все числа указаны в виде 512-байтных блоков, поэтому чтобы получить размер в байтах, нужно умножить значения на 512.<br />
<br />
В примере указана разбивка:<br />
* подкачка (swap) — 512 МБ;<br />
* корневой раздел (/) — 10 ГБ;<br />
* /home - всё остальное, но не меньше 500 МБ.<br />
<br />
Вы можете не указывать этот профиль вообще, возложив автоматическую разметку на профиль в составе дистрибутива (куда он может попасть из сборочного профиля либо в результате выполнения скрипта из пакета вроде {{pkg|volumes-profile-*}} или {{pkg|installer-distro-*}}; вариант по умолчанию содержится в {{pkg|alterator-vm}}).<br />
<br />
Имя профиля (workstation) указывается в autoinstall.scm:<br />
<source lang="lisp">("/evms/profiles/workstation" action apply commit #f clearall #t exclude ())</source><br />
См. тж.:<br />
* [http://lists.altlinux.org/pipermail/devel/2007-April/057886.html письмо, про <code>size</code>];<br />
* <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>.<br />
<br />
== Формат файла pkg-groups.tar ==<br />
<br />
Файл pkg-groups.tar представляет собой tar-архив с двумя подкаталогами: ''groups'' (содержащий описание групп программного обеспечения в файлах .desktop) и ''lists'' (содержащий файлы со списками пакетов для каждой группы). В подкаталоге lists находится скрытый файл ''.base'', содержащий список пакетов «базовой системы» (то есть те пакеты, которые устанавливаются в любом случае). Описание форматов указания групп описано в [[Alterator-pkg]].<br />
<br />
Файл pkg-groups.tar проще всего взять с диска из каталога '''/Metadata/''' и доработать, если необходимо.<br />
<br />
Для изменения списка пакетов распакуйте архив командой <br />
tar xf pkg-groups.tar<br />
<br />
После этого перейдите в подкаталог ''lists'' и добавьте или измените файл группы. Имена пакетов указываются по одному в каждой строке. Имя файла используемой группы затем указывается через пробел в autoinstall.scm:<br />
<br />
<source lang="lisp">(("pkg-install") action "write" lists "group-1 group-2" auto #t)</source><br />
<br />
где group-1 и group-2 — имена файлов со списками пакетов из подкаталога ''lists''.<br />
<br />
После исправлений упакуйте снова в архив командой:<br />
tar cf pkg-groups.tar groups lists<br />
<br />
{{Attention|Учтите, что в качестве источника пакетов при установке выступает сам диск, поэтому указание не лежащих на нём пакетов приведёт к сбою установки. Если хотите добавить новые пакеты, пересоберите диск дистрибутива или используйте скрипты, выполняющиеся после установки.}}<br />
<br />
== Автоустановка в UEFI ==<br />
<br />
В файле '''autoinstall.scm''' поменять установку загрузчика с ''/dev/vda'' на ''efi'':<br />
<br />
<source lang="lisp">("/grub" action "write" language ("ru_RU") device "efi")</source><br />
<br />
В файле '''vm-profile.scm''' добавить разбивку диска для ''/boot/efi'':<br />
<br />
<source lang="lisp">("/boot/efi" (size 1024000 . 1024000 ) (fsim . "FAT32") (methods plain))</source><br />
<br />
Настройка установки по ipxe: <br />
Перейти в папку {{path|/var/lib/tftpboot}}.<br />
Создать файл '''grub.cfg''' со следующим содержимым:<br />
<source lang="lisp"><br />
set timeout=5<br />
menuentry "Start autoinstall" {<br />
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/<br />
initrdefi /full.cz<br />
}<br />
</source><br />
<br />
Скопировать файлы '''full.cz''' и '''vmlinuz''' из {{path|/srv/public/netinst/mnt/syslinux/alt0/}} в {{path|/var/lib/tftpboot/}}:<br />
<source lang="lisp"><br />
# cp /srv/public/netinst/mnt/syslinux/alt0/{full.cz,vmlinuz} /var/lib/tftpboot/<br />
</source><br />
<br />
Извлечь файлы из rpm-пакета '''shim-signed-*.rpm''' и скопировать '''shimx64.efi''' в папку {{path|/var/lib/tftpboot}}:<br />
<source lang="lisp"><br />
# rpm2cpio /srv/public/netinst/mnt/ALTLinux/RPMS.main/shim-signed-15-alt1.x86_64.rpm | cpio -idmv<br />
# cp usr/lib64/efi/shimx64.efi /var/lib/tftpboot/<br />
</source><br />
<br />
Перейти в папку {{path|/var/lib/tftpboot}} и скачать файл ''grubx64.efi'':<br />
<source lang="lisp"><br />
# rpm2cpio /srv/public/netinst/mnt/ALTLinux/RPMS.main/grub-efi-2.02-alt29.x86_64 | cpio -idmv<br />
# cp usr/lib64/efi/grubx64.efi /var/lib/tftpboot/<br />
</source><br />
<br />
Для nfs-установки добавить в файл {{path|/etc/exports}} следующую строчку:<br />
<source lang="lisp">/srv/public/netinst/mnt -ro,insecure,no_subtree_check,fsid=1 *</source><br />
Применить изменения:<br />
<source lang="lisp"># exportfs -r</source><br />
<br />
В файле {{path|/etc/dhcp/dhcpd.conf}} строчку ''filename'' изменить на:<br />
<source lang="lisp">filename "shimx64.efi"</source><br />
<br />
Перезапустить сервис ''dhcpd'':<br />
<source lang="lisp"># systemctl restart dhcpd</source><br />
<br />
== alterator-postinstall ==<br />
<br />
С апреля 2015 года появился пакет {{pkg|alterator-postinstall}}[https://github.com/sergelogvinov/alterator-postinstall.git], который позволяет выполнить в конце установки или при первом запуске команду или скрипт, скачиваемый по сети. Этот пакет должен устанавливаться вместе с другими пакетами, так как запускается во второй стадии установки.<br />
<br />
Пример использования:<br />
<source lang="Lisp">("/postinstall/firsttime" script "http://server/post.sh")</source><br />
<br />
Уровни запуска (указываются после префикса {{cmd|/postinstall/}}:<br />
;laststate<br />
:Скрипт запускается при завершении Alterator (перед перезагрузкой после установки)<br />
;firsttime<br />
:Скрипт запускается во время первого запуска ОС<br />
<br />
Типы команд:<br />
<source lang="Lisp">("/postinstall/laststate" script "http://server/script.sh")</source><br />
Скрипт скачивается с сервера и выполняется<br />
<source lang="Lisp">("/postinstall/laststate" run "command arg1 arg2")</source><br />
Запуск команды и аргументов. Возможно указание перенаправления.<br />
<br />
=== Примечание по chroot ===<br />
На уровне {{cmd|laststate}} для работы с установленной системой требуется указывать пути с {{path|$destdir}} или выполнять команды через {{cmd|run_chroot}}:<br />
post.sh<br />
<source lang="Bash">#!/bin/sh<br />
<br />
a= . install2-init-functions<br />
<br />
run_chroot sh -c "date > /root/STAMP_1"<br />
date > $destdir/root/STAMP_2</source><br />
<br />
== Советы и секреты ==<br />
* Для отладки укажите в параметрах загрузки ядра {{term|instdebug}}<br />
<br />
== Примечания ==<br />
<references/><br />
<br />
{{Category navigation|title=Программное обеспечение|category=Программное_обеспечение|sortkey={{SUBPAGENAME}}}}<br />
{{Category navigation|title=HOWTO|category=HOWTO|sortkey={{SUBPAGENAME}}}}</div>89.207.92.141