10:48 Собираем свой дистрибутив с Calculate Linux Scratch | |
Чтобы воспользоваться режимом интерактивной сборки,
следует установить дистрибутив на жесткий диск с параметром --build
либо выбрать режим загрузки Builder в загрузочном меню LiveCD. В этом
случае файловая система после загрузки системы будет состоять из трех
слоев aufs2 (Advanced Multi Layered Unification File System,
представляет собой усовершенствованную реализацию файловой системы
Unionfs 2):
Все указанные слои являются подкаталогами в /mnt/scratch и автоматически образуются после загрузки системы.
tmpfs on /mnt/scratch/delta type tmpfs (rw,relatime) tmpfs on /mnt/scratch/workspace type tmpfs (rw,relatime) /dev/loop0 on /mnt/scratch/calculate type squashfs (ro,relatime) Собственно, по наличию каталога /mnt/scratch и определяется текущий режим работы системы (в нашем случае Builder). Переходим в режим интерактивной сборки, введя в консоли cl-builder, после выполнения команды приглашение изменит цвет. Вся дальнейшая работа в текущей виртуальной консоли будет производиться в chroot-окружении /mnt/builder. Теперь можно работать как обычно в Gentoo – обновить портежи, устанавливать, обновлять программы. Здесь необходимо сделать важное замечание. В обычном режиме слои монтируются в таком порядке: calculate + delta + workspace, в интерактивном – calculate + delta. После установки каждого пакета (завершения выполнения emerge) скрипт cl-builder выполняет команду «mount -o remount», перемонтируя заново слой delta. В итоге все изменения в delta сразу же становятся доступными в основной системе (например, появляются ярлыки приложений) и их можно протестировать перед сборкой нового образа. Запуск приложения в chroot-окружении приводит к созданию нежелательных временных файлов, которые затем попадают в образ. Именно поэтому во избежание конфликтов в работе устанавливаемых программ установку и удаление пакетов следует производить только в chroot-окружении через cl-builder, а тестировать в обычном. Рисунок 2. В Calculate 1.2.6 необходимо закомментировать строчку Обновляем утилиту calculate.
Обновляем портежи (в принципе релизы CLS выходят раз в месяц и этот шаг можно пропустить):
И устанавливаем нужное приложение:
По окончании сборки программа будет сразу же доступна в рабочей системе. В слое delta появятся новые файлы и библиотеки. Аналогичным образом добавляем и остальные приложения. По окончании работы выходим из режима сборки командой exit. Теперь чтобы собрать загрузочный ISO-образ, достаточно смонтировать раздел жесткого диска (если объема ОЗУ достаточно, этот шаг можно пропустить):
И затем собираем образ командой:
Через некоторое время в каталоге /usr/calculate/share/linux появится ISO-образ с новой системой.
cls-9.9-i686.iso cls-9.9-i686.iso.DIGESTS Еще важный момент. Если CLS для сборки установлен на флешку (calculate -d /dev/sdX), можно пересобрать оригинальный файл livecd.squashfs, в котором, собственно, и находится система, сохранив изменения. Для этого достаточно ввести команду:
Новый файл будет иметь другой порядковый номер сборки. При следующей загрузке будет уже использован новый образ со всеми изменениями. Следует заметить, что полученный в интерактивном режиме дистрибутив подходит для массового пользователя, но считается не совместимым с Calculate Directory Server (CDS). Чтобы собрать совместимый с CDS вариант, необходимо использовать обычный режим сборки. Обычный режим сборкиЧтобы использовать обычный режим сборки системы, следует установить Calculate Linux (любую версию CLS/CLSG, CLD, CLDX или CDS) на жесткий диск обычным образом. Затем копируем в каталог /usr/calculate/share/linux установленной системы ISO-образ CLS оригинальный (если нужна оригинальная версия системы, предложенная разработчиками) или созданный нами в интерактивном режиме. Вначале следует приготовить систему для сборки командой calcalute, запустив ее с параметром:
По умолчанию будет производиться сборка текущей версии системы, то есть если работаем в CLS, то и собираться будет CLS. Чтобы указать другой вариант дистрибутива, добавляем параметр –s/--os=[CLD|CLDX|CLS|CLSG|CDS]. И готовим систему к сборке, например CLDX.
Building Calculate Linux Desktop Collecting system information Language: en_US Keymap: en_US Timezone: UTC Computer name: calculate Network devices: eth0 (DHCP) Hardware Machine hardware name: i686 Quantity processors: 1 Create directory stages... done. … В версии скрипта calculate (1.2.6) не убраны проверки наличия архивов stage3 и portage, которые требовались ранее для сборки системы. Так, если в процессе появится сообщение: To continue copy file "stage3-i686-YYYYMMDD.tar.bz2" to directory "/usr/calculate/share/stages". Значит в /usr/calculate/share/linux недоступен ISO-образ. Проверяем:
cls-9.9-i686.iso Второе возможное сообщение требует архив с portage.Для всех систем, кроме CDS и CLS, в stage3 и portage нет необходимости, их заменяет сам CLS. Для этих двух систем уже понадобятся последние версии архивов с stage3 и portage. В будущей версии 1.2.8 проверку наличия portage для настольных версий систем обещают убрать (в GIT уже исправления присутствуют). Если это так, можно обновить вручную оверлей Сalculate командой eix-sync (в ходе выполнения configure обновляются оверлей и утилита calculate). Как вариант лучше изменить сам скрипт, закомментировав одну строку в разделе «Определим наличие stage, portage» (строка 1828): # "Определим наличие stage, portage" if(!$data{portage} && !defined $data{arg}{'vars'}){ printmes("\n"); printmes(gettext('To continue copy file')); printmes(" \"portage-YYYYMMDD.tar.bz2\"\n"); printmes(gettext('to directory')); printmes(" \"$data{portagepath}\".\n"); beep(); # Комментируем строку с exit # exit; } После этого подготовка системы к сборке должна пройти без проблем. Если ввести команду «calculate -c» в режиме Builder, получим сообщение: rmdir: failed to remove `/mnt/builder': Device or resource busy Смотрим:
none on /mnt/builder type aufs (rw,relatime,si=150eca98) /usr/calculate/share on /mnt/builder/usr/calculate/share type none (rw,bind) none on /mnt/builder/proc type proc (rw) /dev on /mnt/builder/dev type none (rw,bind) /dev/pts on /mnt/builder/dev/pts type none (rw,bind) При конфигурировании ISO-образ CLS будет распакован в свободный дисковый раздел (специально, чтобы было легко чистить временные файлы), который автоматически форматируется в ReiserFS и монтируется в /mnt/builder.
/dev/sda3 on /mnt/builder type reiserfs (rw) Если скрипт не сможет определить раздел самостоятельно, его следует указать при помощи параметра -d. В процессе работы команды будет изменен файл /mnt/builder/etc/make.conf в соответствии с настройками выбранной системы, в частности USE-флаги, языковые настройки. Сравним оригинальный make.conf с CLS и образовавшийся после ввода «calculate -c -s CLDX»:
7c7 < CFLAGS="-O2 -march=i686 -pipe" --- > CFLAGS="-Os -march=i686 -pipe" 28c28 < gtk --- > gtk -eds -gnome -kde 40c40 < LINGUAS="en ru" --- > LINGUAS="en de es fr it pl pt_BR ru uk" 42c42 < PKGDIR="/usr/calculate/share/packages/CLS/9.9/i686" --- > PKGDIR="/usr/calculate/share/packages/CLDX/9.9/i686" После обновления портежей и выполнения команды «emerge sys-apps/portage» скрипт закончит этап подготовки. Cостав пакетов, которые будут установлены, можно просмотреть при помощи:
Правим при необходимости /mnt/builder/etc/make.conf (man make.conf) и
переходим к шагу проверки и размаскировки зависимостей, для чего
используем ключ
По окончании – самый долгий этап – сборка системы при помощи ключа -m/--make:
Все новые пакеты пересобираются с флагом --newuse, то, что есть, пропускается. По окончании упаковываем дистрибутив в архив (7z) командой:
И создаем ISO-образ:
Результат сборки системы можно увидеть в каталоге /usr/calculate/share/linux/. .p= *** В итоге сборка системы при помощи Calculate Linux Scratch выглядит на порядок проще и происходит быстрее, чем сборка того же Gentoo. Путем довольно нехитрых манипуляций можно получить на выходе готовый дистрибутив под свои задачи. | |
|
Всего комментариев: 0 | |