Создание своего LiveCD на базе Ubuntu

On: 27 января 2010 г.

Давно хотел запустить свои руки в загрузочный диск Ubuntu. Это довольно удобная вещь и если в ней есть все минимальные компоненты для той или иной работы этот диск становиться этакой палочкой выручалочкой. Миру предлагается огромная канитель из различных программ которые помогают пользователю (даже рядовому) изменять под себя загрузочный диск Ubuntu. Примером таких программных пакетов выступают Reconstructor, Ubuntu Customization Kit (UCK). Но есть существенные недостатки:
  • Использование интернета для установки пакетов
  • Использование ограниченного числа оконных менеджеров
  • Не возможность проведения тонкой настройки
  • Отсутствие функции добавления пакетов не хранящихся на сайте или попросту собранных вручную.
Подобные недостатки привели меня к другому методу изменения загрузочного диска Ubuntu.
Образ самой файловой системы на диске находиться в файле сжатом файловой системой squashfs. Кратко о процессе внесения извинений:
  1. Распаковать файл casper/filesystem.squashfs и скопировать его содержимое
  2. Зайти в файловую систему с помощью команды chroot
  3. Внести изменения
  4. Выйти и запаковать файловую систему и создать образ
Последовательность действий:
Установка пакета для работы с сжатой файловой системой загрузочного диска
$ sudo aptitude install squashfs-tools
 Необходимо создать директорию в которой будут проходить все изменения (вся работа). И запомните в ваших интересах работать в рамках этой директории что бы не раскидывать мусор по папкам так что не сможете его найти. И еще для такой работы лучше выбрать раздел где у вас большие полномочия(хоть последние не так важно). Это конечно все просто рекомендации.
По умолчанию в моем примере я буду использовать папку livecd в домашнем каталоге.
При монтируем образ загрузочного диска:
$ sudo mount -o loop ~/ubuntu-9.04-desktop-i386.iso /tmp/livecdtmp
Копируем содержимое смонтированного образа в папку (в моем случае cdrom) в которой и будут проходить
$ cp /tmp/livecdtmp ~/livecd/cdrom
Образ нам больше не нужен (Вы можете обойтись без монтирования образа просто скопировав  содержимое реального диска в рабочую папку)
примонтируем casper/filesystem.squashfs
Создадим папку в которую при монтируем образ файловой системы
$ mkdir ~/livecd/squashfs
И папку в которую скопируем распакованную файловую систему squashfs для дальнейшей работы и изменения (потом эту папку можно не удалять, а время от времени вносить изменения в дистрибутив и собирать его с новым изменением). в моем случае я создаю папку fs.
$ mkdir ~/livecd/fs
Запускаем модуль работы с файловой системой  squashfs
$ sudo modprobe squashfs
Монтируем образ filesystem.squashfs
$ sudo mount -t squashfs -o loop /tmp/livecd/casper/filesystem.squashfs ~/livecd/squashfs/
Скопируем содержание файла образа в рабочую папку

$ sudo cp -va ~/livecd/squashfs/* ~/livecd/fs
По необходимости скопируем файлы /etc/resolv.conf и /etc/hosts в ~/livecd/fs/etc для того, чтобы получить доступ к сети из образа, с которым будем работать через команду chroot, данная операция не будет нужна, если вы будете обновлять образ, работая через прокси:
$ sudo cp /etc/resolv.conf /etc/hosts ~/livecd/fs/etc/
Входим в образ
$ sudo chroot ~/livecd/fs
# mount -t proc none /proc/
# mount -t sysfs none /sys/
# export HOME=/root
Если соединение с интернетом будет работать через прокси, то прописываем следующее:
# export http_proxy=http://127.0.0.1:3128
где 127.0.0.1:3128 адрес вашего прокси.
На этом я прервусь. Насчет технической стороны скажу что само изменение после того как вы находитесь в оболочке редактируемой системы сводиться к использованию утилиты apt-get это что касается пакетов. Все остальные действия(добавление обоев, иконок....) можно проделывать из файлового менеджера с правами суперпользователя в каталоге
~/livecd/fs (ну это в моем случае). Потому описание как можно изменить диск рассматривать не стану. В блоге постараюсь задеть несколько аспектов этой работы например добавление и изменение ассоциаций файлов, настройка файлового менеджера по умолчанию в gdm ну и так далее. Просто ознакомитесь с перечнем статей в блоге.
Далее после изменений необходимо выйти из оболочки образа диска
После установки программ необходимо зачистить кеш пакетов
# apt-get clean
Также зачистить директории временных файлов и аварийных завершений
# rm -rf /tmp/*
# rm -rf /var/tmp/*
# rm -rf /var/crash/*
Если вы ранее копировали эти файлы /etc/hosts and /etc/resolv.conf, нужно их удалить
# rm -f /etc/hosts /etc/resolv.conf
Теперь выходим из chroot, для это сперва отмонтируем /proc и /sys
# umount /proc/
# umount /sys/
# exit
Теперь осталось сжать файловую систему и создать образ диска.
В оригинале статьи с которой я узнавал о этом методе автор для удобства предлагает создать скрипт сборки диска. Не будем изобретать велосипед

Текст скрипта

#/bin/sh
#
# sudo -s
chmod +w ~/livecd/cdrom/casper/filesystem.manifest
chroot ~/livecd/custom dpkg-query -W --showformat='${Package} ${Version}\n' > ~/livecd/cdrom/casper/filesystem.manifest
cp ~/livecd/cdrom/casper/filesystem.manifest ~/livecd/cdrom/casper/filesystem.manifest-desktop
mksquashfs ~/livecd/fs ~/livecd/cdrom/casper/filesystem.squashfs -noappend
rm ~/livecd/cdrom/md5sum.txt
cd ~/livecd/cdrom && find . -type f -print0 | xargs -0 md5sum > md5sum.txt
cd ~/livecd/cdrom
mkisofs -r -V "Ubuntu-Live-custom" -b isolinux/isolinux.bin -c isolinux/boot.cat -cache-inodes -J -l -no-emul-boot -boot-load-size 4 -boot-info-table -o ~/Ubuntu-Live-9.04-custom.iso





Здесь строка mkisofs -r -V "Ubuntu-Live-custom" -b isolinux/isolinux.bin -c isolinux/boot.cat -cache-inodes -J -l -no-emul-boot -boot-load-size 4 -boot-info-table -o ~/Ubuntu-Live-9.04-custom.iso отвечает за непосредственно создания образа диска. Тут Вы можете указать свое название диска.

P.S. Размеров никто не отменял потому для записи на CD диск придерживайтесь размера образа до 670 мегабайт(примерно). Это немного сковывает ассортимент пакетов которые можно установить но не забывайте что есть пакеты, которые Вам по просту никогда не пригодятся. Например поддержка арабского языка) Это просто пример. Дерзайте.

0 коммент. on "Создание своего LiveCD на базе Ubuntu"