так поделитесь опытом
Могу дать несколько общих рекомендаций по сборке системы "с нуля":
1. Для начала крайне желательно иметь "тестовую" систему для сборки дистрибутива, отличную от рабочей. У меня по-первости была ситуация, когда когда я запустил скрипт "очистки" собираемой системы, который должен выполняться в окружении
chroot, в основной системе. Когда я это осознал, у меня уже была снесена половина системы, включая
/etc. В итоге пришлось восстанавливать систему, загружаясь с LiveCD и вручную восстанавливая файлы из пакетов копированием в систему через
mc, так как пакетный менеджер не работал. После того, как восстановил
/etc/passwd|group|shadow и функционирование пакетного менеджера, просто переустановил все входящие в состав системы пакеты, и система работает до сих пор (
Hardy 8.04).
2. Сборку
LiveCD лучше разбить на несколько этапов:
- построение базовой системы;
- установка ПО;
- создание squashfs;
- создание iso-образа.
Так гораздо проще отлавливать возникающие ошибки и не нужно каждый раз начинать сборку с нуля, можно вернуться к любому из этапов.
3. Необходимо чётко понимать, какие инструкции и руководства "из интернетов", коих великое множество и они зачастую просто копируются с ресурса на ресурс, применимы к Ubuntu и конкретно к собираемой вами версии. В разных версиях ПО, не говоря уже о разных дистрибутивах могут различаться названия файлов, их расположение и функционал.
Наример, ход
cd /usr/share/debootstrap/scripts/
sudo ln -s gutsy oneiric
я считаю крайне неудачным, поскольку применять для сборки
oneiric (11.10) шаблон
gutsy (7.10) можно с большой натяжкой. Лучше установить пакет
debootstrap с правилами, содержащими собираемый релиз. Если же сборка 11.10 выполняется из 11.10, то естественно, никаких ссылок на
gutsy делать не нужно.
. . .
ls /boot/vmlinuz-3.0.0-13-generic > list.txt
sum=$(cat list.txt | grep '[^ ]' | wc -l)
. . .
cp chroot/boot/vmlinuz-3.0.0-13-generic image/casper/vmlinuz
cp chroot/boot/initrd.img-3.0.0-13-generic image/casper/initrd.gz
. . .
for file in chroot/boot/vmlinuz-3.0.0-13-generic; do cp $file image/casper/vmlinuz; done
for file in chroot/boot/initrd.img-3.0.0-13-generic; do cp $file image/casper/initrd.gz; done
В этих конструкциях тоже нет смысла - указывать конкретную версию ядра не нужно, для этого используются шаблоны и регулярные выражения. Если при обновлении будет установлено ядро 3.0.0-14, то оно не будет скопировано в /casper, и соответственно будет возникать ошибка при загрузке.