Tworzenie własnej płyty LiveCD / Remastering Ubuntu LiveCD
Ostatnia zmiana: 2013-11-26 18:43
Wstęp
Wcześniejszy dokument omawia remastering poprzedniej wersji Ubuntu LiveCD 5.10. W aktualnej wersji (6.06) zmieniono system plików, dzięki czemu modyfikacja stała się o wiele prostsza.
Założenia:
- jak najmniejsze zmiany w oryginalnym wyglądzie dystrybucji
- całkowicie spolszczone środowisko
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 Dapper Drake beta2 - do pobrania z
mirrorów- moduł squashfs i narzędzia pomocnicze. W przypadku debiana instalujemy następujące pakiety:
# aptitude install squashfs-utils
Należy pamiętać o pobraniu odpowiedniej wersji pakietu squashfs. Najnowsza dostępna wersja to 3.0, niestety LiveCD jest zrobiony na podstawie starszej wersji - w tym przypadku należy więc pobrać wersję 2.2. Należy skompilować moduł squashfs.ko zgodnie z informacjami zawartymi w pliku README
- 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 (wszystkie operacje należy wykonać będąc w tym samym katalgu, np. /tmp)
# mkdir ubuntu
# cp -a /cdrom/. ubuntu
# umount /cdrom
Przed przystąpieniem do modyfikacji plików należy pamiętać, że po skopiowaniu z cdromu nie mają one atrybutu "do zapisu", więc należy w takim przypadku taki atrybut nadać.Można też usunąć niepotrzebne programy dla innych platform, korzystając z podanych
wskazówek.
Modyfikacja isolinux
System ma posiadać domyślnie wybrany język polski oraz ma nie zadawać zbędnych pytań, więc odpowiednio modyfikujemy plik ubuntu/isolinux/isolinux.cfg. Do wszystkich linii zaczynających się od "append" dodajemy
debian-installer/locale=pl_PL debconf/priority=critical
Pierwsza opcja oznacza, że całe środowisko powinno być domyślnie w języku polskim, druga - że instalator nie będzie zadawał zbędnych pytań. Drugą opcję można pominąć.
Przykładowa linia powinna więc wyglądać następująco:
append boot=casper initrd=/install/initrd.gz debian-installer/locale=pl_PL debconf/priority=critical ramdisk_size=1048576 root=/dev/ram rw quiet splash --
Należy zmienić także plik ubuntu/isolinux/isolinux.txt (komunikaty startowe) oraz wymusić język polski przy menu początkowym - można to zrobić modyfikując plik bootlogo (wykorzystując gfxboot z ubuntu i ustawiając jako język domyślny pl) lub nadpisać plik en.tr
cat ubuntu/isolinux/pl.tr > ubuntu/isolinux/en.tr
Rozpakowanie systemu plików
System plików skompresowany jest squashfs. Najprościej jest podmontować ten system, przegrać jego zawartość, a następnie odpowiednio go zmodyfikować.
# mkdir fs-squashfs
# mount -o loop -t squashfs ubuntu/casper/filesystem.squashfs fs-squashfs
# mkdir fs-ubuntu
# cp -a fs-squashfs/. fs-ubuntu
# umount fs-squashfs
# rm -rf fs-squashfs
W katalogu fs-ubuntu znajduje się cały system plików, który będzie modyfikowany.
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
Przechodzimy na nowy system plików
# chroot fs-ubuntu /bin/bash
Następnie uaktualniamy listę pakietów...
... i modyfikujemy pakiety w zależności od potrzeb. Należy zainstalować pakiety związane ze wsparciem dla języka polskiego:
apt-get install language-support-pl language-pack-pl language-pack-pl-base
apt-get install language-pack-gnome-pl language-pack-gnome-pl-base
apt-get install language-pack-kde-pl language-pack-kde-pl-base
apt-get install myspell-dictionary-pl
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ć" i wyjść z chroota
apt-get clean
rm -rf /tmp/* /var/tmp/*
rm -rf /etc/resolv.conf
exit
Należy również uaktualnić listę pakietów
# chroot fs-ubuntu dpkg-query -W --showformat='${Package} ${Version}\n' > ubuntu/casper/filesystem.manifest
# cp ubuntu/casper/filesystem.manifest ubuntu/casper/filesystem.manifest-desktop
Kompresja systemu plików
# rm ubuntu/casper/filesystem.squashfs
# mksquashfs fs-ubuntu ubuntu/casper/filesystem.squashfs
Operacja jest długotrwała. Następnie należy uaktualnić sumy kontrolne
# cd ubuntu
# find . -type f -print0 | xargs -0 md5sum > md5sum.txt
# cd ..
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
Tak zrobiony obraz można wypalić na płycie CD przy pomocy programu cdrecord.
Zakończenie
Dzięki squashfs modyfikacja jest
bajecznie prosta. Można dostosować LiveCD do swoich potrzeb instalując domyślnie programy, które mają być używane czy zmieniając domyślny język systemu.