Anaconda
Содержание
Введение и терминология
Anaconda — это программа для установки операционной системы (далее — ОС) с загрузочного образа на диск компьютера (далее — программа установки, инсталлятор).
Статья описывает использование Anaconda в дистрибутивах на платформах rosa2019.1 (ROSA Fresh >= R12, ROSA Enterprise Desktop >= X5) и rosa2019.05.
Оператор — человек, взаимодействующий с компьютером с целью установки ОС.
LiveCD — полезная нагрузка установочного образа ОС — ОС, запущенная без установки с установочного носителя.
Anaconda позволяет устаналивать ОС в четырех режимах:
- интерактивный графический интерфейс программы установки
- автоматизированный графический интерфейс программы установки
- интерактивный консольный интерфейс программы установки
- автоматизированный консольный интерфейс программы установки
В интерактивном режиме оператор, выполняющий установку ОС, отвечает на вопросы установщика, вносит и изменяет настройки, а в автоматизированном режиме программа установки самостоятельно запускается, выполняет все настройки и установку ОС, не требуя никакого взаимодействия с оператором, что может быть полезно для автоматизированного развертывания рабочих станций и серверов.
Принцип работы
Порядок работы программы установки в любом из режимов можно разделить на следующие этапы:
- чтение cmdline ядра dracut-модулем anaconda внутри initrd (https://anaconda-installer.readthedocs.io/en/latest/boot-options.html) на ранних этапах запуска ОС в LiveCD
- запуск программы установки (автоматизированно исходя из параметров в cmdline или оператором вручную с помощью ярлыка на рабочем столе в запущенной графической оболочке)
- применение настроек (либо из файла настроек автоматизированной установки, либо путем интерактивного взаимодействия с оператором)
- подготовка дисковых устройств (автоматическая или ручная разметка диска)
- копирование LiveCD на подготовленные дисковые разделы через rsync(1) (этот этап называется "Установка программного обеспечения", а копирование производится из исходного LiveCD без учета внесенных в Live-сеансе правок)
- установка загрузчика ОС (Grub2)
- пересборка initramfs (в initramfs LiveCD есть не требуемые в установленной ОС модули, например, модуль Anaconda)
- выполнение пост-установочных скриптов (на данный момент выполняется этот скрипт: https://abf.io/import/anaconda/blob/master/90-rosa1-postinstall.sh, основная задача которого — очистить скопированную с LiveCD систему от более ненужных пакетов, в т.ч. самой программы установки)
Графическая программа установки Anaconda
Графическая программа установки запускается командой liveinst. Как правило, запуск производится внутри запущенной в LiveCD графической оболочки. /usr/bin/liveinst является символической ссылкой на consolehelper, что позволяет запускать /usr/sbin/liveinst от не-root в LiveCD без пароля. liveinst — это bash-скрипт, запускающий /usr/sbin/anaconda (на Python).
Модель построения интерактивного графического интерфейса такова:
- каждая группа настроек вынесена в отдельную группу ("spoke")
- на главном экране есть прямоугольные области для вызова каждой группы
- кнопка "Готово" внутри группы возвращает на главный экран
- если настройки неоптимальные, но допустимые (например, слабый пароль), то по первому нажатию кнопки "Готово" будет показано предупреждение, а второе нажатие применит текущие настройки несмотря на их неоптимальность
- если в установленных внутри группы настройках обнаружены критические ошибки, не позволяющие установить ОС, группа помечается красным цветом шрифта и восклицательным знаком; нужно нажать на нее и исправить настройки
- группа может быть как обязательной к настройке, так и не обязательной
- можно разрабатывать плагины, добавляющие свои группы настроек
- когда необходимый минимум настроек выполнен, можно запустить установку ОС, в процессе которой не будет задано никаких дополнительных вопросов
- по окончанию появится кнопка для закрытия программы установки
- при запуске внутри графической оболочки выключение или перезагрузка компьютера выполяется оператором самостоятельно средствами запущенной графической оболочки
При запуске в неинтерактивном режиме пропускается этап настройки, сразу запускается установка ОС.
Консольная программа установки Anaconda
Консольная программа реализует тот же принцип работы, что и описанная выше графическая программа, однако интерактивное взаимодействие выполняется не с помощью мыши и клавиатуры, а только с помощью клавиатуры. Оператору предлагается выбрать один из нескольких вариантов (например, в какую группу настроек войти) путем ввода цифры или буквы с клавиатуры.
Для запуска консольной программы установки необходимо добавить в cmdline ядра: "systemd.unit=anaconda.target inst.text"
Запустится мультиплексор терминалов tmux, на первой вкладке которого будет запущена консольная программа установки Anaconda.