Подготовка
Во время сборки часто придется выполнять команды с правами рута, поэтому сразу выполним:
Создадим папку, в которой и будем проводить все работы
Сделаем папку, в которую скопируем все файлы с образа компакт-диска убунты
| mount -o loop /путь/до/ubuntu-10.04-desktop-i386.iso /mnt |
| rsync -a /mnt/ myubuntu_iso |
А вот и пришло время распаковать уже сам squashfs-образ livecd, который из себя представляет корневую файловую систему убунты
| unsquashfs myubuntu_iso/casper/filesystem.squashfs |
| mv squashfs-root myubuntu_root |
Вход в chroot-окружение
Теперь можно приступить к изменениям. Для этого надо использовать chroot
| cp /etc/hosts myubuntu_root/etc/ |
| cp /etc/resolv.conf myubuntu_root/etc/ |
| cp /etc/apt/sources.list myubuntu_root/etc/apt/sources.list |
| mount --bind /dev/ myubuntu_root/dev |
Следующие команды необходимы для нормальной работы некоторых утилит в chroot-окружении, в частности — для самого apt-get, aptitude или synaptic
| mount -t devpts none /dev/pts |
| dbus-uuidgen > /var/lib/dbus/machine- id |
| dpkg-divert -- local --rename --add /sbin/initctl |
| ln -s /bin/ true /sbin/initctl |
Теперь есть возможность пользоваться консольными утилитами, как и в обычной убунте (nano, vi, apt-get, aptitude, gconftool-2, mv, cp и так далее)
Работа в chroot-окружении (установка пакетов, настройка и т. п.)
Если же хочется воспользоваться графическими утилитами (такими как synaptic, наприме), то в другом терминале запустите эту команду:
И у вас появится окошко, в котором и будут работать гуишные проги. В самом-же chroot-окружении нужно указать монитор (то самое окошко xnest’а):
| export DISPLAY=localhost:1 |
И дальше уже можно спокойно запускать synaptic и т. п. Чтобы были рамки окон, тогда еще надо:
Тут уже можно проделывать любые операции как в обычной убунте — будь то установка пакетов, изменение конфигов и т. п.
Небольшой пример использования gconftool-2, чтобы кнопочки в metacity были справа:
gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.defaults --type string --set «/apps/metacity/general/button_layout» «menu:minimize, maximize, close»
Выход из chroot-окружения
После проделанных изменений, нужно удалить временные файлы, отмонтировать фс и т. п.:
| rm -rf /tmp/* ~/.bash_history |
| rm /var/lib/dbus/machine- id |
| dpkg-divert --rename --remove /sbin/initctl |
Подготовка ISO-образа
Если мы изменили состав ПО в сборке, то надо выполнить следующие команды, которые сделают новые списки пакетов:
| chmod +w myubuntu_iso/casper/filesystem.manifest |
| chroot myubuntu_root dpkg-query -W --showformat= '${Package} ${Version}\n' > myubuntu_iso/casper/filesystem.manifest |
| cp myubuntu_iso/casper/filesystem.manifest myubuntu_iso/casper/filesystem.manifest-desktop |
| sed -i '/ubiquity/d' myubuntu_iso/casper/filesystem.manifest-desktop |
| sed -i '/casper/d' myubuntu_iso/casper/filesystem.manifest-desktop |
Собственно, файлы *.manifest — это список пакетов в системе и файл filesystem.manifest-desktop — это файл только тех пакетов, которые буду устанавливаться на комп. То есть, если вы хотите оставить пакет на livecd, но сделать так, чтобы он не ставился на компьютер во время установки, то просто удалите его упоминание в этом файле.
Если вы поменяли или обновили ядро в chroot-окружении, то это же ядро надо скопировать на сам диск, чтобы могли грузиться модули. Например:
| cp myubuntu_root/boot/vmlinuz-2.6.32-22-generic myubuntu_iso/casper/vmlinuz |
| cp myubuntu_root/boot/initrd.img-2.6.32-22-generic myubuntu_iso/casper/initrd.gz |
| gzip - dc myubuntu_iso/casper/initrd.gz | sudo lzma -7 > myubuntu_iso/casper/initrd.lz |
Теперь необходимо запаковать корневую файловую систему обратно в squashfs-образ:
| rm myubuntu_iso/casper/filesystem.squashfs |
| mksquashfs myubuntu_root myubuntu_iso/casper/filesystem.squashfs |
Если хотите, чтобы при загрузке livecd автоматически выбирался русский язык:
| echo "ru" > myubuntu_iso/isolinux/lang |
Так как в составе диска убунты поменяли файлы, нужно пересоздать файл md5sum.txt
| find - type f -print0 | sudo xargs -0 md5sum | grep - v isolinux/boot. cat | sudo tee md5sum.txt |
И можно уже приступить к созданию самого iso-образа:
mkisofs -D -r -V "$IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin /
-c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table /
-o ../ubuntu-$VERSION-custom.iso .
Комментариев нет:
Отправить комментарий