Remastering LiveCD
Tworzenie własnej płyty LiveCD / Remastering Ubuntu LiveCDOstatnia zmiana: 2006-12-09 19:46
1. Wstęp
1.1. Wymagania
1.2. Metoda
2. Modyfikacja LiveCD
2.1. Kopiowanie danych
2.2. Usuwanie niepotrzebnych plików i programów
2.3. Rozpakowanie systemu plików
2.4. Modyfikacja systemu pliku
2.5. Kompresja systemu plików
2.6. Tworzenie obrazu płyty
2.7. Zakończenie
3. Tworzenie od podstaw LiveCD
Metoda w dużej części opiera się o przepisy podane w:
- Szarp HOWTO.
- Ubuntu LiveCDCustomizationHowTo
- Custom Ubuntu Linux Live-CD
Metoda modyfikacji nowszej wersji, 6.06, opisana jest w dokumencie Remastering LiveCD - Ubuntu Dapper Drake.
Wstęp
Istnieje już wiele dystrybucji LiveCD, począwszy od słynnego Knoppixa i jego odmiany a skończywszy na polskim LinuxEduCD. Czasami jednak nie spełniają one naszych założeń - brakuje pakietów, chcielibyśmy inne ustawienia domyślne itd. Można stworzyć całą płytę samemu (o tym w dalszej części tekstu) lub przerobić (remastering) istniejącą już dystrybucję LiveCD.Wymagania
- komputer z linuksem i podłączeniem do internetu (w tym przypadku był to Debian SID). Mile widziana szybka maszyna, z dużą ilością ramu. W przeciwieństwie do innych metod, nie musimy posiadać dużo swapu.- dystrybucja LiveCD; w tym przypadku to będzie Ubuntu LiveCD "The Breezy Badger" 5.10 - do pobrania z mirrorów lub można zamówić za darmo z witryny Ubuntu
- moduł cloop i narzędzia pomocnicze. W przypadku debiana instalujemy następujące pakiety:
# aptitude install cloop-utils cloop-src
- mkisofs, cdrecord
Metoda
Modyfikacja LiveCD sprowadza się do skopiowania i rozpakowania systemu plików, jego modyfikacji, ponownego spakowania i stworzenia nowej płytyPrzed przystąpieniem do prac warto uruchomić LiveCD i zapoznać się z zawartymi tam programami. Pomocne może być przygotowanie spisu programów do instalacji i do usunięcia.
Modyfikacja LiveCD
Kopiowanie danych
Dane z płyty lub obrazu należy skopiować. Jeżeli mamy płytę to należy ją zamontować:
# mount -t iso9660 /dev/cdrom /cdrom
# mount -t iso9660 -o loop ubuntu.iso /cdrom
# mkdir ubuntu
# cp -a /cdrom/. ubuntu
# umount /cdrom
Usuwanie niepotrzebnych plików i programów
Wraz z płytą Ubuntu LiveCD przychodzi też parę programów pod Windows, które nie są nam do niczego potrzebne. Można je usunąć, dzięki temu zmniejszy się rozmiar płyty i będzie można całość nagrać np. na małą płytkę CDR 8cm.
# cd ubuntu
# rm -rf README.diskdefines start.bmp start.exe start.ini autorun.inf bin disctree doc programs
# rm -f isolinux/f*.txt
DEFAULT /install/vmlinuz
APPEND casper/enable=true casper-udeb/snapshot/backing-file=/cdrom/casper/filesystem.cloop \
vga=normal initrd=/install/initrd.gz ramdisk_size=1048576 root=/dev/rd/0 \
debian-installer/locale=pl_PL debconf/priority=critical rw --
DISPLAY isolinux.txt
TIMEOUT 0
PROMPT 1
Przy takich ustawieniach płyta wyświetli logo startowe i tekst powitalny - do zmiany w pliku isolinux/isolinux.txt. Logo zawarte jest w pliku splash.rle (definicja - pierwsza linia w pliku isolinux.txt) Jeżeli nie chcemy loga, a chcemy żeby system od razu został uruchomiony można zmienić parametry TIMEOUT i PROMPT.
Rozpakowanie systemu plików
System plików skompresowany jest cloop'em. Aby go rozpakować należy wykonać następujące polecenia
# cd ..
# modprobe cloop
# extract_compressed_fs ubuntu/casper/filesystem.cloop > ubuntu.ext2
# mkdir fs-ubuntu
# mount -t ext2 -o loop ubuntu.ext2 fs-ubuntu
Domyślny obraz jest wielkości 2GB, ponieważ modyfikujemy go i z pewnością będą usuwane pliki, można na nim pracować. W innym przypadku można zwiększyć jego rozmiar (np. do 3GB)
# umount fs-ubuntu
# mkdir fs-tmp
# mv ubuntu.ext2 old.ext2
# mount -t ext2 -o loop old.ext2 fs-tmp przeniesienie rozpakowanego FS do innego miejsca
# dd if=/dev/zero of=ubuntu.ext2 bs=1M count=3000 utworzenie nowego pliku 3GB
# mke2fs ubuntu.ext2 utworzenie FS ext2
# mount -o loop ubuntu.ext2 fs-ubuntu
# cp -a fs-tmp/. fs-ubuntu skopiowanie danych ze starego pliku do nowego
# umount fs-tmp
# rm -rf fs-tmp old.ext2 usunięcie starego systemu plików
Modyfikacja systemu pliku
Ponieważ będziemy modyfikować zawartość pakietów, należy posiadać dostęp do internetu. Kopiujemy plik resolv.conf z naszymi ustawieniami oraz dodajemy repozytorium universe do listy źródeł pakietów
# cp /etc/resolv.conf fs-ubuntu/etc/resolv.conf
# vi fs-ubuntu/etc/apt/sources.list
# chroot fs-ubuntu /bin/bash
mount -t proc proc /proc
mount -t sysfs sysfs /sys
apt-get update
Po modyfikacji listy pakietów należy "posprzątać"
apt-get clean
rm -rf /tmp/* /var/tmp/*
umount /proc
umount /sys
exit
# chroot fs-ubuntu dpkg-query -W --showformat='${Package} ${Version}\n' > ubuntu/casper/filesystem.manifest
# dd if=/dev/zero of=fs-ubuntu/zero
# rm -rf fs-ubuntu/zero
# umount fs-ubuntu
Kompresja systemu plików
# create_compressed_fs ubuntu.ext2 ubuntu/casper/filesystem.cloop
# find ubuntu -type f -print0 | xargs -0 md5sum > ubuntu/md5sum.txt
Tworzenie obrazu płyty
# mkisofs \
-o livecd.iso \
-b isolinux/isolinux.bin \
-c isolinux/boot.cat \
-no-emul-boot \
-boot-load-size 4 \
-boot-info-table \
-V "Moje wlasne LiveCD" \
-cache-inodes -r -J -l ubuntu
Zakończenie
Można przygotować odpowiedni plik autorun.inf, dzięki czemu użytkownikom systemu Windows po włożeniu płytki uruchomi się jakiś program lub strona html z informacją co to jest za płytką. Można przygotować własną ikonę płytki (zdefiniowaną w autorun.inf). Można zmienić loga startowe, domyślne tapety, tematy gtk2, uruchomić na starcie przeglądarkę w określoną stroną WWW.Tworzenie od podstaw LiveCD
Sprawa w skrócie wygląda prosto: - przygotować system plików z zainstalowaną jakąkolwiek dystrybucją. Może to być nawet masz działający system. Należy pamiętać, że nie wiadomo na czym będzie to uruchamiane więc należy na starcie wykonać autodetekcję sprzętu, ustawić pliki konfiguracyjne, sieć itd.
- skompresować system plików przy pomocy cloop
- przygotować jądro z cloop'em oraz odpowiedni initrd, który załaduje moduł cloop, podmontuje system główny system plików i zacznie wykonywać init z niego.
- przygotować strukturę katalogów z isolinux, odpowiednio całość skonfigurować
- wypalić płytkę.
W praktyce prościej jest zmodyfikować istniejące już LiveCD, ale jest to do zrobienia :)