Strona główna arrow Projekty arrow Remastering SZARP Ubuntu Live CD
Menu główne
Strona główna
Pierwsze kroki
KNOPPIX Linux
Zastosowania
Wyszukiwarka
Forum dyskusyjne
Linux EduCD
Odzyskiwanie danych

Wiadomości
Społeczeństwo
Odnośniki
Kontakt
Projekty
Propaganda
Serwery lustrzane
Ubuntu - Podręcznik


Remastering SZARP Ubuntu Live CD
Remastering SZARP Ubuntu Live CD Niniejszy rozdział opisuje przygotowanie dystrybucji Linuksa typu LiveCD (uruchamianej z płyty), a konkretnie dystrybucji opartej na Ubuntu 5.10, z dołączonym oprogramowaniem SZARP, jednak może być wykorzystany także przy tworzeniu innej dystrybucji.
 
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ć:

  • Nie zależy nam na dodatkowych opcjach ładowania systemu - kasujemy pliki z ich opisami:

rm -f isolinux/f*.txt

  • Modyfikujemy plik isolinux.cfg - kasujemy wszystkie sekcje LABEL i F*. Do linii parametrów jądra możemy dać dwa dodatkowe parametry - debian-installer/locale=pl_PL i debconf/priority=critical. W ten sposób przy uruchamianiu nie będziemy pytani o wybór języka i klawiatury (ustawienie piorytetu debcona na critical jest bezpieczne, bo poza tym i tak instalator nie zadaje żadnych pytań).

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

  • Wpisujemy do pliku isolinux.txt tekst wyświetlany jako powitanie po załadowaniu płyty. Nie kasujemy pierwszej linii odpowiedzialnej za załadowanie grafiki!
  • Przygotowujemy własny plik z wyświetlaną przy starcie grafiką. Plik robimy w Gimpie, szerokość 640 punktów, wysokość 200 do 300 punktów. Zmieniamy mu paletę na 16 kolorów - w menu wybieramy Obraz (Image), Tryb (Mode), Indeksowany (Indexed), wybieramy 16 kolorów, można poeksperymentować z ditheringiem. Zapisujemy całość jako BMP, a następnie używamy dwóch narzędzi z pakietów netpbm i syslinux:

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ć:

  • DEFAULT <etykieta> | kernel <opcje>
    Podajemy albo słowo kernel i domyślne opcje do jądra, albo jedną ze zdefiniowanych później etykiet.
  • Etykiety definiujemy następująco:

LABEL <etykieta>
kernel <ścieżka do jądra>
append <opcje do jądra>

  • Domyślny plik wyświetlany przy starcie podajemy tak:

DISPLAY <ścieżka do pliku>

Plik wyświetlany po naciśnięciu klawisza funkcyjnego (np. F2) definiujemy przez podanie:

F2 <ścieżka do pliku>

  • Możemy podać czas po jakim system zostanie automatycznie załadowany z domyślnymi opcjami. Czas podajemy jako wielokrotność 1/10 sekundy, ustawienie 0 (domyślnie) powoduje, że system zostanie załadowany tylko po wybraniu odpowiedniej opcji przez użytkownika:

TIMEOUT <czas>

  • PROMPT 1

Dyrektywa ta steruje wyświetleniem znaku zachęty boot:.

W wyświetlanych plikach możemy użyć następujących sekwencji znaków:

  • Ctrl-L - czyści ekran wypełniając go aktualnym kolorem.
  • Ctrl-O<f><b> - ustawia kolor tekstu i tła - zamiast f i b należy użyć kodów kolorów w postaci pojedynczych cyfr szesnastkowych (od 0 do f). Paleta może zależeć między innymi od załadowanego obrazka.
  • Ctrl-X<nazwa pliku> - wyświetla obrazek z pliku o zadanej nazwie (patrz wyżej opis tworzenia pliku w odpowiednim formacie). Po nazwie pliku musi nastąpić znak nowej linii.

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 
 


Copyright (C) 2003-2008 by Waldemar Roszczuk