Итак что мы имеем:
- Копию репозитария или безлимитный интернет :)
- статьи:
https://help.ubuntu.com/community/LiveCDCustomization [1]
https://help.ubuntu.com/community/LiveCDCustomizationFromScratch [2]
Слегка видоизменяя данные руководства, я написал пару скриптов для облегчения рутинной работы:
live# cat makedebootstrapchroot
#! /bin/bash cd $HOME mkdir -p live$$/chroot cd live$$ # ставим базовую систему в папку chroot с узла http://localhost/ubuntu debootstrap --arch=i386 hardy chroot http://localhost/ubuntu # делаем доступ в интернет и настраиваем источник пакетов echo "nameserver xx.xx.xx.xx" > chroot/etc/resolv.conf cat > chroot/etc/apt/sources.list <<EOF1 deb http://gq.net.ru/ubuntu hardy xneur deb http://ppa.launchpad.net/smakc/ubuntu hardy main deb http://localhost/ubuntu/ hardy main restricted multiverse universe deb http://localhost/ubuntu/ hardy-security main restricted multiverse universe deb http://localhost/ubuntu/ hardy-updates main restricted multiverse universe deb http://localhost/ubuntu/ hardy-backports main restricted multiverse universe EOF1 # настраиваем chroot оболочку chroot chroot <<EOFHERE mount /proc mount /sys mount -t devpts none /dev/pts apt-get update locale-gen ru_RU.UTF-8 EOFHERE # переходим в chroot chroot chroot
Этим скриптом создается базовая система без ядра в папке $HOME/livePROC/chroot, также в чрут монтируются служебные файловые системы, генерируется русская локаль и обновляется кэш пакетов.
После его работы вы ОСТАЕТЕСЬ в чруте!!!
Т.о. можно продолжать работу над образом, ну к примеру так:
# ставим midnight commander apt-get install mc # ставим привычное окружение командной строки и набор хуков для liveCD apt-get install ubuntu-standard casper # автодополнение строки для удобства . /etc/bash_completion apt-get install discover1 os-prober # ставим ядро и кириллицу apt-get install linux-generic console-cyrillic # обновляем initrd для автозагрузки кириллицы update-initramfs -u # обновляем систему aptitude safe-upgrade exit # переход в папку с чрутом cd $HOME/live[0-9]*
Тем самым мы подготовили рабочую систему с командной строкой и русской локалью.
Если после проверки надо опять попасть чрут то можно воспользоваться таким скриптом:
cat ../live/go_chroot #! /bin/bash echo "nameserver xx.xx.xx.xx" > chroot/etc/resolv.conf cat > chroot/etc/apt/sources.list <<EOF1 deb http://gq.net.ru/ubuntu hardy xneur deb http://ppa.launchpad.net/smakc/ubuntu hardy main deb http://localhost/ubuntu/ hardy main restricted multiverse universe deb http://localhost/ubuntu/ hardy-security main restricted multiverse universe deb http://localhost/ubuntu/ hardy-updates main restricted multiverse universe deb http://localhost/ubuntu/ hardy-backports main restricted multiverse universe EOF1 chroot chroot <<EOFHERE mount -t proc none /proc mount -t sysfs none /sys mount -t devpts none /dev/pts apt-get update . /etc/bash_completion #locale-gen ru_RU.UTF-8 EOFHERE chroot chroot
Далее нам нужен isolinux. Можно в самом простом случае его установить и действовать в соответствии с вышеуказанным [2].
Но мы не ищем легких путей :) Поэтому возьмем загрузчик от оригинального диска и слегка его подправим. Исправленый загрузчик - в приложении к статье(пока нет - позже приложу).
Для исправления заставки можно воспользоваться гимпом, файл splash.pcx.
Сохраняем его в bmp, и делаем следующее:
apt-get install netpbm bmptoppm splash.bmp < splash.ppm ppmtolss16 '#ffffff=7' < splash.ppm > splash.rle
Файлы splash.pcx и splash.rle должны лежать в $HOME/live/isolinux1/
далее запустим скрипт такого содержания:
cat clean_chroot1
#! /bin/bash # удаляем ресолв и ставим корректные источники пакетов rm chroot/etc/resolv.conf cat > chroot/etc/apt/sources.list <<EOF1 deb http://mirror.yandex.ru/ubuntu/ hardy main restricted multiverse universe deb http://mirror.yandex.ru/ubuntu/ hardy-security main restricted multiverse universe deb http://mirror.yandex.ru/ubuntu/ hardy-updates main restricted multiverse universe deb http://mirror.yandex.ru/ubuntu/ hardy-backports main restricted multiverse universe EOF1 # чистим chroot rm -rf chroot/tmp/* chroot chroot <<EOFHERE apt-get clean umount -l -f /proc umount -l -f /proc umount -l -f /sys umount -l -f /sys umount -l -f tmpfs umount /dev/pts EOFHERE # создаем окружение загрузчика rm -rf image mkdir image image/casper image/isolinux image/install cp chroot/boot/vmlinuz-2.6.**-**-generic image/casper/vmlinuz cp chroot/boot/initrd.img-2.6.**-**-generic image/casper/initrd.gz cp chroot/boot/vmlinuz-2.6.**-**-server image/casper/vmlinuz cp chroot/boot/initrd.img-2.6.**-**-server image/casper/initrd.gz cp /usr/lib/syslinux/isolinux.bin image/isolinux/ cp /boot/memtest86+.bin image/install/memtest cp %HOME/live/isolinux1/* image/isolinux/ # создаем manifest-файлы chroot chroot dpkg-query -W --showformat='${Package} ${Version}\n' | tee image/casper/filesystem.manifest cp -v image/casper/filesystem.manifest{,-desktop} REMOVE='ubiquity casper live-initramfs user-setup discover1 xresprobe os-prober libdebian-installer4' for i in $REMOVE do sudo sed -i "/${i}/d" image/casper/filesystem.manifest-desktop done # забиваем нулями место под squashfs (экономия места в образе 5-40 мегабайт) dd if=/dev/zero of=cleaning bs=2M count=400 rm -f cleaning # создаем сжатую файловую систему sudo mksquashfs chroot image/casper/filesystem.squashfs # создаем описание диска cat > image/README.diskdefines <<EOFHERE3 #define DISKNAME Ubuntu 8.04.1 - Release i386 **Sanych edition** #define TYPE binary #define TYPEbinary 1 #define ARCH i386 #define ARCHi386 1 #define DISKNUM 1 #define DISKNUM1 1 #define TOTALNUM 0 #define TOTALNUM0 1 EOFHERE3 # создаем файл с контрольными суммами (cd image && find . -type f -print0 | xargs -0 md5sum > md5sum.txt) # создаем iso-образ cd image mkisofs -r -V "Ubuntu Sanych edition" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat \ -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-remix.iso .
Тут есть особенность, на некоторых компьютерах старая версия mksquashfs виснет:
https://bugs.launchpad.net/ubuntu/+source/squashfs/+bug/222700
для того чтоб пофиксить, ставим последнюю версию из дебиановского репозитария:
wget http://ftp.de.debian.org/debian/pool/main/s/squashfs/squashfs-tools_3.3-7_i386.deb dpkg -i squashfs-tools_3.3-7_i386.deb
ну вот собственно и все, исошник собран и лежит в $HOME/livePROC/ubuntu-remix.iso, можно загружать в виртуал-бокс и тестировать. Если появятся вопросы - спрашивайте.
P.S. скрипты не "причесаны" и возможно где-нибудь потребуются правки...
depmod в chroot:
depmod -ae -F /boot/System.map-2.6.24-19-386 2.6.24-19-386