Журнал LinuxFormat - перейти на главную

LXF150:Дистрибутив своими руками

Материал из Linuxformat
Перейти к: навигация, поиск

Содержание

Дистрибутив своими руками

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

Дистрибутивов сейчас развелось немало — их сотни; но во всем этом многообразии иногда не отыскать такого, который точно отвечал бы вашим придирчивым запросам или потребностям экзотической ниши.

Ну да, если нужен суперстабильный сервер – для этого есть Debian или CentOS; кому подавай новое с иголочки ПО – берите Fedora или Arch; а для промежуточных вариантов всегда наготове Ubuntu.

А если вам требуется киоск, где выполняется всего одно web-приложение? Или – вы хотите распространять фото и видео в необщепризнанном формате?

Быть может, вам просто нужно, чтобы ваши любимые программы были установлены, настроены и готовы к работе сразу после установки последнего обновления. А по умолчанию ни в одном из стандартных дистрибутивов этого нет.

Конечно, мы имеем дело с Linux, и оговорка «по умолчанию» весьма важна. Благодаря усилиям многих разработчиков стало доступным и даже несложным создать полностью свой дистрибутив, делающий все, что вы хотели.

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

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

Начнем мы с самого простого, SUSE Studio, и дойдем в процессе до самого сложного варианта, переделки live CD Ubuntu.

В этой статье каждый найдет что-нибудь для себя; хотите – читайте ее от начала до конца, а хотите – просто останьтесь в более комфортной для вас части. Что бы вы ни делали, получайте удовольствие.

SUSE Studio

На этой и следующей станицах мы займемся SUSE Studio. Это уникальный и впечатляющий программный продукт, и с его помощью собственный дистрибутив на базе SUSE создается с легкостью необыкновенной, был бы только web-браузер. Надеемся, наша пошаговая инструкция даст вам представление о процессе и проиллюстрирует его простоту – перед тем, как вы перейдете в более продвинутый раздел и узнаете, как применять SUSE Studio с большей креативностью.

Шаг за шагом: Основы SUSE Studio

Создайте учетную запись
Войдите и выберите Create New Appliance. Ну что, вы, наверное, взволнованы? Ведь вы на пороге создания целиком и полностью своего собственного дистрибутива...
Выберите шаблон
Раз вы собираете собственный дистрибутив, шаблон берите минимальный. Не забудьте дать ему яркое имя, оригинальное и остроумное – допустим, JonSuse.
Добавьте репозитории
Перейдите на вкладку с программами и следуйте по ссылке, чтобы получить добавочные репозитории. Для настольной ОС рекомендуем добавить Packman и libdvdrepo.
Добавьте программы
Добавьте желаемые пакеты программ, тщательно следя, чтобы не пропустить очевидные, но важные пакеты, такие как NetworkManager, Gnome или KDE и wireless-tools.
Опции локализации
Перейдите на вкладку настройки, укажите опции локализации под General, а чтобы не угодить после загрузки ОС в командную строку, задайте на вкладке Startup уровень запуска по умолчанию равным 5.
Загрузите файлы
Перейдите на вкладку Files и загрузите любые фильмы, изображения или документы, которые вы хотите включить в ваш дистрибутив. Поместите их в домашнюю папку пользователя.
Выберите формат
В разделе Build выберите формат. Для Интернета подойдет Amazon EC2, для передачи друзьям – USB-брелок, а для экспериментов с виртуальными машинами возьмите VMD.
Сборка образа
Нажмите build и подождите. В Chrome можно включить уведомления рабочего стола, чтобы узнать, что все закончено, ведь сборка операционной системы требует времени!
Поделитесь со всеми
И, наконец, предоставьте свой дистрибутив всему миру на пробу. Зайдите на вкладку Share, снабдите дистрибутив описанием и любуйтесь его появлением в SUSE Studio Gallery.

SUSE Studio для асов

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

Все опции, которые пользователю-неадминистратору разрешено менять, содержатся в каталоге home. Обычно вы их не замечаете, так как они содержатся в специальных папках, по умолчанию скрытых – скажем, .mozilla и .chromium. (Если поместить . в начале имени любой папки, она станет скрытой. Команда ls -a или нажатие Ctrl-H в Nautilus отобразит такие папки.)

Так вот, все установки по умолчанию, используемые в приложениях, берутся именно из скрытых папок. Их лагерь – /etc/skeleton, и оттуда они копируются в каталог пользователя home при каждом создании нового пользователя.

Значит, чтобы сделать домашней страницей любого браузера пользователя интрасеть компании, нужно соответствующим образом видоизменить папки .mozilla или .chromium в /etc/skeleton. А в SUSE Studio это очень просто. Соберите дистрибутив, который вы хотите изменить, и вы увидите, что он появился внизу вкладки Builds, рядом со ссылкой Testdrive. Нажмите на нее, чтобы открыть виртуальный экземпляр вашего нового дистрибутива.

Когда он загрузится, вы сможете поменять домашнюю страницу, фон рабочего стола и вообще все что угодно. Это изменит папки с точкой в домашнем каталоге пользователя по умолчанию. После это следует взять их копии и добавить к вкладке Files в Studio.

Для копирования папки с одного компьютера на другой по безопасному сетевому соединению мы воспользуемся командой scp. В системе Testdrive от Studio по умолчанию сеть не работает; ее придется включить, нажав на ссылку над виртуальной машиной.

На той же странице можно увидеть пример команды scp, копирующей файлы на работающую виртуальную машину. Поскольку нам нужно, наоборот, взять файлы с этой машины на локальный компьютер, обратите внимание на значение, стоящее после опции -p, и что за номер у узла стоит после root@.

Обзаведясь этими данными, запустите терминал на локальном компьютере и выполните:

scp -r -o “UserKnownHostsFile /dev/null” -p PORT_NUMBER root@nodeNUMBER.susestudio.com:/home/USER/* /home/LOCALUSER/temp/

В этом примере PORT_NUMBER должен равняться значению, стоящему после -p, NUMBER – номеру узла, USER – имени пользователя по умолчанию, установленного для виртуальной машины, а LOCALUSER – имени вашего пользователя. Это скопирует весь домашний каталог пользователя по умолчанию, чьи установки были изменены, в каталог /temp вашего каталога home.

После этого переключитесь на вкладку Files в Studio и загрузите туда содержимое папки, убедившись, что каталог назначения – /etc/skeleton. При следующей сборке вашего дистрибутива и запуска testdrive вы должны увидеть, что все изменения стоят по умолчанию, как если бы они были записаны на USB-брелок или загружены в виртуальную машину.


Личная Fedora

Из трех наборов инструментов, рассмотренных в этой статье, инструменты Fedora мы считаем интереснее всех. Они не только автоматизируют процесс сборки дистрибутива, но это еще и те самые утилиты, что команда Fedora применяет для сборки официальных версий. Лично нас это окрыляет: ведь, вооружившись терпением и сноровкой, можно создать дистрибутив не хуже Fedora.

Утилиты для создания релизов в проекте – на выбор: Pungi только для установщика и Live CD Creator для создания live CD. Поскольку live CD очень удобны и популярны, мы здесь сделаем упор на них; однако в обоих способах используются файлы Kickstart, а значит, принципы создания одинаковы.

Kickstart

Прежде чем погрузиться в задачу создания собственного дистрибутива в Fedora, вам следует разобраться в работе livecd-creator и, что более важно, в технологии Red Hat, которая называется Kickstart.

Работа livecd-creator весьма похожа на ту, что проделывается при создании собственного live CD Ubuntu. Главное отличие в том, что здесь мы стартуем с пустой файловой системы, а не с заполненной заранее. Для заполнения этой файловой системы livecd-creator считывает инструкции из KS-файла – файла конфигурации, также известного как файл kickstart.

Такие файлы используются в Anaconda, программе-установщике Fedora, для автоматизации процесса и чтобы заранее ответить на вопросы, возникающие при установке. Разумно использовать их также и для создания live CD, поскольку, за исключением нескольких излишних дополнений, все, что происходит – это установка стандартной системы Fedora на сжатую файловую систему.

Файл kickstart – это, как правило, простой текстовый файл, содержащий

  • Раздел command, где определяются установки для всей системы, включая доступные репозитории.
  • Раздел packages, где задается, какие группы пакетов и отдельные пакеты устанавливать.
  • Разделы pre и post, где запускаются скрипты перед созданием корневой файловой системы и после этого.

Единственное требование к файлу kickstart – разделы pre должны идти самыми последними, поскольку они выполняются сразу после парсинга файла, а разделы packages, pre и post – начинаться с объявлений %packages, %pre или %post, а заканчиваться на %end.

Мы сказали «как правило» просто потому, что в случае с live CD разделы pre и post интенсивно используются для создания новых пользователей, новых пакетов загрузки и так далее. Более того, файл kickstart может включать другие файлы kickstart, и порой трудно распознать, где какие установки работают.

Хотя оба эти фактора несколько усложняют создание собственного kickstart с нуля, но, на наше счастье, Fedora Project предоставил кучу файлов-примеров, пригодных в качестве основы для ваших новых проектов. Разделы Includes все еще остаются, но нам, по крайней мере, не придется возиться с initramfs!

Мы покажем вам, как достать средства и образцы для нужных вам kickstarts, поможем осмыслить их и настроить для ваших собственных целей. Поскольку нам нужны официальные утилиты Fedora и их удобные примеры kickstart, первый шаг к построению дистрибутива на базе Fedora состоит в скачивании и установки этих пакетов. Выполните от имени root

yum install livecd-tools spin-kickstarts fedora-kickstarts

После этого вы увидите новую папку /usr/share/spin-kickstarts/ с 18-ю разными файлами kickstart. Для наших целей наиболее важным является fedora-live-base.ks: именно в нем определяется большинство сложных разделов %post, которые необходимы для создания live CD.

Но главное, в нем создается пользователь для live CD, задается минимальный набор пакетов и настраиваются некоторые службы. Взгляните и убедитесь, что вы знакомы с этим – почитайте, в частности, комментарии; но не стремитесь производить в нем изменения, поскольку свои настройки мы будем выполнять в другом месте.

А именно, мы создадим еще один, новый файл kickstart, где все настройки и проделаем; но включим fedora-live-base.ks, чтобы гарантировать себе правильную работу. Потому-то он и важен для нас: он сильно упрощает жизнь.

Настройка

Чтобы начать работать с новым файлом kickstart, убедитесь, что мы сменили папку на /usr/share/spin-kickstarts/ и откройте от имени root новый файл для редактирования – назовите его подходящим образом, например jondora.ks.

Чтобы поделиться своим kickstart, поместите в его начале комментарии, описывающие вашу новую версию Fedora, и предоставьте контакт для связи с вами по поводу исправлений или вопросов:

# jondora.ks
# Description: Jon’s special blend.
# Maintainer: jonathan.roberts@futurenet.com

После этого включите файл fedora-live-base.ks, для гарантии, что все загрузится и будет работать:

%include fedora-live-base.ks

Вы заметили, что в файле fedora-live-base.ks в разделе command есть строки, где язык задается как en_US, а клавиатура – US? Эту установку по умолчанию можно отменить – просто поместите в свой kickstart другое объявление языка и клавиатуры:

lang en_GB.UTF-8
keyboard uk

Оно сработает, так как файлу, который содержит включение, отдается больший приоритет.

Вам, скорее всего, захочется добавить дополнительные пакеты, включая те из RPM Fusion, что предоставляют поддержку воспроизведения мультимедиа. Просто добавьте новую строку с репозиторием в раздел command, содержащую имя и URL репозитория:

repo --name=RPMFusion –baseurl=http:// download1.rpmfusion.org/free/fedora/releases/15/Everything/i386/

После этого, создав новый раздел packages, добавьте пакеты из любого из репозиториев Fedora, а также RPM Fusion:

%packages
@gnome-desktop
gstreamer-ffmpeg
%end

Завершающая премудрость, которой мы поделимся – размещение файлов и настроек пользователя в его домашний каталог по умолчанию. Как и в Ubuntu, простейший способ – разместить их в каталоге /etc/skel, так как все присутствующие там файлы копируются при создании нового пользователя. Более того, владелец файла, контекст SELinux и права доступа сбрасываются, и новый пользователь становится их владельцем.

Как и в SUSE Studio, простейший способ получить должным образом измененный каталог home – создать нового пользователя в существующей системе Fedora, войти под ним и произвести нужные модификации.

Чтобы эти файлы попали на пользовательский live CD, требуется добавить в файл kickstart раздел %post. Как правило, разделы %post выполняются в chroot, то есть в остальной части файловой системы хоста, и пользовательский каталог home там недоступен. К счастью, есть опция --nochroot, которая позволяет выполнять команды за пределами chroot.

%post --nochroot
cp -r /home/custom/* $INSTALL_ROOT/etc/skel
%end

Мы задействовали переменную $INSTALL_ROOT, так как livecd-creator в каждой сборке использует различные временные корневые файловые системы, и понять, какой каталог используется, каждый раз довольно затруднительно. Переменная $INSTALL_ROOT всегда указывает на текущее расположение временной файловой системы, облегчая нам жизнь.

Итак, наша настройка закончена; осталось выполнить всего одну команду, чтобы собрать диск и пустить обработку файлов kickstart:

livecd-creator -c jondora.ks

Вот и все. Вы создали собственный live CD на базе Fedora, используя те же утилиты, что и команда, выпускающая релизы проекта. Ну не круто?


Личный Ubuntu

Ubuntu – один из самых популярных дистрибутивов, и многие дистрибутивы являются производными от него. Вы вряд ли удивитесь, узнав, что и для вас существуют способы построить собственный дистрибутив на основе Ubuntu.

Создание собственной версии Ubuntu не так хорошо документировано, и здесь нет специально разработанного интерфейса, как в SUSE Studio или Fedora, так что это не для слабонервных. Тем не менее, вооружившись временем, терпением и следующими двумя страницами, можно достичь прекрасных результатов.

Выбор базы

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

Так как мы основываемся на Ubuntu live CD, задача номер один – раздобыть ISO-образ текущей версии Ubuntu. Сказать это легко, но вам следует обдумать, какую именно версию брать: основную и более современную Standard или Long Term Support (LTS), более стабильную.

Скачайте ISO-образ с сайта Ubuntu. Следующий шаг – раскрыть его, чтобы получить доступ к его файлам. Можно записать образ на диск и скопировать содержимое на жесткий диск, но это лишний труд.

Лучше воспользоваться командой mount с опцией loop. Она велит Linux рассматривать файл образа диска как физический CD, подключенный к системе.

Команда, выполняющую это действие, запускается от имени root:

sudo mount -o loop /PATH_TO_ISO/ISO_ FILE.iso /mnt

Заглянув в каталог /mnt, вы теперь увидите содержимое ISO-образа; в качестве /mnt может выступать любая папка.

Это даст нам доступ к содержащимся на диске файлам, однако, как и для физического CD, эти файлы доступны только для чтения – изменить их мы пока не можем. Чтобы получить доступ на запись, их придется скопировать в другое, временное, расположение нашего жесткого диска. Создайте рабочую папку work (чтобы все было аккуратно) и подкаталог cd_root, и скопируйте содержимое ISO в подкаталог:

mkdir -p work/cd_root
rsync -r -a --exclude casper/filesystem.squashfs /mnt/* work/cd_root/

Мы исключили casper/filesystem.squashfs, потому что файловая система в Ubuntu live CD содержится в сжатой форме, ради экономии места. Для получения доступа к ней ее нужно разархивировать отдельным действием, и для удобства последующего архивирования поместим все это в отдельную папку, не смешивая с остальным содержимым диска:

sudo unsquashfs -d work/root/ /mnt/casper/filesystem.squashfs

Теперь в каталоге work/root вы увидите все дерево каталогов Linux, и у нас есть доступ ко всем требуемым файлам.


Изменение диска

Нам предстоит работа по изменению содержимого диска, и мы проделаем ее с помощью команды под названием chroot. Она очень важна для создания собственного live CD Ubuntu и полезна для других целей, поэтому требует некоторых пояснений.

chroot заставит ваш компьютер думать, что верхом иерархии файловой системы является папка, отличная от / — при работе в chroot ваш компьютер будет полагать, что папка usr, откуда выполняются все команды, расположена не в /usr, а, скажем, в /home/jon/work/root/usr, а домашняя папка пользователя будет тогда /home/jon/work/root/home.

По сути, это означает, что можно запускать apt-get и другие команды Ubuntu в системе, не являющейся Ubuntu, и они окажут действие на файловую систему live CD, а не хоста.

Теперь вам понятно, как это позволит изменить live CD, используя знакомые утилиты командной строки. Вам также необходимо знать, что остальная часть системы недоступна из chroot, и некоторые важные системные файлы и каталоги необходимо сделать доступными из chroot, примонтировав их внутри него. Вот они:

  • proc содержит информацию о работающих процессах, конфигурации оборудования и другую системную информацию.
  • dev предоставляет доступ к аппаратным устройствам системы.
  • sys содержит информацию ядра об устройствах и драйверах.
  • /etc/resolv.conf дает доступ к сети из-под chroot.

Команды их монтирования имеют вид

cd work/root
sudo mount -t proc proc proc/
sudo mount -t sysfs sys sys/
sudo mount -o bind /dev dev/
cp /etc/resolv.conf work/root/etc/

По завершении этих команд вы готовы вызывать sudo chroot, выполнять chroot в новую файловую систему и производить там какие бы то ни было изменения.

Изменения могут касаться включения по умолчанию репозиториев universe и multiverse, что можно проделать, отредактировав /etc/apt/sources.list, и установки новых программных пакетов, таких как web-браузер Chromium или мультимедиа-кодеки. Если вы хотите, чтобы в каталоге home по умолчанию появились добавочные файлы, просто скопируйте их, без помощи chroot, в каталог work/root/etc/skel: именно оттуда будут копироваться файлы при создания нового пользователя.

Пересборка ISO

Проделав все необходимые изменения, выйдите из chroot (командой exit) и отмонтируйте все каталоги (командой umount). Временные файлы, например, /etc/resolv.conf, тоже можно удалить, чтобы на live CD было больше места для значащей информации.

Прежде чем заново архивировать файловую систему squashfs и собирать ISO-образ с новой вместо старой, нужно еще поменять несколько файлов, чтобы предупредить о ваших реформах установщик Ubuntu Ubiquity и утилиту live CD, Casper. Вот эти файлы:

  • work/cd_root/casper/filesystem.manifest, содержащий список всех пакетов, содержащихся в новой squashfs.
  • work/cd_root/casper/filesystem.manifest-desktop, содержащий список всех пакетов, которые нужно установить – тот же самый список, кроме ubiquity и casper, поскольку их устанавливать не надо.
  • work/cd_root/casper/filesystem.size, где записан размер файловой системы squashfs, который нужно знать установщику.
  • work/cd_root/md5sum.txt гарантирует идентичность файловой системы той, что содержится на жестком диске в разархивированном виде.

Команд в этом разделе немало, и мы включили их на прилагаемый диск, чтобы сэкономить журнальную площадь и предотвратить ваши ошибки.

Проделав нужные изменения, пересоберите файловую систему squashfs и запишите ее обратно в папку cd_root, а затем загоните ее в ISO-образ:

sudo mksquashfs work/root work/cd_root/casper/filesystem.squashfs
sudo mkisofs -J -b isolinux/isolinux.bin -c
isolinux/boot.cat -no-emul-boot -boot-loadsize 4 -boot-info-table -o myubuntu.iso work/cd_root

Удобные утилиты

Отныне вы можете проделывать с ISO-образом все, что захотите. Проверьте его в Qemu, используйте UNetbootin, чтобы записать его на флэшку, или делитесь им через сеть.

Стоит упомянуть, что навыки, полученные при создании собственного Ubuntu live CD, в особенности chroot и монтирование файловых систем, относятся к таким, которые линуксоид должен всегда иметь при себе. Если система рухнет, можете просто загрузиться с live CD, примонтировать вашу корневую файловую систему, выполнить chroot для нее, потом исправить ошибку – очень удобно.

Персональные инструменты
купить
подписаться
Яндекс.Метрика