Vytvoření vlastního LiveCD
V následujícím návodu si krok za krokem ukážeme, jak postupovat při úpravách běžného Ubuntu desktop CD. Budeme vycházet z verze 7.10 Gutsy Gibbon, ale mělo by to fungovat i na jiné. Takto můžeme například:
- přidat programy, které chceme mít na CD po ruce
- upravit nastavení (defaultní jazyk na češtinu)
- vyhodit programy, které nám jen zabírají místo (to můžou být cizokrajné fonty, tiskový systém apod.)
Postup je: rozbalit, upravit, sbalit, vypálit. Není to tak složité, jako se může zdát.
V následujícím textu budeme psát o CD, totéž ale platí pro DVD či podobná média.
Co potřebujeme
- Počítač s Linuxem, pokud možno Ubuntu (verze 7.10 nebo novější; architektury takové, aby na ní šlo cílový systém spustit).
- Alespoň 3 GB místa na disku, podle potřeby víc.
- Administrátorská oprávnění k používání sudo.
Funkčnost CD je vhodné zkoušet ve virtuálním počítači bez nutnosti vypalování a restartování.
Rozbalení CD
Získáme iso obraz CD. Lze jej stáhnout nebo zkopírovat z CD (příkazem cp /dev/cdrom ubuntu-7.04-desktop-i386.iso
).
- Dále budeme předpokládat, že se jmenuje
ubuntu-7.04-desktop-i386.iso
.
- Velká část dat na CD je uložena v komprimovaném souborovém systému squashfs. Díky tomu se na CD vejde přes 1500 MB dat! Pokud chceme upravit programy nebo systémové nastavení, je třeba rozbalit jak obraz CD, tak squashfs. Vytvoříme si adresáře:
mkdir cd-mnt mkdir cd-data mkdir sq-mnt mkdir sq-data
- Obraz CD přimountujeme do adresáře
cd-mnt
:
sudo mount ubuntu-7.04-desktop-i386.iso cd-mnt/ -o loop -t iso9660
- a protože do CD obrazu nejde zapisovat, tak vykopírujeme skoro všechna data do adresáře
cd-data
. Vynecháme ale obrovský soubor/casper/filesystem.squashfs
, v němž je uložen zmíněný komprimovaný oddíl s většinou dat.
rsync --exclude=/casper/filesystem.squashfs -a cd-mnt/ cd-data
- Obdobnou operaci teď provdeme se squashfs. Přimountujeme jej do adresáře
sq-mnt
:
sudo mount cd-mnt/casper/filesystem.squashfs sq-mnt -o loop -t squashfs
- a protože ani do squashfs nejde zapisovat, tak jej „rozzipujeme“ do adresáře
sq-data
:
sudo cp -a sq-mnt/* sq-data/
Chvíli to potrvá, je jich 1,5 GB.
- Squashfs i CD už nepotřebujeme mít přimountované, proto je můžeme směle odmountovat a jejich adresáře odstranit:
sudo umount sq-mnt/; rmdir sq-mnt sudo umount cd-mnt/; rmdir cd-mnt
Nyní můžeme v adresáři cd-data
upravovat nezazipovanou část CD (tj. jen jádro a úvodní nabídka) a v sq-data
zbytek systému.
Tipy na možné úpravy
Počeštění
Výchozí jazyk určíme přidáním souboru lang
obsahujícího dvoupísmennou zkratku daného jazyka do adresáře cd-data/isolinux/
. Do toho souboru se vloží toliko dvě písmena cs.
sudo echo "cs" > cd-data/isolinux/lang
Aby byl na CD zahrnut plný český překlad, instalujeme metabalík language-support-cs podle níže uvedeného postupu (obsahuje závislosti na veškeré české překlady). Podrobnější postup instalace jen části jazykových balíčků je uveden níže. Slovenčina (sk) se samozřejmě instaluje obdobně.
Přidání/odebrání balíčků
Namísto kopírování použijeme balíčkovací systém APT, aby se automaticky instalovaly jejich závislosti a abychom z programů neudělali černé pasažéry. Balíčkovací systém je potřeba zmást tak, aby za rootovský adresář považoval ten, kam jsme rozbalili squashfs. K tomu je příkaz chroot. Pak je lze programy instalovat jako obvykle, ale veškeré změny se týkají systému na CD.
- Abychom mohli pracovat s internetem, nejprve překopírujeme některé soubory z „domovského“ systému:
sudo cp /etc/resolv.conf sq-data/etc/ sudo cp /etc/hosts sq-data/etc/
- Zachrootujeme se do adresáře sq-data, připojíme systémové oddíly a nastavíme důležité proměnné:
sudo chroot sq-data mount -t proc none /proc mount -t sysfs none /sys export HOME=/root export LC_ALL=C
- Můžou se hodit i repozitáře restricted, universe a multiverse. Stačí odkomentovat v souboru /etc/apt/sources.list na CD patřičné řádky.(Pokud tam multiverse není, okopírujeme oba řádky s universe a přepíšeme uni na multi.).
*V novějších verzích Ubuntu je nutné aptitude doinstalovat, práce s balíky tak bude v textovém prostředí pohodlnejší.
apt-get install aptitude
Nezapomeneme na aktualizaci informací o balíčcích ze stávajících i přidaných Zdrojů
aptitude update
* A je to. Nyní můžeme spustit např. aptitude
a přidávat či odebírat programy dle libosti.
Jen pozor pokud budeme vypalovat na CD, abychom se na něj vešli (je zaplněno skoro těsně).
Po dokončení úprav po sobě smažeme stažené balíčky a jiné dočasné soubory, odpojíme oddíly a vymaníme se z chrootu:
apt-get clean rm -rf /tmp/* rm /etc/resolv.conf /etc/hosts umount /proc umount /sys exit
Další nápady
V chrootu jde dále provádět kouzla jako:
- Kompilace vlastního jádra nebo initrd.
- Nainstalujte pomocí apt-get správný kernel.
- Zkoupírujte z vašeho chroot systému
/boot/vmlinuz-názevjádra
docd-data/casper/vmlinuz
. - Vytvořte
initrd.gz
:
sudo chroot sq-data mkinitramfs -o /initrd.gz 2.6.15-26-k7(vaše označení jádra)
*Exitněte se z chrootu a z sq-data
přesuňte nový initrd.gz
do cd-data/casper
- Nahrazení tapet na ploše, obrázky se nachází v adresáři
/usr/share/backgrounds
a zároveň jsou zapsány v přehledném souboru/usr/share/gnome-background-properties/ubuntu-wallpapers.xml
. Hezké obrázky najdete třeba na http://art.gnome.org/. - Všelijaká nastavení chování Gnome pomocí programu gconftool.
- Odinstalovat exotické fonty, které patrně nikdy nevyužijeme:
apt-get remove ttf-baekmuk ttf-bengali-fonts ttf-devanagari-fonts ttf-gujarati-fonts ttf-indic-fonts ttf-kannada-fonts ttf-kochi-gothic ttf-kochi-mincho ttf-lao ttf-oriya-fonts ttf-punjabi-fonts ttf-malayalam-fonts ttf-tamil-fonts ttf-telugu-fonts
- Odinstalovat cizí jazyky (angličtinu ale zachováme):
aptitude --purge remove language-pack-de language-pack-gnome-de language-pack-gnome-de-base --assume-yes aptitude --purge remove language-pack-xh language-pack-gnome-xh language-pack-gnome-xh-base --assume-yes aptitude --purge remove language-pack-pt language-pack-gnome-pt language-pack-gnome-pt-base --assume-yes aptitude --purge remove language-pack-es language-pack-gnome-es language-pack-gnome-es-base --assume-yes aptitude --purge remove language-pack-fr language-pack-gnome-fr language-pack-gnome-fr-base --assume-yes
- Odinstalovat balíček gnome-games (ušetří asi 40MB):
aptitude --purge remove gnome-games gnome-games-data
- Instalovat plnou podporu pro češtinu. To zahrnuje balíčky, z nichž si vyberme ty, co potřebujeme (nemá smysl třeba instalovat českou nápovědu pro Gimp, když ji nepoužíváme).
apt-get install language-pack-cs language-pack-cs-base mozilla-firefox-locale-cs-cz myspell-cs-cz aspell-cs openoffice.org-help-cs openoffice.org-l10n-cs openoffice.org-thesaurus-cs thunderbird-locale-cs gimp-help-cs
V případě, že instalujeme všechny, stačí instalovat metabalíček:
apt-get install language-support-cs
- Instalovat podporu pro flash a jiné licenčně omezené formáty multimédií.
apt-get install gstreamer0.10-pitfdll gstreamer0.10-ffmpeg gstreamer0.10-plugins-bad gstreamer0.10-plugins-bad-multiverse gstreamer0.10-plugins-ugly gstreamer0.10-plugins-ugly-multiverse gxine ogle ogle-gui lame lame-extras apt-get install flashplugin-nonfree
Java od SUNů není svobodně licencována a je nutno odsouhlasit licenční smlouvu:
apt-get install sun-java6-jre sun-java6-plugin
- Můžeme také provést update stávajících balíčků:
aptitude update aptitude safe-upgrade
Start Gnome v chrootu
- Zachrootujte se - Postupně proveďte tyto příkazy:
chroot /home/vasuzivatel/sq-data mount -t proc none /proc mount -t sysfs none /sys export HOME=/root export LC_ALL=C /etc/init.d/dbus start
- Spusťte si X na :1:
X :1 -ac
- V chrootu pusťte Gnome nebo vaše prostředí v livku:
DISPLAY=localhost:1 gnome-session
- Přepněte se na tty8, kde máte váš X server zkratkou Ctrl+Alt+F8.
- Pokud se vám nelíbí mít X na samostatné tty, dá se použít i Xephyr.
Sestavení ISO
Po dokončení úprav CD sestavíme zpátky.
- Připravíme soubory pro squashfs a instalátor na CD:
sudo chmod +w cd-data/casper/filesystem.manifest sudo chroot sq-data dpkg-query -W --showformat='${Package} ${Version}\n' > cd-data/casper/filesystem.manifest sudo cp cd-data/casper/filesystem.manifest cd-data/casper/filesystem.manifest-desktop sudo sed -ie '/ubiquity/d' cd-data/casper/filesystem.manifest-desktop
- Odstraníme starý a zabalíme nový squashfs soubor (v nových verzích Ubuntu je potřeba doinstalovat squashfs-tools). Trvá to asi tisíc let:
sudo rm -f cd-data/casper/filesystem.squashfs sudo mksquashfs sq-data/ cd-data/casper/filesystem.squashfs
- (Teď můžeme upravit jmenovku CD:)
sudo gedit cd-data/README.diskdefines
- Vytvoříme kontrolní součet md5 všech souborů na CD:
(s vyjímkou těch které se budou ještě měnit)
cd cd-data sudo bash -c "find . \( -path './isolinux/isolinux.bin' -or -path './md5sum.txt' -or -path './cd-data/isolinux/boot.cat' -prune \) -or -type f -print0 | xargs -0 md5sum > md5sum.txt" cd ..
- Nakonec zabalíme ISO. To trvá jenom sto let.
cd cd-data sudo mkisofs -r -V "$IMAGE_NAME" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o ../ubuntu-7.04-desktop-i386-custom.iso .
A po skončení hrátek s LiveCD, můžeme smazat pracovní adresáře
sudo rm -rf cd-data sudo rm -rf sq-data
A je to!
Zkouška CD v emulátoru
Použij qemu, Luku!
qemu -cdrom ubuntu-7.04-desktop-i386-custom.iso -m 300
(Volba -m 300
zde určuje množství poskytnuté paměti v MB.)
Vypálení CD
ISO soubor lze vypálit běžnými nástroji (jako k3b) nebo v příkazovém řádku:
cdrecord dev=/dev/cdrom ubuntu-7.04-desktop-i386-custom.iso
Odkazy
- Viz také Vytvoření DVD s repozitáři
- Inspirováno anglickým návodem LiveCDCustomization.
- „Klikací“ skript s GUI je součástí repository Ubuntu, viz také UCK - Ubuntu Customization Kit.
- Vytvoření systému z již existujícího, na USB flash disk Z Linuxu mobilný domov na USB kľúči.