Сборка системы при помощи пакета calculate-assemble

Страница устарела. Для сборки систем, утилитами 3.4, используйте следующее руководство:
http://www.calculate-linux.ru/main/ru/calculate-builder

Назначение

Пакет calculate-assemble предназначен для сборки загрузочного LiveCD-образа дистрибутива с поддержкой установки на жесткий диск и USB Flash. Кроме того, с помощью этого пакета утилит собираются Stage-образы.

Возможности

  • поддерживаемые архитектуры: i686 и x86_64;
  • профили сборки: Gentoo и Calculate данных архитектур;
  • поддержка параллельной сборки нескольких дистрибутивов;
  • поддержка сборки 32-битных дистрибутивов на 64-битной системе.

Установка

Пакет calculate-assemble входит в состав утилит Calculate 2 и требует для своей работы пакеты: calculate-install, calculate-builder, calculate-templates, calculate-lib.

Последнюю версию пакета calculate-assemble можно установить из оверлея calculate, который включен по умолчанию во все дистрибутивы Calculate Linux. Чтобы подключить оверлей из Gentoo, установите пакет app-portage/layman (если он у вас не установлен) и подключите оверлей, выполнив:

layman -a calculate

После этого вы можете установить пакет с помощью emerge.

Использование

Все операции по сборке системы выполняются утилитами cl-assemble и cl-make. Для создания ISO-образа дистрибутива используется утилита cl-image, входящая в пакет sys-apps/calculate-builder.

Необходимые файлы

Для сборки вам понадобится выход в интернет и перечисленные ниже предварительно загруженные файлы.

Обязательные файлы:
  • stage3 образ Gentoo, либо ISO образ Calculate Linux, в т.ч. собранный вами.
    Если вы намерены использовать для сборки образа stage3, создайте директорию var/calculate/remote/stages и поместите туда архив 32-битной (например, отсюда) или 64-битной системы (например, отсюда). Если для сборки будет использоваться образ Calculate Linux, поместите его в директорию /var/calculate/remote/linux.
Необязательные файлы:
  • Portage - архив дерева портежей. Создайте директорию /var/calculate/remote/snapshots
    и поместите туда свежую версию портежей, например, отсюда.

Перед началом работы изучите справку команды cl-assemble, выполнив:

cl-assemble --help

Для сборки вам потребуется около 15 Гб свободного места на жестком диске. В случае создания бинарных пакетов необходимо выделить место и для них (около 5 Гб). Под образ дистрибутива понадобится около 2 Гб.

Сборка дистрибутива производится в отдельном разделе жесткого диска. Готовый образ и бинарные пакеты сохраняются в директории /var/calculate/remote. Поэтому позаботьтесь о наличии свободного места (2 Гб или 7 Гб) в /var/calculate/remote, а также свободного раздела около 15 Гб на жестком диске.

Подготовка системы к сборке

Подготовка системы к сборке выполняется командой:

cl-assemble

Основные опции

  • -d DISK, --disk DISK - раздел для сборки системы
    Убедитесь, что в разделе у вас не хранится информации. В случае необходимости выполните резервную копию ваших данных. Вся информация в разделе будет утеряна!
  • --march ARCH - выбор архитектуры операционной системы (i686 или x86_64)
    Исходя из выбранной архитектуры, будет сформирован список совместимых профилей.
  • -p PROFILE, --profile - системный профиль, список возможных профилей можно получить, указав в параметре значение "list".
  • --source SOURCE - базовый образ для сборки - 'stage' или 'SHORTNAME'.
    За основу дистрибутива может быть взят stage3-образ Gentoo, либо любой образ Calculate Linux. В последнем случае следует указывать короткое имя дистрибутива, например "--source=CDS".
  • --ver VER - версия собираемой системы
    Целое либо дробное число номера версии. В качестве разделителя выступает точка. Поддерживается указание двух точек в номере версии. В случае отсутствия версии будет использована дата, состоящая из года, месяца и дня создания образа.
  • --name=SHORTNAME</NAME></SUBNAME> - наименование дистрибутива - сокращенное, полное, суффикс (пример: CLD/Calculate Linux Desktop/KDE)

Дополнительные опции

  • --sync SYNC - установить предпочитаемое rsync зеркало для портежей. (начиная с версии 2.2.25-r4 можно использовать git-зеркало)
  • --no-unmount - не отключать раздел с собираемой системой, если произошла ошибка. (начиная с версии 2.2.25-r4 calculate-assemble не отключает разделы по умолчанию)
  • --unmount - отключать раздел с собираемой системой, если произошла ошибка.
  • --nobuildpkg - не создавать бинарные пакеты собранных программ.

При подготовке системы к сборке раздел для сборки системы будет отформатирован и примонтирован в директорию /mnt/<профиль>. Раздел будет отформатирован той же файловой системой, которая использовалась ранее, если она поддерживается утилитой.

Во время подготовки системы выполняются следующие шаги:

  • Форматирование раздела (для быстрой очистки)
  • Распаковка базового образа
  • Распаковка портежей (в случае наличия архива портежей в директории /var/calculate/remote/snapshots)
  • Настройка шаблонами assemble/prepare
  • Подключение точек монтирования /dev, /dev/shm, /dev/pts, /proc, /sys, /var/calculate/remote
  • Обновлениие портежей
  • Установка layman
  • Загрузка оверлея calculate
  • Настройка шаблонами assemble/setup
  • Подключение calculate-install к конфигурированию пакетов (в случае использования одного из профилей Calculate)
  • Установка portage
  • Получение исходного кода ядра (из пакета calculate-sources, при наличии USE флага "vmlinuz" emerge компилирует и устанавливает ядро)
  • Установка v86d
  • Обновление baselayout и установка openrc (выполняется при использовании одного из профилей Calculate)
  • Установка man-db (выполняется при использовании одного из профилей Calculate)
  • Выполнение etc-update
  • Создание группы games(35)(группы создаются для фиксации номеров ID)
  • Создание группы plugdev(440)
  • Создание группы scanner(441)
  • Отключение базового образа системы

Проверка зависимостей

После подготовки системы к сборке следует проверить зависимости и при необходимости исправить их, размаскировав пакеты. Выполнить это можно командой:

cl-make -D <-p профиль>

Обратите внимание, здесь и далее профиль дистрибутива можно указывать сокращённо. Например, для профиля "calculate/desktop/CLD/amd64" вы можете указать "CLD", "CLD/amd64", "desktop/amd64" или "amd64$". В последнем случае знак "$" в конце означает конец имени профиля. В случае если вы собираете одновременно только один дистрибутив, профиль можно не указывать.

Сборка системы

Сборка системы выполняется командой:

cl-make -m <-p профиль>

Во время сборки будут загружены все необходимые пакеты с исходными текстами программ в директорию /var/calculate/remote/distfiles. В случае если вы не указали параметр --nobuildpkg, будут созданы архивы бинарных пакетов программ в директории /var/calculate/remote/assemble/<профиль>/packages.

Обновление системы

Обновление образа системы, как и сборку, можно выполнить при помощи утилиты cl-make. Для этого подготовьте систему к сборке при помощи утилиты cl-assemble по описанию выше, указав образ обновляемого дистрибутива в опции --source.

Обновите систему командой:

cl-make -u <-p профиль>

Во время обновления выполняются следующие шаги:

  • Настройка шаблонами assemble/prepare и assemble/setup@
  • Обновление портежей
  • Выполнение emerge --update perl
  • Выполнение perl-cleaner all (по необходимости)
  • Выполнение emerge --noreplace calculate-meta
  • Выполнение emerge -deep --newuse world
  • Выполнение emerge --update --deep world
  • Выполнение emerge --depclean
  • Выполнение module-rebuild -X rebuild (по необходимости)
  • Выполнение revdep-rebuild -i (по необходимости)
  • Выполнение prelink -afmR (по необходимости)
  • Сборка nvidia-drivers
  • Чистка бинарного репозитория (по необходимости)
  • Выполнение eix-update

Вы можете также выполнить обновление системы без обновления портежей. Например, если обновление портежей было выполнено вручную, либо вы вносили определенные изменения с установкой пакетов, воспользовавшись chroot-доступом. Для обновления в этом случае выполните:

cl-make -U <-p профиль>

Помните, что вы всегда можете получить доступ к системе при помощи chroot, выполнив:

chroot /mnt/<профиль>

Пример:

chroot /mnt/calculate-desktop-CLD-amd64-developer

В имени директории "профиль" все слэши "/" будут заменены на тире "-".

Обратите внимание: для доступа к собираемой 32-битной системе из-под 64-битной команду chroot следует выполнять так:

linux32 chroot /mnt/<профиль>

Пример:

linux32 chroot /mnt/calculate-desktop-CLD-x86-developer

Создание загрузочного образа

После сборки или обновления системы можно создать загрузочный ISO-образ командой:

cl-image -p <профиль> iso

Дистрибутив будет сохранен в директории /var/calculate/remote/assemble/<профиль>/linux/. Помимо ISO-образа, будет создан файл с контрольными суммами и файл с составом программ.

Прерывание сборки

Прервать сборку с отмонтированием всех ресурсов можно, выполнив:

cl-make -p <профиль> --break

Настройки

Во время сборки системы все настройки собираемых систем хранятся в файле /etc/calculate/assemble.env. Если вам по какой-либо причине пришлось перезагрузить компьютер, удалите этот файл, а также, при необходимости, пустые директории /mnt/<профиль>.

Для упрощения сборки служат внутренние переменные утилит, значения которых можно предопределить в файле calculate.env, по одному из путей: /etc/calculate/calculate.env, /var/calculate/calculate.env или /var/calculate/remote/calculate.env. Для этого создайте в нем секцию [assemble]. Доступные переменные:
  • cl_assemble_sync - RSYNC-сервер (или git-сервер) для синхронизации.
  • cl_assemble_branch - ветка репозитория портежей и оверлея (по умолчанию master)
  • cl_assemble_available_dev - свободные разделы жесткого диска для сборки.

Примеры:

[assemble]
cl_assemble_sync = 192.168.0.2/gentoo-portage
cl_assemble_available_dev = /dev/sda5,/dev/sda6,/dev/sda7

[assemble]
cl_assemble_sync = git://git.calculate.ru/dev/portage.git
cl_assemble_branch = develop
cl_assemble_available_dev = /dev/sda5,/dev/sda6,/dev/sda7
Примечание:
  • Вы можете поднять и использовать локальный RSYNC-сервер или GIT-сервер.
  • В переменной cl_assemble_available_dev может быть указан один или несколько разделов, разделенных запятой. В этом случае раздел будет выбран случайно.
Спасибо!