|
||||
| Ubuntu Linux - Biblia |
|---|
|
|
|
|
| Linux - serwer |
|---|
|
|
| Gościmy |
|---|
| Remastering SZARP Ubuntu Live CD |
|
Przy tworzeniu tego opisu korzystałem z opisu autorstwa Reinharda Schiedermeiera oraz dokumentu z Ubuntu Wiki.
Ogólna idea jest prosta - bierzemy gotową dystrybucję LiveCD i modyfikujemy ją do naszych potrzeb. Poniżej znajduje się dokładny opis wszystkich kroków. W repozytorium CVS SZARP'a, w katalogu script/livecd znajduje się kilka gotowych skryptów wykorzystanych do tworzenia dystrybucji SZARP Demo LiveCD. Przy opisie poszczególnych poleceń znajduje się informacja, jak nazywa się skrypt wykonujący dany krok. Przygotowania Będziemy potrzebowali w miarę szybki komputer, z dużą pamięcią i szybkim dyskiem z dużą ilością wolnego miejsca. Autorzy obu wyżej wymienionych dokumentów zalecają wykonywanie kompresji systemu plików w pamięci, do czego swap powinien być mniej więcej dwa razy większy od obrazu systemu plików, który chcemy stworzyć. W poniższym opisie zakładam kompresję z pliku do pliku, niemniej duży swap także nie zaszkodzi. Na naszym dużym i szybkim dysku zakładamy sobie pusty katalog, od tej pory zakładam, że wszystkie operacje będą wykonywane w tym katalogu. Pobieramy obraz ISO Ze strony Ubuntu ściągamy obraz CD wersji dystrybucji LiveCD. Jeśli obraz mamy na płytce, to kopiujemy zawartość płytki do nowo utworzonego katalogu: mkdir ubuntu-livecd mount /cdrom cp -a /cdrom/. ubuntu-livecd umount /cdrom Jeśli mamy obraz ściągnięty, ale nie wypalony, możemy go podmontować i wtedy kopiować: mkdir ubuntu-livecd mkdir tmp mount -t iso9660 -o loop ubuntu.iso tmp cp -a tmp/. ubuntu-livecd umount tmp rm -rf tmp Kasujemy niepotrzebne programy Płyta Ubuntu Live zawiera trochę dodatkowych rzeczy, w tym programy przeznaczone dla Windows, przeglądarkę płyty pod Windows itp. Możemy je usunąć, kasując niepotrzebne katalogi i pliki: rm -rf bin disctree doc programs README.diskdefines start.bmp \ start.exe start.ini Zaoszczędzamy w ten sposób sporo miejsca - wśród programów była między innymi pełna wersja OpenOffice 2.0. Umieszczamy dokumentację dla użytkowników Windows Ponieważ nasza płytka będzie zapewne wkładana do napędu przez użytkowników Windows, zadbajmy, aby po włożeniu płyty otworzył im się na przykład opis jak uruchomić naszą płytę. Przygotowujemy plik w HTML'u, zapisujemy go w katalogu livecd, np. jako index.html, dodajemy ewentualne grafiki i ikonę płyty dla Windows. Ikonę możemy wykonać w programie GIMP, zapisując obrazek o rozmiarach 32x32 punkty jako typ pliku Ikona Windows. Następnie przygotowujemy plik autorun.info, zawierający odpowiednie informacje o płycie dla mechanizmu autouruchamiania płyty przez Windows: [autorun] shellexecute=index.html icon=praterm.ico Komenda shellexecute zadziała tylko na Windows 2000 i XP, jeśli chcemy aby autouruchamianie działało na starszych wersjach Windows, musimy się trochę więcej natrudzić - poszukajmy odpowiedniego opisu w sieci. Notatka: W repozytorium SZARP znajdują się odpowiednie pliki autorun.inf, index.html, praterm.ico i praterm-logo.png. Modyfikujemy konfigurację isolinux Płyta Ubuntu LiveCD wykorzystuje do ładowania systemu program ISOLINUX. Sam program i pliki konfiguracyjne znajdują się na płycie w katalogu isolinux. Możemy je zmodyfikować:
rm -f isolinux/f*.txt
Po tych operacjach cały plik może mieć zawartość: 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
bmptoppm < splash.bmp | ppmtolss16 > splash.rle Uwaga - konkretne kolory z palety używane są też w innym celu - do ustalania koloru tła i tekstu. Notatka: W repozytorium SZARP dostępny jest katalog isolinux z gotowymi plikami isolinux.cfg, isolinux.txt i splash.rle. Notatka: Pełen opis składni pliku isolinux.cfg można znaleźć pod adresem http://syslinux.zytor.com/faq.php#config. W szczególności możemy użyć:
kernel <ścieżka do jądra> append <opcje do jądra>
DISPLAY <ścieżka do pliku> Plik wyświetlany po naciśnięciu klawisza funkcyjnego (np. F2) definiujemy przez podanie: F2 <ścieżka do pliku>
TIMEOUT <czas>
Dyrektywa ta steruje wyświetleniem znaku zachęty boot:. W wyświetlanych plikach możemy użyć następujących sekwencji znaków:
Odpowiednie znaki można wprowadzać, np. w edytorze vim, przez poprzedzenie ich wciśnięciem kombinacji klawiszy Ctrl-V. Rozkompresowujemy system plików Ubuntu używa skompresowanego systemu plików cloop, zawierającego obraz całego systemu. Musimy go rozkompresować, żeby móc go modyfikować. Do pracy ze skompresowanymi obrazami potrzebne są narzędzia z pakietu cloop-utils - musimy je zainstalować. Potem robimy: extract_compressed_fs casper/filesystem.clopp > old-fs.ext2 mkdir old mount -o loop old-fs.ext2 old Dekompresja systemu plików może trwać długo. Moglibyśmy teraz pracować na oryginalnym systemie plików, ale jeśli chcemy stworzyć większy obraz (a po to właśnie zwalnialiśmy miejsce na płycie), musimy stworzyć nowy obraz. Tworzymy plik o porządanej wielkości - muszą się na nim zmieścić wszystkie dane i aplikacje, które mają się znaleźć na płycie, musi zostać kilkaset (?) MB wolnego miejsca do działania systemu, a całość musi się zmieścić na płytce. Nie obejdzie się zapewne bez eksperymentów. W każdym razie, aby stworzyć obraz o wielkości 3 GB, wykonujemy komendy: dd if=/dev/zero of=ubuntu-fs.ext2 bs=1M count=3000 mke2fs ubuntu-fs.ext2 mkdir new mount -o loop ubuntu-fs.ext new mke2fs poskarży się, że ma do czynienia ze zwykłym plikiem, a nie urządzeniem, potwierdzamy, że tak ma być (ok). Ostatnim krokiem jest skopiowanie danych z oryginalnego obrazu do nowego. Po tej operacji możemy usunąć stary obraz: cp -a old/. new umount old rm -rf old old-fs.ext2 Modyfikujemy obraz systemu plików W katalogu new mamy obraz systemu plików naszej dystrybucji. Chcemy go zmodyfikować, w tym celu "chroot'ujemy" się na nowy system plików: chroot new /bin/bash Jeśli chcemy korzystać z sieci, warto podmontować system plików proc i ewentualnie sysfs (jeśli korzystamy z niego): mount -t proc proc /proc mount -t sysfs sysfs /sys W plikach /etc/apt/sources.list dodajemy odpowiednie wpisy dla repozytoriów, z których będziemy chcieli korzystać - Ubuntu Universe i Muliverse, SZARP Ubuntu. Konfigurujemy DNS'y (nie zapomnijmy potem skasować pliku /etc/hosts) lub dodajemy wpisy do /etc/hosts. Następnie za pomocą apt-get'a możemy kasować i dodawać oprogramowanie. Listę zainstalowanych pakietów, w kolejności od największego do najmniejszego, możemy uzyskać następująca komendą: dpkg-query -W --showformat='${Installed-Size;10} ${Package}\n' \ |sort -gr | less Można spokojnie skasować OpenOffice'a, Gimp'a, wszystkie biblioteki związane z Javą, jedną z przeglądarek (Galeon lub Firefox), program pocztowy Evolution, CUPS'a wraz ze sterownikami do drukarek, narzędzia do systemu plików reiserfs, oprogramowanie do łączenia z Palmem itp., niepotrzebne nam pakiety językowe, fonty dla języków azjatyckich, część dokumentacji, słowniki itp. Nie kasujemy na pewno GNOME, Metacity, Nautilusa. Z dodatkowego oprogramowania instalujemy SZARP'a (pakiet szarp-viewer - wersję dla Ubuntu), ściągamy potrzebne bazy SZARP'a, warto także zainstalować np. polski pakiet językowy dla Firefoksa. Aktualizację danych SZARP'a ustawiamy na automatyczną, z użytkownikiem np. "livecd". Po skończeniu modyfikacji pakietów, czyścimy cache apt'a: apt-get clean Warto także zajrzeć do katalogów /tmp czy /var/log, żeby sprawdzić czy nie przyrosły nam jakieś śmieci. Na koniec, komendą exit wychodzimy z chroot'a. Pamiętajmy, że wcześniej musimy odmontować wszystkie zamontowane dodatkowo systemy plików (np. proc)! Dodatkowa konfiguracja Jest jeszcze kilka rzeczy, które możemy zmienić w naszej dystrybucji. Chcielibyśmy na przykład, aby na starcie uruchamiała się przeglądarka z wyświetloną stroną z informacją o naszej dystrybucji. Możemy to osiągnąć na kilka sposobów. Jeśli chcemy korzystać z Firefoksa, do katalogu /etc/X11/Xsession.d dodajemy plik X99firefox, zawierający komendę: /usr/bin/firefox /opt/livecd/index.html & Oczywiście podajemy ścieżkę do naszej dokumentacji. Możemy także w katalogu /etc/skel dać odpowiedni pokatalog .mozilla/firefox/ z wpisem dla profilu użytkownika i z ustawioną w pliku prefs.js stroną startową przeglądarki na naszą dokumentację. Jeśli chcemy wykorzystać Galeona, możemy zapisać sesję GNOME z uruchomionym Galeonem i potem odpowiednie pliki skopiować do /etc/skel. Jeśli w menu GNOME pojawiają się jakieś martwe wpisy (po aplikacjach, które usunęliśmy), możemy skorzystać z edytora menu GNOME i usunąć je, a następnie konfigurację menu skopiować do /etc/skel. Menu GNOME zapisane jest w katalogach .config i .local w katalogu domowym. Notatka: Repozytorium SZARP zawiera pliki z dokumentacją - w podkatalogu doc - index.html, draw.html. Zamykanie systemu plików Kolejną rzeczą do wykonania jest uaktualnienie spisu zainstalowanych pakietów: chroot new dpkg-query -W --showformat='${Package} ${Version}\n' \ > ubuntu-livecd/casper/filesystem.manifest Notatka: W repozytorium SZARP'a dostępny jest skrypt make_manifest.sh. Nasz system plików jest gotowy, ale w miejscu wolnym (z punktu widzenia systemu plików) nadal pozostały dane po usuniętych plikach itp., które zostaną umieszczone w skompresowanym systemie plików. Musimy je wyzerować: dd if=/dev/zero of=new/dummy rm new/dummy Zwróćmy uwagę na komunikat o ilości skopiowanych przez dd danych - tyle właśnie wolnego miejsca zostanie do pracy po uruchomieniu naszego systemu. Jeśli ilość ta będzie za mała, nie będą mogły się uruchamiać aplikacje (w tym Gnome) - brak miejsca na pliki tymczasowe i użytkownika. Wyzerowany obszar, niezależnie od wielkości, kompresuje się właściwie w 100 procentach. Uwaga! - jeśli dokonywaliśmy wielu operacji na plikach (zwłaszcza dużo kasowania), system plików mógł ulec częściowej defragmentacji. W takim wypadku dobrze byłoby go zdefragmentować, kopiując całość do innego katalogu, usuwając całą zawartość i kopiując na nowo, a dopiero po tym wyzerować. Notatka: W repozytorium SZARP'a dostępny jest skrypt make_zero.sh. Ostatnim krokiem jest odmontowanie naszego nowego systemu plików: umount new Kompresja nowego systemu plików Autorzy obu dokumentów, na których się opierałem, zalecali kompresję w pamięci, ja jednak z sukcesem posłużyłem się prostym poleceniem: create_compressed_fs ubuntu-fs.ext2 ubuntu-livecd/casper/filesystem.cloop Kompresja, nawet na szybkim komputerze, może zająć kilka minut. Notatka: W repozytorium SZARP'a dostępny jest skrypt make_casper.sh. Tworzenie obrazu płyty Zanim przystąpimy do tworzenia obrazu, musimy jeszcze uaktualnić sumę kontrolną płyty: find ubuntu-livecd -type f -print0 | xargs -0 md5sum > ubuntu-livecd/md5sum.txt Notatka: W repozytorium SZARP'a dostępny jest skrypt make_md5.sh. Ostatni krok to stworzenie bootowalnego obrazu płyty: mkisofs \ -o ubuntu-szarp.iso \ -b isolinux/isolinux.bin \ -c isolinux/boot.cat \ -no-emul-boot \ -boot-load-size 4 \ -boot-info-table \ -r \ -V "SZARP Demo LiveCD" \ -cache-inodes \ -J \ -l \ ubuntu-livecd Notatka: W repozytorium SZARP'a dostępny jest skrypt make_iso.sh. Obraz możemy wypalić na płytce poleceniem: cdrecord speed=24 -v ubuntu-szarp.iso Jeśli nagrywamy na płytkę CD-RW (zalecane dopóki nie upewnimy się, że obraz jest bez błędów), możemy użyć komendy: cdrecord blank=fast speed=10 -v ubuntu-szarp.iso Testowanie, poprawki Prawdopodobnie po uruchomieniu komputera z płyty okaże się, że jeszcze nie wszystko jest idealnie. Aby wprowadzić zmiany w obrazie, musimy powtórzyć wszystkie czynności od generowania pliku filesystem.manifest włącznie. Jeśli dokonujemy poprawek na płycie, ale poza obrazem, nie zapomnijmy uaktualnić sumy kontrolnej. Warto także włożyć naszą płytkę do komputera z Windows, aby upewnić się że poprawnie działa autouruchamianie. Źródło: SZARP Howto |


