Основные механизмы установки дистрибутива Gentoo
Установка дистрибутива Gentooразделяется на два основных этапа:
1. Подготовительный этап:
a. Подготовка и монтирование жесткого диска;
b. Установка даты и времени;
c. Скачивание и установка Stage3;
d. Скачивание и установка дерева портэжей;
e. Конфигурирование системы.
2. Заключительный этап. Этот этап проходит уже в новой среде:
a. Выбор профиля;
b. Локализация и настройка часового пояса;
c. Загрузка исходных кодов ядра;
d. Конфигурирование и сборка ядра;
e. Настройка монтирования разделов жесткого диска;
f. Настройка сетевых параметров;
g. Установка пароля суперпользователя;
h. Установка системных утилит;
i. Настройка и установка загрузчика.
Далее разъясняется значения терминов использованных выше.
Stage3 – подготовленная минимальная система для установки и набор базовых компонентов целевой системы. Также возможна установка из stage2 (без набора базовых компонентов целевой системы) или из stage1 (минимальная систем для установки должна быть подготовлена самим пользователем). В данный момент официально поддерживается установка только из stage3.
Дерево портэжей – набор метаданных о доступных пакетах для системы управления пакетами Portage.
Portage — основная система управления пакетами в Gentoo Linux. Аналог системы портов FreeBSD. Представляет собой набор утилит на Python и Bash, призванных облегчить и упорядочить установку программного обеспечения из исходных кодов или бинарных пакетов, с учетом всех зависимостей.
Основной пользовательский интерфейс Portage — консольная программа emerge, которая позволяет устанавливать новые пакеты с учетом зависимостей и с возможностью управления вариантами установки — например с поддержкой определенных функций или без поддержки ненужных функций (управление параметрами сборки осуществляется через так называемые USE-флаги), удалять ненужные пакеты, обновлять установленные пакеты, проводить синхронизацию с деревом портэжей (по протоколу rsync) и т. д. Программа ebuild служит интерфейсом низкого уровня к Portage, а emerge — высокоуровневая оболочка для неё.
Главный конфигурационный файл системы Portage — /etc/make.conf. В нем настраиваются основные параметры компиляторов и дополнительные возможности их использования (например, применением ccache, distcc), установки USE-флагов, HTTP-прокси, FTP-прокси, SYNC, ACCEPT_KEYWORDS и других, необходимых для работы системы Portage.
Другие конфигурационные файлы системы находятся в /etc/portage/ и позволяют более тонко конфигурировать различные аспекты системы portage.
Профиль — это набор конфигурационных файлов, хранимый в подкаталоге /usr/portage/profiles, описывающий сценарии ebuild системных пакетов, флаги использования (USE) по умолчанию, отображение виртуальных пакетов по умолчанию, а также архитектуру, на которой запускается система.
Используемый профиль определяется символьной ссылкой /etc/make.profile, которая указывает на подкаталог в /usr/portage/profiles, содержащий файлы профиля. К примеру, профиль x86 2005.1 по умолчанию находится в /usr/portage/profiles/default-linux/x86/2005.1. Файлы в родительских каталогах также входят в состав профиля (и, таким образом, совместно используются различными подпрофилями). Поэтому мы называем такие профили каскадными профилями.
USE-флаг — это ключевое слово, включающее сведения о поддержке и зависимостях определенного понятия или функции. При определении какого-либо USE-флага, Portage узнает, что вам нужна поддержка соответствующей функции. Конечно, это также влияет на сведения о зависимостях пакета.
Давайте рассмотрим конкретный пример — ключевое слово kde. Если в вашей переменной USE нет этого слова, то все пакеты, где поддержка KDE является необязательной, собираются без нее. Все пакеты, где зависимость от KDE является необязательной, устанавливаются без установки библиотек KDE (по зависимости). Если же вы определите ключевое слово kde, то эти пакеты будут собираться с поддержкой KDE, а KDE будет установлен в качестве необходимого пакета.
Есть два типа USE-флагов: глобальные и локальные.
· Глобальный USE-флаг используется несколькими пакетами и является системным. Это то, что большинство видит в качестве USE-флагов.
· Локальный USE-флаг используется единичным пакетом для настройки определенных параметров самого пакета.
Список доступных глобальных USE-флагов можно найти в сети или локально в /usr/portage/profiles/use.desc.
Список локальных USE-флагов находится в вашей системе в /usr/portage/profiles/use.local.desc.
Планирование структуры программы установки
Прежде всего, необходимо правильно спланировать логику выполнения установки дистрибутива. В ходе обдумывания могут появляться особенности языка или дистрибутива, которые могут поставить под вопрос вообще возможности реализации программы установки.
Логичнее всего было бы разделить процесс установки на уровни. Для выполнения каждого уровня необходимо иметь определенный набор входных данных, выполнить некоторые команды, и на выходе получить конечный результат. При необходимости, логично было бы предоставить возможность повтора некоторых уровней, по мере возможности, а при выполнении необратимых действий задавать вопросы о действительном выполнении данного уровня [7-8].
В языке bashимеется возможность создавать функции, и вызывать их по мере необходимости. Так же возможно подключать другие файлы с функциями и использовать их.
Рассмотрим функции, которые необходимо реализовать:
· Возможность редактирования разделов жестких дисков, их удаление, форматирование, создание, размещение на них файловых систем, монтирование в нужные каталоги и указание корневого каталога, для дальнейшего использования.
· Проверка даты и времени, установка правильных параметров (очень важный пункт, несмотря на то, что очень простой, неверная установка может дать в дальнейшем непредвиденные и неожиданные результаты).
· Выбор нужной архитектуры компьютера, выбор зеркал, наилучших для пользователя, скачивание файлов архива stage3 и системы портэжей, их распаковка и проверка целостности.
· Конфигурирование системы, установка нужных флагов оптимизации, предложение изменить какие либо настройки, копирование информации о настройках сети в новую среду, монтирование дополнительных файловых систем для новой среды, копирование файла локализации, копирование файла, содержащего продолжение данного скрипта, для выполнения в новой среде, переход в новую среду.
Данные функции способствуют выполнению всех шагов установки Gentoo, следуя руководству пользователя. После выполнения команды chroot пользователь оказывается в новой среде GentooLinux, и дальнейшее выполнение скрипта уже не возможно, до выхода из среды. Следовательно, было принято решение разделить программу установки на две части, и разместить остальные функции в разные файлы. В первой части содержаться все функции по подготовке среды и переходу в нее, т.е. все команды до chroot. Далее первая часть будет копировать файл, содержащий функции второй части в новую среду, делать его исполняемым, и запускать на выполнение уже в новой среде. Во второй части будут содержаться необходимые функции для настройки самой среды, компилирования ядра дистрибутива, установки загрузчика и выход из среды, обратно, тем самым завершая выполнение второй части и возвращаясь в первую.Далее пользователь может перезапустить свою liveCDсистему или продолжить вручную конфигурировать установленную систему, например установить дополнительные пакеты до перезагрузки.
Во второй части так же необходимо выполнить следующие функции:
· Автоматическое обновление переменных окружения, обновление дерева портэжей, выбор подходящего профиля новой среды
· Настройка часового пояса и локализации системы
· Конфигурирование ядра GentooLinux, компилирование ядра и модулей ядра, задание имени ядра, копирование ядра в папку загрузки
· Установка загрузчика на выбранный жесткий диск, редактирование конфигурации загрузчика
· Выход из новой среды установки, для перезагрузки
После выполненных функций мы получаем установленный, настроенный и сконфигурированный под конкретное оборудование дистрибутив GentooLinux.