Tworzenie własnej płyty LiveCD / Remastering Ubuntu LiveCD
Ostatnia zmiana: 2013-11-26 18:43
Metoda w dużej części opiera się o przepisy podane w:
-
Szarp HOWTO.
-
Ubuntu LiveCDCustomizationHowTo-
Custom Ubuntu Linux Live-CDMetoda 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
a następnie zgodnie z instrukcją zawartą w pakiecie cloop-src kompilujemy i instalujemy moduł cloop.ko.
- mkisofs, cdrecord
Metoda
Modyfikacja LiveCD sprowadza się do skopiowania i rozpakowania systemu plików, jego modyfikacji, ponownego spakowania i stworzenia nowej płyty
Przed 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
Jeżeli posiadamy tylko obraz płyty można go zamontować przez loop'a (oczywiście w jądro musi być wkompilowana obsługa loop'a):
# mount -t iso9660 -o loop ubuntu.iso /cdrom
Następnie tworzymy nowy katalog i kopiujemy tam zawartość płyty
# 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
Płytkę można uruchomić podając w linii poleceń dodatkowe parametry. Jeżeli nie chcemy tego robić i nie potrzebujemy żadnego ich opisu, można skasować pliki isolinux/f*.txt
Następnie należy zmodyfikować plik konfiguracyjny
ISOLINUX - loadera z płyty CD. System ma mieć domyślnie wybrany język polski oraz ma nie zadawać zbędnych pytań, więc odpowiednio modyfikujemy plik isolinux/isolinux.cfg
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
Dekompresja systemu plików trwa dość długo.
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
Na następnie przechodzimy na nowy system plików
# chroot fs-ubuntu /bin/bash
Od tej pory jesteśmy w nowym środowisku. Pierwsze czynności to zamontowanie proc i sys
mount -t proc proc /proc
mount -t sysfs sysfs /sys
Następnie uaktualniamy listę pakietów
Należy teraz zmodyfikować pakiety w zależności od potrzeb. Raczej na pewno należy zainstalować pakiety ze wsparciem dla języka polskiego: language-pack-pl language-pack-pl-base language-pack-gnome-pl language-pack-gnome-pl-base. Odinstalować czcionki arabskie/chińskie/japońskie, pakiety z słownikami. Reszta wg uznania (ja zostawiłem OpenOffice, wyrzuciłem kompletnie pakiety związane z drukarkami, Evolution, irc, gry gnome, pythona, zainstalowałem polskie słowiki, mc, wpasupplicant, wifi-radar). Można też zrobić domyślne ustawienia programów (zapisać je później w /etc/skel). Na samym końcu warto zainstalować deborphan i usunąć niepotrzebne biblioteki.
Po modyfikacji listy pakietów należy "posprzątać"
apt-get clean
rm -rf /tmp/* /var/tmp/*
Odmontować systemy plików i wyjść z chroota
umount /proc
umount /sys
exit
Należy również uaktualnić listę pakietów
# chroot fs-ubuntu dpkg-query -W --showformat='${Package} ${Version}\n' > ubuntu/casper/filesystem.manifest
Ponieważ po modyfikacji pakietów zostało zwolnione dużo miejsca, w celu polepszenia kompresji można puste miejsca w filesystemie wypełnić zerami i odmontować system plików
# 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
Trwa dość długo. Następnie należy uaktualnić sumy kontrolne
# 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
powstały obraz można wypalić na płycie CD przy pomocy programu cdrecord
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 :)