|
Трансмиссионное масло Онлайн-консультации. Виртуальный клуб любителей Вольво. shopmoto.ru |
|
Раздвижные окна Вызов замерщика. Новости и акции. okna-alba.ru |
Статья опубликована в журнале
Практически каждый пользователь Linux хоть раз да собирал свой дистрибутив. Разработчики Calculate Linux предлагают свой вариант.
Необходимость иметь свой вариант системы для системного администратора, да и обычного пользователя может быть продиктована многими факторами. Среди главных — удобство развертывания, когда в устанавливаемой системе присутствует все необходимые приложения, последние версии ядра и системных библиотек, модули локализации, драйвера и так далее.
В Microsoft кстати это тоже отлично понимают и корпорация предлагает средства пересборки системы — пакет автоматической установки Windows (Windows Automated Installation Kit) и Microsoft Deployment Toolkit. Конечно же Linux развивается несколько иным путем, так дистрибутивы выходят гораздо чаще Windows и собираются по другому принципу. Хотя не все релизы считаются стабильными и рекомендуются разработчиками к промышленному применению. А при массовом развертывании на предприятии используются стабильные релизы рекомендуемые разработчиками, например Ubuntu LTS (Long Term Support). Очевидно, это одна из причин по которой в Linux большее распространение получили системы автоматической инсталляции, например такие как – Kickstart. При помощи подготовленного Kickstart файла можно установить дистрибутив с заданными параметрами и набором приложений. Изначально Kickstart появился в RedHat, и сегодня используется его многочисленными клонами и некоторыми другими дистрибутивами вроде Ubuntu. Пересборка системы производится в основном энтузиастами и для собственных нужд. А в инструментарии большинства дистрибутивов мы не найдем удобных средств для этого. Здесь можно отметить Ubuntu Customization Kit () и rBuilder (), средство сборки дистрибутива rPath. Конечно, есть Linux From Scratch, который хотя и пользуется некоторой популярностью, но вряд ли может послужить средством массового применения.
Основой Calculate Linux послужил Gentoo. До недавнего времени развивались две основные ветки – серверная CDS (Calculate Directory Server) и для настольных систем CLD (Calculate Linux Desktop). Последняя была представлена в двух вариантах с разными рабочими столами: CLD это KDE 4.x и CLDX – XFCE 4.6.х. Недавно в семействе Calculate Linux появился совершенно новый вариант Calculate Linux Scratch (CLS) – представляющий собой LiveCD, предназначенный для самостоятельной сборки системы под любые задачи. Идея вообщем проста – вместо готовых сборок, в которых часто нет необходимого конкретному пользователю софта, дать удобный инструмент позволяющий создать нужное решение самостоятельно. История появления CLS проста. В начале, была собрана информация о том, что не устраивает пользователей Gentoo в других бинарных дистрибутивах построенных на Gentoo, в частности Calculate и Sabayon. Выяснились две причины: отсутствие нужного софта и отсутствие сборки Calculate Linux с рабочим столом GNOME. В итоге оптимальный дистрибутив устраивающий всех, должен был содержать только те программы и библиотеки которые будут установлены в большинстве случаев – XOrg, Firefox, библиотеки, системные утилиты, драйвера. Так собственно и выглядит CLS.
Первая CLS версия под номером 9.8 вышла в августе 2009 года. Главная особенность появление режима интерактивной сборки системы, позволяющего внести изменения в состав дистрибутива. Причем сразу стало доступно два варианта: CLS и CLSG. Версия CLSG содержит облегченную среду Gnome (gnome-base/gnome-light), менеджер сеансов GDM и Wicd для графической настройки проводных и wifi сетей (всего на ~80 пакетов больше CLS). Дистрибутив выпущен под две архитектуры i686 и x86_64. Первоначально CLS ориентировался именно на стороннего пользователя, сами же разработчики не планировали использовать его для сборки Calculate Linux. Но результат заставил пересмотреть это мнение и теперь CLS является основной для всех будущих версий Calculate Linux, как серверных так и настольных. Ведь CLS может выступать при сборке в роли stage3, содержит portage и базовый софт, а все что отличается в USE флагах (например, в KDE версии) при необходимости пересобирается, но таких пакетов достаточно мало. Так если при стандартной сборке Gentoo (и CLS) “emerge -e system” выполняется дважды, то далее уже в этом нет необходимости, а значит экономится время и ресурсы. Кроме того, учитывая достаточно небольшой состав приложений, для самостоятельной сборки CLS не требуется больших ресурсов. Продолжая ежемесячный цикл выпуска новых версий, последние два релиза дистрибутива (август и сентябрь) были именно CLS/CLSG.
В середине сентября появился следующий релиз CLS 9.9, в котором:
Размер образа:
Чтобы воспользоваться режимом интерактивной сборки следует установить дистрибутив на жесткий диск с параметром “—build”, либо выбрать режим загрузки “Builder” в загрузочном меню LiveCD.
В этом случае файловая система после загрузки системы будет состоять из трех слоев aufs2 (Advanced Multi Layered Unification File System, представляет собой усовершенствованную реализацию файловой системы Unionfs 2):
Все указанные слои являются подкаталогами в /mnt/scratch и автоматически образуются после загрузки системы.
# mount | grep /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, а тестировать в обычном. Обновляем утилиту calculate.
# layman -S; emerge calculateОбновляем портежи (в принципе релизы CLS выходят раз в месяц и этот шаг можно пропустить):
# eix-syncИ устанавливаем нужное приложение:
# emerge weechatПо окончании сборки программа будет сразу же доступна в рабочей системе. В слое дельта появятся новые файлы и библиотеки. Аналогичным образом добавляем и остальные приложения. По окончании работы выходим из режима сборки командой “exit”.
Теперь чтобы собрать загрузочный ISO образ, достаточно смонтировать раздел жесткого диска (если объема ОЗУ достаточно этот шаг можно пропустить):
# mount /dev/sda3 /usr/calculate/share/linuxИ затем собираем образ командой:
# calculate --isoЧерез некоторое время в каталоге /usr/calculate/share/linux появится ISO образ с новой системой.
# ls /usr/calculate/share/linux/ cls-9.9-i686.iso cls-9.9-i686.iso.DIGESTS
Еще важный момент. Если CLS для сборки установлен на флэшку (calculate -d /dev/sdX), можно пересобрать оригинальный файл livecd.squashfs, в котором собственно, и находится система сохранив изменения. Для этого достаточно ввести команду:
# calculate --rebuildНовый файл будет иметь другой порядковый номер сборки. При следующей загрузке будет уже использован новый образ со всеми изменениями.
Следует заметить, что полученный в интерактивном режиме дистрибутив подходит для массового пользователя, но считается не совместимым с Calculate Directory Server (CDS). Чтобы собрать совместимый с CDS вариант, необходимо использовать обычный режим сборки.
Чтобы использовать обычный режим сборки системы следует установить Calculate Linux, (любую версию CLS/CLSG, CLD, CLDX или CDS) на жесткий диск обычным образом. Затем копируем в каталог /usr/calculate/share/linux установленной системы ISO образ CLS оригинальный (если нужна оригинальная версия системы, предложенная разработчиками) или созданный нами в интерактивном режиме. Вначале следует приготовить систему для сборки командой “calculate” запустив ее с параметром “-c/—configure”.
# layman -S; emerge calculate # calculate -c -s 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 образ. Проверяем:
# ls /usr/calculate/share/linux/ cls-9.9-i686.iso
Второе возможное сообщение требует архив с portage.
To continue copy file "portage-YYYYMMDD.tar.bz2" to directory "/usr/calculate/share/snapshots".
Для всех систем кроме 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
Смотрим:
# mount | grep /mnt/builder 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.
# mount | grep /mnt/builder /dev/sda3 on /mnt/builder type reiserfs (rw)
Если скрипт не сможет определить раздел самостоятельно, его следует указать при помощи параметра “-d”.
В процессе работы команды будет изменен файл /mnt/builder/etc/make.conf, в соответствии с настройками выбранной системы, в частности USE флаги, языковые настройки. Сравним оригинальный make.conf с CLS и образовавшийся после ввода “calculate –c –s CLDX”
# diff /etc/make.conf /mnt/builder/etc/make.conf 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остав пакетов которые будут установлены можно просмотреть при помощи:
# calculate –lПравим при необходимости /mnt/builder/etc/make.conf (man make.conf) и епереходим к шагу проверки и размаскировки зависимостей для чего используем ключ “-D/—dependence”.
# calculate -D# calculate –mВсе новые пакеты пересобирается с флагом “—newuse”, то что есть пропускается.
По окончании упаковываем дистрибутив в архив (7z) командой:
# calculate -pИ создаем ISO образ:
# calculate --iso -s cldРезультат сборки системы можно увидеть в каталоге /usr/calculate/share/linux/.
В итоге сборка системы при помощи Calculate Linux Scratch выглядит на порядок проще и происходит быстрее, чем сборка того же Gentoo. Путем довольно нехитрых манипуляций можно получить на выходе готовый дистрибутив под свои задачи.
С момента выхода первой статьи в Calculate Linux появилась поддержка “из коробки” DNS и DHCP серверов, в качестве реализации выбраны BIND и dhcpd. Соответственно добавлены и новые утилиты:
Установка и управление заданными сервисами осуществляется также просто. Например, Чтобы установить DNS, используем команду “cl-setup dns”, во время установки DHCP сразу задаются параметры работы при помощи такой команды:
cl-setup --router <ip шлюза> --dnames < имена доменов> --range < диапазон ip>\ --net </ip><ip сети с маской /24> --dnsip </ip><ip DNS сервера> dhcp </ip>
Плюс полезная утилита “cl-unmask”, предназначенная для размаскировки пакетов, которая является альтернативой “autoumnask”.
Формат вывода прост:
# cl-unmask package1 package2Файл размаскировки создается для всех версий включая последнюю.