суббота, 3 сентября 2016 г.

Создание своей сборки Ubuntu.


Данная статья является вольным переводом оригинального мануала с сайта Ubuntu.

ВНИМАНИЕ!!! Модификация производится непосредственно в установленной Ubuntu!



Раздел I. Подготовка системы и инструментов.


0. Для начала, нужно скачать образ диска системы (с каким рабочим столом, решайте сами, особой роли это не сыграет). Скачивать можно или с серверов самой Ubuntu,
либо с зеркал Яндекса, как напрямую в браузере, так и через торрент.

1. Cоздаём необходимые каталоги (можно прямо в домашней директории, можно в "Документах", тут уж кому как удобно):
mkdir livecdtmp;
mkdir livecdtmp/mnt - точка, в которой мы будем монтировать наш образ;
mkdir livecdtmp/extract-cd - а сюда мы будем его распаковывать;

2. Устанавливаем необходимые программы:
sudo apt install squashfs-tools genisoimage

3. Копируем образ в каталог livecdtmp;

4. Монтируем его:
sudo mount -o loop *имя-образа-диска*.iso mnt

5. Распаковываем образ в созданный ранее каталог extract-cd:
sudo rsync --exclude=/casper/filesystem.squashfs -a mnt/ extract-cd

6. Распаковываем squashfs - файловую систему, где хранятся все изменения, и переносим её для дальнейшей работы в каталог edit:

sudo unsquashfs mnt/casper/filesystem.squashfs;
sudo mv squashfs-root edit;

7. Копируем файл настроек сетевых подключений:
sudo cp /etc/resolv.conf edit/etc/

8. Монтируем необходимые каталоги будущей сборки:
sudo mount -o bind /run/ edit/run

9. На всякий пожарный, скопируем host-файл:
sudo cp /etc/hosts edit/etc/

10. Продолжаем монтировать каталоги:
sudo mount --bind /dev/ edit/dev - тот каталог, в котором мы и будем ковыряться :)

11. Заходим в ChRoot:
sudo chroot edit

12. И опять монтируем каталоги:
mount -t proc none /proc
mount -t sysfs none /sys
mount -t devpts none /dev/pts

13. Переносим права на GPG-ключи и локали:
export HOME=/root
export LC_ALL=C

Раздел II. Внесение изменений в систему.


Итак, фронт работ мы приготовили, пришла пора прокачать нашу сборочку по самые уши!!!

0. Устанавливаем локализацию:
apt-get install language-pack-ru;
apt-get install localepurge (листаем до пунктов ru_RU и производных - это кодировки);
apt-get install locales console-cyrillic dialog dbus (переводим на великий и могучий консоль и метод ввода);

1. Через apt-get устанавливаем нужные программы;

2. Через add-apt-repository подключаем нужные репозитории;

3. Меняем точку отсчета времени:
dpkg-reconfigure tzdata

Настройка внешнего вида рабочего стола и прочих красивостей через терминал также возможна, но я в этом пока не разобрался.

Раздел III. Генеральная уборка.


0. Очищаем кеш пакетного менеджера:
apt-get clean;

1. Удаляем host-файл:

rm /etc/hosts

2. Удаляем следы преступления:
rm /var/lib/dbus/machine-id;
rm /sbin/initctl;
dpkg-divert --rename --remove /sbin/initctl;

3. Размонтируем каталоги, выходим из-под ChRoot:
umount /proc || umount -lf /proc;
umount /sys;
umount /dev/pts;
exit;
sudo umount edit/dev;

Раздел IV. Сборка образа


0. Замена файла манифеста:
chmod +w extract-cd/casper/filesystem.manifest
sudo su
chroot edit dpkg-query -W --showformat='${Package} ${Version}\n' > extract-cd/casper/filesystem.manifest
exit
sudo cp extract-cd/casper/filesystem.manifest extract-cd/casper/filesystem.manifest-desktop
sudo sed -i '/ubiquity/d' extract-cd/casper/filesystem.manifest-desktop
sudo sed -i '/casper/d' extract-cd/casper/filesystem.manifest-desktop

1. Сжатие файла файловой системы:
sudo rm extract-cd/casper/filesystem.squashfs
sudo mksquashfs edit extract-cd/casper/filesystem.squashfs -b 1048576

2. Обновим файл с размером файловой системы:
sudo printf $(du -sx --block-size=1 edit | cut -f1) > extract-cd/casper/filesystem.size

3. Изменяем название сборки:
sudo nano extract-cd/README.diskdefines

4. Меняем файл md5 суммы:
cd extract-cd;
sudo rm md5sum.txt;
find -type f -print0 | sudo xargs -0 md5sum | grep -v isolinux/boot.cat | sudo tee md5sum.txt;

5. И наконец, собираем образ:

sudo genisoimage -rational-rock -volid "Имя-Сборки" -cache-inodes -joliet -full-iso9660-filenames -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -output ../Имя-Образа.iso . && cd ..

Раздел V. Тестирование и отладка.


Итак, поздравляю! У нас есть своя убунта, с пасьянсами и нескучными обоями! Что дальше? Ну, наверное, стоит проверить наше творение.

Проверка через QEMU:
qemu -cdrom ubuntu-9.04.1-desktop-i386-custom.iso -boot d -m 512;

Можно также запускать образы и через VirtualBox. Будет, правда, немного медленно, но зато интуитивно понятно.
Если же у вас много денег/болванок, можно прожечь образ так же, как мы его и собирали - через консоль, и проверить на живом железе:
cdrecord dev=/dev/cdrom Имя-Образа.iso
 Ссылка на оригинал: LiveCDCustomization

Эпилог

Пока что это всё. Также в планах написать мануал по кастомизации внешнего вида системы из консоли, но в этой теме я ещё не до конца разобрался, так что работы ещё предстоит много.  И да, именно по данному мануалу пилится Emubuntu.

1 комментарий:

  1. Вообще когда была Убунта 10.04 поиск нормального эмулятора заняло прилично времени. Остановился на gfceu, и даже эмулил через вайн что жесть. На сегу нормальный эмуль был Fusion а gens отображался криво.

    ОтветитьУдалить