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...


    apt-get update

... 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.