Создание Fedora Live CD

Пошаговое руководство по созданию собственного Live CD на базе Fedora Linux

В декабре 2006 в рамках проекта дистрибутива Fedora Linux был выпущен первый Live CD. Узнайте, как создавать свои собственные простые в использовании Live CD при помощи видоизмененного Pilgrim, средства для создания Fedora Live CD.

Майанк Шарма, технический писатель-фрилансер, Open Sourse Technology Group

Майанк Шарма (Mayank Sharma) - редактор Open Source Technology Group (OSTG), подразделение VA Linux, и публикуется главным образом на поддерживаемых OSTG сайтах NewsForge и Linux.com. Он также пишет для ежемесячной колонки в Packt Publishing. Кроме того, он в качестве приглашенного лектора ведет курсы в Индийском технологическом институте в Дели на темы, связанные с открытыми исходными кодами.



20.07.2007

В декабре 2006 в рамках проекта дистрибутива Fedora Linux был выпущен первый Live CD, который благодаря рациональному выбору приложений успешно подчеркнул лучшие черты дистрибутива Fedora. В дополнение к множеству приложений Live CD содержит несколько игр, использует 3D-десктоп Compiz и доступен не англоговорящим пользователям. Но что затмило для меня все остальное -- это разработанный Дэвидом Цойтеном (David Zeuthen) инструментарий livecd, делающий создание и поддержку собственного Live CD на базе Fedora такими же легкими, как прогулка по парку.

Цойтен -- разработчик Pilgrim, средства для создания системных образов, которые могут запускаться с устройства USB flash, для проекта One Laptop Per Child (OLPC; ссылки для получения дополнительной информации см. в разделе Ресурсы). Инструментарий livecd, используемый для создания Fedora Live CD, -- видоизмененный Pilgrim на Python. Он может использоваться для создания Live CD на основе Red Hat Enterprise Linux, CentOS и других дистрибутивов, базирующихся на Fedora.

Прежде чем перейти к созданию вашего собственного Live CD, вам необходимо понять, как релиз Fedora собирается, распространяется и поддерживается. Проект Fedora хранит пакеты в двух публично доступных репозиториях. Репозиторий, поддерживаемый официальными разработчиками Fedora, называется "core", репозиторий, поддерживаемый участниками проекта и сообществом разработчиков, называется "extras". Репозиторий -- это просто набор пакетов. Помимо core и extras существует несколько репозтоириев, поддерживаемых третьими лицами, например, Livna и FreshRPM.

Дистрибутив Fedora Core, последний выпущенный на момент написания оригинальной статьи -- Fedora Core 6, содержит все пакеты в репозитории core. Первый официальный Fedora Live CD базируется на пакетах из Fedora Core 6 и репозитория extras. Инструментарий livecd был предложен для включения в Fedora-репозиторий extras, который будет объединен с репозиторием core к моменту выпуска Fedora 7.

Что делает инструментарий livecd особенными?

Самое большое преимущество использования инструментария livecd для создания Live CD состоит в том, что предполагается отделить инструментарий от Live CD. Все что вам нужно, чтобы создать Live CD, -- набор конфигурационных файлов. Конфигурационные файлы содержат список пакетов, которые должны быть включены в Live CD, а также описание типа конфигурации системы, которая будет получена после загрузки Live CD.

Для удобства меинтейнеров специализированных Live CD эти конфигурационные файлы собраны в пакеты RPM и хранятся в их собственных репозиториях. Поскольку дистрибутив Fedora и его репозитории меняются от версии к версии, вы можете выполнять обновление этих конфигурационных файлов для поддержания актуальных версий пакетов.

Цойтен сделал доступными три таких пакета RPM, на которых могут базироваться ваши собственные Live CD. Эти пакеты связаны между собой отношением наследования, что способствует созданию производных версий. Пакет fedora-livecd -- это минимальный Live CD, содержащий пользовательский интерфейс. Пакет fedora-livecd-gnome базируется на пакете fedora-base и включает GNOME-десктоп. Пакеты fedora-livecd-desktop созданы на основе пакета fedora-gnome и предоставляют GNOME-десктоп в сочетании с некоторыми приложениями и другими компонентами.

Рисунок 1, предоставленный Цойтеном, объясняет это лучше.

Рисунок 1. Взаимосвязь между пакетами, входящими в инструментарий livecd
Рисунок 1. Взаимосвязь между пакетами, входящими в инструментарий livecd

Цойтен также считает, что в будущем это также могло бы помочь другим официальным группам Fedora Special Interest Group (SIG) создавать их собственные дистрибутивы, полученные из этих пакетов RPM.

Рисунок 2. Вариант организации производных пакетов
Рисунок 2. Вариант организации производных пакетов

Этот подход может показаться немного непонятным, но как только вы приступите к делу, вы его оцените.


Базовая настройка

Первый шаг -- получить с домашней страницы Цойтена в проекте Fedora RPM livecd-tools. Просто скачайте и установите livecd-tools-001-1.i386.rpm, например, так:

Листинг 1. Установка инструментария livecd
$ su -
<Ввести пароль root>
# wget -c http://people.redhat.com/davidz/livecd/i386/livecd-tools-001-1.i386.rpm
# rpm -ivh livecd-tools-001-1.i386.rpm

Теперь у вас должна появиться команда livecd-creator, которую вы можете вызвать без опций, чтобы получить простой список команд.

Листинг 2. Опции команды livecd-creator
$ livecd-creator
Пакеты не определены.

использование: livecd-creator [--help] 
                      [--repo=<name1>,<url1> ...] [--repo=<name2>,<url2>]
                      --package=<p1> [--package=<p2> ...]
                      [--exclude-package=<e1>] --exclude-package=<e2> ...]
                      [--base-on=<path-to-iso-file>]
                      [--fslabel=<label>]

 --help             : Вывести справку об использовании и выйти
 --repo             : Путь до репозитория yum
 --package          : Включить этот пакет
 --exclude-package  : Исключить этот пакет
 --base-on          : Добавить пакеты в существующий iso9660-образ live CD
 --fslabel          : Метка файловой системы (по умолчанию: livecd-YYYYMMDD-HHMI)

Создание локального репозитория основных пакетов

Вы также должны иметь доступ к пакетам RPM, содержащим те программы, которые вы хотите включить в свой собственный Live CD. Если ваше интернет-соединение имеет высокую скорость, livecd-creator может, прежде чем создавать Live CD, загрузить эти пакеты и пакеты, от которых они зависят. Другой вариант -- скопировать все пакеты с инсталляционных CD или DVD Fedora Core 6 и создать локальный репозиторий "core". Для создания локального репозитория вам понадобится утилита createrepo.

Листинг 3. Установка утилиты createrepo
# wget -c http://tqmcube.com/files/createrepo-0.4.3-5.1.noarch.rpm
# rpm -ivh createrepo-0.4.3-5.1.noarch.rpm

Теперь создайте локальный репозиторий, для чего сначала скопируйте все пакеты RPM с пяти CD или одного DVD Fedora Core 6, а затем воспользуйтесь утилитой createrepo.

Листинг 4. Создание локального репозитория
# mkdir /var/www/html/repo/core/
# cp <PATH TO RPMs> /var/www/html/repo/core/
# createrepo /var/www/html/repo/core/

Выполнение этой последней команды займет некоторое время, и в результате будет создан каталог repodata. Команда livecd-creator использует этот каталог для получения пакетов.

Создание локального репозитория конфигурационных пакетов

Поскольку для создания основы вашего Live CD вы воспользовались пакетами Цойтена, вам необходимо создать локальный репозиторий также и для них.

Листинг 5. Создание репозитория пакетов, входящих в инструментарий livecd
# mkdir base_packages
# cd base_packages
# wget -c http://people.redhat.com/davidz/livecd/i386/fedora-livecd-6-1.i386.rpm
# wget -c http://people.redhat.com/davidz/livecd/i386/fedora-livecd-gnome-6-1.i386.rpm
# wget -c http://people.redhat.com/davidz/livecd/i386/fedora-livecd-desktop-6-1.i386.rpm
# createrepo /root/base_packages

Как и раньше, эта последняя команда создаст каталог repodata, что поможет livecd-creator определить местоположение пакетов.


Создание CD

Теперь, когда у вас есть набор репозиториев, вы можете легко создавать собственные Live CD. Команда livecd-creator создает ISO-образы, которые могут быть записаны на CD-R. Но я рекомендую воспользоваться программой виртуализации, чтобы протестировать ISO, не записывая его на физический носитель. В свободном доступе есть несколько таких программ, например, VMware Player, QEMU и VirtualBox.

Минимальный Live CD

Чтобы понять, как работает команда livecd-creator, начните с создания минимального Live CD:

Листинг 6. Создание минимального Live CD
# livecd-creator --repo=c6,file:///var/www/html/repo/core --package=bash \
      --package=kernel --package=grub --fslabel=Fedora-minimal-LiveCD

Эта команда дает livecd-creator указание отобрать из локального репозитория три пакета -- bash, grub и kernel -- и включить их в Live CD с названием Fedora-minimal-LiveCD. Команда livecd-creator использует для установки этих пакетов инструмент YUM, входящий в Fedora, и поэтому установит и другие приложения, от которых зависят указанные пакеты.

Выполнение этой последней команды займет некоторое время, так как она создаст рабочее пространство, затем установит определенные пакеты и пакеты для удовлетворения зависимостей, подготовит рабочее пространство для использования SELinux, механизма безопасности Fedora, произведет компрессию полного рабочего пространства, сконфигурирует GRUB, загрузчик для Live CD, и, наконец, создаст ISO-образ.

Поздравляю! Вы только что создали ваш первый Live CD. Конечно, вы не многое можете с ним сделать, поскольку в нем не хватает конфигурационных файлов.

Live CD, содержащий GNOME

Теперь, когда вы знаете, как работает команда livecd-creator, вы можете использовать ее для создания Live CD, содержащего GNOME.

Листинг 7. Создание Live CD, содержащего GNOME
# livecd-creator --repo=c6,file:///var/www/html/repo/core \
      --repo=lcd6,file:///root/base_packages \
      --package=fedora-livecd-gnome \
      --repo=e6,http://download.fedora.redhat.com/pub/fedora/linux/extras/6/i386 \
      --fslabel=My-Fedora-LiveCD-1

Ну вот, вы используете локальный репозиторий для основных пакетов и определили, какие конфигурационные пакеты необходимы для создания основы вашего CD. Вы уже определили, что любой пакет, который требуется для fedora-livecd-gnome, должен быть получен из локального репозитория core. В fedora-livecd-gnome есть несколько пакетов, не принадлежащих репозиторию core. Эти пакеты будут получены из репозитория extras, доступного по адресу, указанному в URL. Наконец, будет создан ISO с названием My-Fedora-LiveCD-1.iso.

Если livecd-creator не может найти пакет -- например, если его нет в указанных репозиториях -- команда просто пропустит пакет и тем не менее создаст Live CD. Если недостающий пакет не является необходимым, подобно пакету kernel, вы все же получите пригодный для использования Live CD.

Кроме пакетов, упомянутых в конфигурационном RPM, вы можете при помощи опции --package добавить собственные пакеты. Кроме того, команда livecd-creator может использовать для создания CD несколько репозиториев.

Листинг 8. Создание Live CD с использованием нескольких репозиториев
 # livecd-creator --repo=c6,file:///var/www/html/repo/core \
      --package=openoffice
      --repo=lcd6,file:///root/base_packages \
      --package=fedora-livecd-gnome \
      --repo=e6,http://download.fedora.redhat.com/pub/fedora/linux/extras/6/i386 \
      --repo=livna,http://rpm.livna.org/fedora/6/i386 \
      --package=vlc \
      --fslabel=My-LiveCD-2

Как и в предыдущем примере, эта команда создаст Live CD со всеми пакетами из fedora-livecd-gnome. Кроме того, в него войдет офисный пакет OpenOffice.org, доступный из репозитория core. Также будет добавлен VLC Media Player из репозитория livna. Мы назвали диск My-LiveCD-2, поскольку он содержит пакеты из сторонних репозиториев и не может называться Fedora Live CD.

Что если после создания CD вы захотите добавить в него еще одно приложение, скажем, почтовый клиент Evolution? Нет проблем. Если вам доступен ISO предыдущего CD, просто вызовите livecd-creator, чтобы использовать пакеты с этого ISO и добавить новые.

Листинг 9. Добавление новых пакетов в существующий Live CD ISO
# livecd-creator --repo=c6,file:///var/www/html/repo/core \
      --base-on=My-LiveCD-2.iso
      --package=evolution
      --fslabel=My-LiveCD-New

Эта команда создаст новый Live CD, базирующийся на пакетах из предыдущего ISO, с дополнительным пакетом Evolution.


Создание собственных конфигурационных пакетов

Я надеюсь, пример, приведенный выше, продемонстрировал вам, что создание Live CD -- работа тривиальная. Используя пакет Цойтена, вы можете продолжить создание Live CD, добавляя приложения из репозитория.

Но, предположим, вам необходимо создать Live CD, который вы можете использовать для написания документов, а также кодов. Вы захотите включить OpenOffice.org, почтовый клиент Evolution, поисковую систему для десктопа Beagle, компилятор GCC, отладчик GDB и Doxygen для документирования исходных кодов.

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

Структура конфигурационного файла

Прежде чем создать ваш собственный конфигурационный файл, посмотрите на тот, который вы использовали для создания Live CD fedora-gnome. Вы можете извлечь конфигурационный файл из пакета RPM, щелкнув правой кнопкой по пакету fedora-livecd-gnome-6-1.i386.rpm и выбрав опцию Extract Here. Вы должны получить файл 20-fedora-livecd-gnome.conf из каталога /etc/livecd/. Число, стоящее в начале имени, помогает идентифицировать определенный пакет в дереве пакетов. Так пакет 20-* следует за и, вероятно, зависит от пакета 10-*, и пакет 30-* следует за и, вероятно, зависит от 20-* и более ранних пакетов.

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

Листинг 10. Содержимое файла 20-fedora-livecd-gnome.conf
case $1 in
    # выясняет, какие пакеты будут установлены; должен вывести пакеты для установки 
    pkgadd)
    echo "
chkconfig
gdm
gnome-panel
nautilus
metacity
gnome-themes
redhat-artwork
gnome-power-manager
gnome-volume-manager
desktop-printing
gnome-terminal
gedit
.
.
.
.

# запускает конфигурационный скрипт, когда все пакеты установлены
    post)
# монтирует livecd
mkdir -p /mnt/livecd
mount -o ro -t iso9660 /dev/livecd /mnt/livecd
# добавляет пользователя fedora без пароля
useradd -c "Fedora live CD" fedora
passwd -d fedora > /dev/null
.
.
.
.

Как вы можете видеть, большая часть работы, такой как настройка пользователя и настройка сети, выполнена пакетом fedora-gnome.

Создание конфигурационного файла

Лучший способ создать конфигурационный файл -- воспользоваться файлом 20-fedora-livecd-gnome.conf и удалить части, имеющие отношение к GNOME. Давайте назовем наш файл 40-fedora-livecd-office-code.conf. Следующая команда поможет добиться цели:

# cp 20-fedora-livecd-gnome.conf 40-fedora-livecd-office-code.conf

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

Листинг 11. Вновь созданный файл 40-fedora-live-office.conf
        #!/bin/bash

# конфигурация livecd для базовой системы Fedora

# ДОБАВЬТЕ, ПОЖАЛУЙСТА, ЗАМЕЧАНИЕ, СВЯЗАННОЕ С ЛИЦЕНЗИЕЙ

case $1 in
    # выясняет, какие пакеты будут установлены; выводит список пакетов 
    на стандартный вывод 
    pkgadd)
    echo "
evolution
evolution-connector
evolution-webcal
gaim
xchat
beagle
gimp

openoffice.org-core
openoffice.org-draw
openoffice.org-calc
openoffice.org-graphicfilter
openoffice.org-math
openoffice.org-writer
openoffice.org-xsltfilter
openoffice.org-impress

gcc
gdb
doxygen
"
    ;;

    # запускает конфигурационный скрипт, когда все пакеты установлены
    post)
    ;;

    # запускается, когда установка livecd завершена, для очистки
    install-post)
    ;;

    # запускается, когда установка livecd завершена; должен вывести пакеты для удаления
    install-pkgrem)
echo "
fedora-livecd-office-code
"
    ;;
esac

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

Создание пакета RPM

Прежде чем вы действительно сможете использовать этот конфигурационный файл, вам необходимо создать из него пакет RPM. Для создания RPM требуется файл SPEC. Вам следует использовать файл Цойтена fedora-livecd.spec и отредактировать его, чтобы включить информацию о новом конфигурационном файле.

В основном файл SPEC содержит список файлов, которые будут включены в RPM, и информацию о том, где они будут располагаться после установки RPM. Я не буду вдаваться в подробности создания файла SPEC, но вы можете использовать файл, который я создал для этой статьи. Загрузите его из расположенного ниже раздела Загрузить и прочтите комментарий, чтобы понять, какие изменения внесены в оригинальный файл Цойтена.

Обратите внимание, что мой файл SPEC указывает на конфигурационные файлы других пакетов, например, fedora-live-gnome-fedora-livecd-desktop. Убедитесь, что все они также доступны.

В Fedora для создания пакетов RPM из файлов SPEC используется команда rpmbuild. Эта команда подразумевает, что все конфигурационные файлы .conf расположены в каталоге /usr/src/redhat/SOURCES, так же как и другие файлы, упомянутые в файлах SOURCE и SPEC. Убедитесь также, что файл fedora-livecd.spec находится в каталоге /usr/src/redhat/SPECS.

Листинг 12. Создание новых пакетов RPM
# cd /usr/src/redhat/SPECS
# rpmbuild -bb fedora-livecd.spec
# ls /usr/src/redhat/RPMS/i386
fedora-livecd-6-2.i386.rpm          
fedora-livecd-gnome-6-2.i386.rpm
fedora-livecd-desktop-6-2.i386.rpm  
fedora-livecd-office-6-2.i386.rpm

Чтобы отделить собственные пакеты RPM от оригинальных, я присвоил им номер версии 6-2 вместо оригинальной 6-1.

Использование собственных пакетов RPM для создания Live CD

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

Листинг 13. Создание локального репозитория пакетов конфигурации с новыми пакетами RPM
# rm /root/base_packages/*
# cp /usr/src/redhat/RPMS/* /root/base_packages/
# createrepo /root/base_packages

Теперь воспользуйтесь командой livecd-creator, чтобы использовать вновь созданные пакеты.

Листинг 14. Создание Fedora-Office-Code-LiveCD
# livecd-creator --repo=c6,file:///var/www/html/repo/core \
      --repo=lcd6,file:///root/base_packages \
      --package=fedora-livecd-office-code \
      --repo=e6,http://download.fedora.redhat.com/pub/fedora/linux/extras/6/i386 \
      --fslabel=My-Fedora-Office-Code-LiveCD

Успех! У вас есть ваш собственный Live CD, соответствующий созданной вами конфигурации.

После того как вы поняли, как создавать конфигурационные RPM, вы можете очень быстро создавать Live CD. Вы можете переделывать Live CD, производя любые настройки и добавляя или удаляя пакеты. Добавьте к этому возможность поместить любые файлы с данными в среду Live CD, как я показал в моем файле SPEC.

Инсталлятор Live CD уже находится в стадии тестирования, и его выпуск -- это только вопрос времени. Одна единственная запись в вашем конфигурационном файле или опция --package свяжет инсталлятор с вашим Live CD, сделав его полностью пригодным для установки на жесткий диск. Что в этом полезного? Ваш собственный дистрибутив Linux в мгновение ока.


Загрузка

ОписаниеИмяРазмер
Sample SPEC filefedora-livecd-custom.zip2KB

Ресурсы

Научиться

Получить продукты и технологии

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux, Open source
ArticleID=241991
ArticleTitle=Создание Fedora Live CD
publish-date=07202007