Собираем свой дистрибутив с Calculate Linux Scratch::Журнал СА 12.2009
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Архив номеров
Контакты
   

  Опросы
  Статьи

Электронный документооборот  

5 способов повысить безопасность электронной подписи

Область применения технологий электронной подписи с каждым годом расширяется. Все больше задач

 Читать далее...

Рынок труда  

Системные администраторы по-прежнему востребованы и незаменимы

Системные администраторы, практически, есть везде. Порой их не видно и не слышно,

 Читать далее...

Учебные центры  

Карьерные мечты нужно воплощать! А мы поможем

Школа Bell Integrator открывает свои двери для всех, кто хочет освоить перспективную

 Читать далее...

Гость номера  

Дмитрий Галов: «Нельзя сказать, что люди становятся доверчивее, скорее эволюционирует ландшафт киберугроз»

Использование мобильных устройств растет. А вместе с ними быстро растет количество мобильных

 Читать далее...

Прошу слова  

Твердая рука в бархатной перчатке: принципы soft skills

Лауреат Нобелевской премии, специалист по рынку труда, профессор Лондонской школы экономики Кристофер

 Читать далее...

1001 и 1 книга  
19.03.2018г.
Просмотров: 9926
Комментарии: 0
Потоковая обработка данных

 Читать далее...

19.03.2018г.
Просмотров: 8136
Комментарии: 0
Релевантный поиск с использованием Elasticsearch и Solr

 Читать далее...

19.03.2018г.
Просмотров: 8240
Комментарии: 0
Конкурентное программирование на SCALA

 Читать далее...

19.03.2018г.
Просмотров: 5219
Комментарии: 0
Машинное обучение с использованием библиотеки Н2О

 Читать далее...

12.03.2018г.
Просмотров: 5902
Комментарии: 0
Особенности киберпреступлений в России: инструменты нападения и защита информации

 Читать далее...

Друзья сайта  

 Собираем свой дистрибутив с Calculate Linux Scratch

Архив номеров / 2009 / Выпуск №12 (85) / Собираем свой дистрибутив с Calculate Linux Scratch

Рубрика: Администрирование /  Серверная

 СЕРГЕЙ ЯРЕМЧУК, фрилансер. Автор более 800 статей и 4 книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС

Собираем свой дистрибутив
с Calculate Linux Scratch

Практически каждый пользователь Linux хоть раз да собирал свой дистрибутив. Разработчики Calculate Linux предлагают свой вариант.

Необходимость иметь свой вариант системы для системного администратора, да и обычного пользователя может быть продиктована многими факторами. Среди главных – удобство развертывания, когда в устанавливаемой системе присутствуют все необходимые приложения, последние версии ядра и системных библиотек, модули локализации, драйвера и так далее.

В Microsoft, кстати, это тоже отлично понимают, и корпорация предлагает средства пересборки системы – пакет автоматической установки Windows (Windows Automated Installation Kit) [1] и Microsoft Deployment Toolkit.

Конечно же, Linux развивается несколько иным путем, дистрибутивы выходят гораздо чаще Windows и собираются по другому принципу. Хотя не все релизы считаются стабильными и рекомендуются разработчиками к промышленному применению. А при массовом развертывании на предприятии используются стабильные релизы, рекомендуемые разработчиками, например Ubuntu LTS (Long Term Support).

Очевидно, это одна из причин, по которой в Linux большее распространение получили системы автоматической инсталляции, например, такие как – Kickstart. При помощи подготовленного Kickstart-файла можно установить дистрибутив с заданными параметрами и набором приложений. Изначально Kickstart появился в RedHat, и сегодня используется его многочисленными клонами и некоторыми другими дистрибутивами вроде Ubuntu. Пересборка системы производится в основном энтузиастами и для собственных нужд. А в инструментарии большинства дистрибутивов мы не найдем удобных средств для этого.

Здесь можно отметить Ubuntu Customization Kit (UCK) [2] и rBuilder, средство сборки дистрибутива rPath [3]. Конечно, есть Linux From Scratch, который хотя и пользуется некоторой популярностью, но вряд ли может послужить средством массового применения.

Основой Calculate Linux [4], о котором уже говорилось на страницах журнала [5], послужил 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 для графической настройки проводных и Wi-Fi-сетей (всего приблизительно на 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, в котором:

  •  перешли на файловую систему Aufs2;
  •  сохранена 100-процентная совместимость с Gentoo (по сути, Calculate уже практически является частью Gentoo, оверлей помещен в layman, ebuild calculate2 планируется перенести в портежи);
  •  используется ядро gentoo-sources;
  •  поддерживается установка на USB-Flash и на HDD/USB-HDD (с файловой системой: ext4, ext3, ext2, reiserfs, xfs и jfs);
  •  появилась новая утилита cl-unmask, предназначенная для размаскировки пакетов;
  •  обновлены X.Org 7.4, Kernel 2.6.30.5, Firefox 3.5.3, Gnome 2.24.1 (в CLSG).

 Размер образа:

  •  CLS 9.9: i686 – 573 Мб, x86_64 – 629 Мб;
  •  CLSG 9.9: i686 – 651 Мб, x86_64 – 709 Мб.

Собираем дистрибутив в интерактивном режиме

Чтобы воспользоваться режимом интерактивной сборки, следует установить дистрибутив на жесткий диск с параметром --build либо выбрать режим загрузки Builder в загрузочном меню LiveCD. В этом случае файловая система после загрузки системы будет состоять из трех слоев aufs2 (Advanced Multi Layered Unification File System, представляет собой усовершенствованную реализацию файловой системы Unionfs 2):

  • calculate – первый слой, являющийся образом системы, загружаемой с носителя (livecd.squashfs), и смонтированный в режиме «только для чтения». Это основа будущего дистрибутива, которую можно менять;
  • delta – слой, в котором сохраняются все изменения, произведенные во время сборки;
  • workspace – рабочий слой, в котором производятся все манипуляции по изменению исходной системы.

Рисунок 1. В загрузочном меню Calculate Linux Scratch выбираем Build

Рисунок 1. В загрузочном меню Calculate Linux Scratch выбираем Build

Все указанные слои являются подкаталогами в /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, а тестировать в обычном.

Рисунок 2. В Calculate 1.2.6 необходимо закомментировать строчку

Рисунок 2. В Calculate 1.2.6 необходимо закомментировать строчку

Обновляем утилиту calculate.

# layman -S; emerge calculate

Обновляем портежи (в принципе релизы CLS выходят раз в месяц и этот шаг можно пропустить):

# eix-sync

И устанавливаем нужное приложение:

# emerge weechat

По окончании сборки программа будет сразу же доступна в рабочей системе. В слое delta появятся новые файлы и библиотеки. Аналогичным образом добавляем и остальные приложения. По окончании работы выходим из режима сборки командой 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 вариант, необходимо использовать обычный режим сборки.

Рисунок 3. Подготавливаем систему к сборке

Рисунок 3. Подготавливаем систему к сборке

Обычный режим сборки

Чтобы использовать обычный режим сборки системы, следует установить Calculate Linux (любую версию CLS/CLSG, CLD, CLDX или CDS) на жесткий диск обычным образом. Затем копируем в каталог /usr/calculate/share/linux установленной системы ISO-образ CLS оригинальный (если нужна оригинальная версия системы, предложенная разработчиками) или созданный нами в интерактивном режиме.

Вначале следует приготовить систему для сборки командой calcalute, запустив ее с параметром:

# calculate -c/--configure

По умолчанию будет производиться сборка текущей версии системы, то есть если работаем в CLS, то и собираться будет CLS. Чтобы указать другой вариант дистрибутива, добавляем параметр –s/--os=[CLD|CLDX|CLS|CLSG|CDS]. И готовим систему к сборке, например CLDX.

# 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).

Рисунок 4. Проверка зависимостей

Рисунок 4. Проверка зависимостей

Как вариант лучше изменить сам скрипт, закомментировав одну строку в разделе «Определим наличие 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

По окончании – самый долгий этап – сборка системы при помощи ключа -m/--make:

# calculate –m

Все новые пакеты пересобираются с флагом --newuse, то, что есть, пропускается. По окончании упаковываем дистрибутив в архив (7z) командой:

# calculate -p

И создаем ISO-образ:

# calculate --iso -s cld

Результат сборки системы можно увидеть в каталоге /usr/calculate/share/linux/.

***

В итоге сборка системы при помощи Calculate Linux Scratch выглядит на порядок проще и происходит быстрее, чем сборка того же Gentoo. Путем довольно нехитрых манипуляций можно получить на выходе готовый дистрибутив под свои задачи.

Приложение

Новое в Calculate Linux

С момента выхода первой статьи в Calculate Linux появилась поддержка «из коробки» DNS- и DHCP-серверов, в качестве реализации выбраны BIND и dhcpd. Соответственно, добавлены и новые утилиты:

  • Для управления DNS – cl-dns-recadd, cl-dns-recdel, cl-dns-recmod, cl-dns-zoneadd, cl-dns-zonedel, cl-dns-zonemod.
  • Для управления DHCP – cl-dhcp-hostadd, cl-dhcp-hostdel, cl-dhcp-hostmod, cl-dhcp-netadd, cl-dhcp-netdel, cl-dhcp-netmod.

Установка и управление заданными сервисами осуществляется также просто. Например, чтобы установить DNS, используем команду:

cl-setup dns

Во время установки DHCP сразу задаются параметры работы при помощи такой команды:

cl-setup --router <ip шлюза> --dnames <имена доменов> --range <диапазон ip> --net <ip сети с маской /24> --dnsip <ip DNS сервера> dhcp

Плюс полезная утилита cl-unmask, предназначенная для размаскировки пакетов, которая является альтернативой autoumnask. Формат вывода прост:

# cl-unmask package1 package2

Файл размаскировки создается для всех версий включая последнюю.

  1. Яремчук С. Основные изменения в WAIK для Windows Server 2008 R2/7. //Системный администратор, №4, 2009 г. – С. 16-19.
  2. Ubuntu Customization Kit – http://uck.sourceforge.net.
  3. rPath rBuilder – http://www.rpath.org.
  4. Сайт проекта Calculate Linux – http://www.calculate-linux.ru.
  5. Яремчук С. Строим сеть на Calculate Directory Server. //Системный администратор, №8, 2009 г. – С. 16-22.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru