vytvoření_vlastního_livecd

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
vytvoření_vlastního_livecd [2013/12/27 21:26] tadeasparikvytvoření_vlastního_livecd [2019/02/25 18:21] (aktuální) – upraveno mimo DokuWiki 127.0.0.1
Řádek 1: Řádek 1:
 +====== Vytvoření vlastního LiveCD ======
  
 +{{page>konvence/pokročilý}}
 +
 +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.
 +  * Mít [[Pokročilá správa softwaru|nainstalované balíky]] [[apt://squashfs-tools|squashfs-tools]] a [[apt://mkisofs|mkisofs]] na pracovním systému.
 +  * Administrátorská oprávnění k používání sudo.
 +
 +
 +Funkčnost CD je vhodné zkoušet ve [[Virtualizace|virtuálním počítači]] bez nutnosti vypalování a restartování.
 +
 +====== Rozbalení CD ======
 +
 +{{.:cd.png}}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:
 +<code>
 +mkdir cd-mnt
 +mkdir cd-data
 +mkdir sq-mnt
 +mkdir sq-data
 +</code>
 +
 +  * Obraz CD přimountujeme do adresáře ''cd-mnt'':
 +<code>
 +sudo mount ubuntu-7.04-desktop-i386.iso cd-mnt/ -o loop -t iso9660
 +</code>
 +
 +  * 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.
 +<code>
 +rsync --exclude=/casper/filesystem.squashfs -a cd-mnt/ cd-data
 +</code>
 +
 +  * Obdobnou operaci teď provdeme se squashfs. Přimountujeme jej do adresáře ''sq-mnt'':
 +<code>
 +sudo mount cd-mnt/casper/filesystem.squashfs sq-mnt -o loop -t squashfs
 +</code>
 +
 +  * a protože ani do squashfs nejde zapisovat, tak jej "rozzipujeme" do adresáře ''sq-data'':
 +<code>
 +sudo cp -a sq-mnt/* sq-data/
 +</code>
 +{{.:clock.png}} 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:
 +<code>
 +sudo umount sq-mnt/; rmdir sq-mnt
 +sudo umount cd-mnt/; rmdir cd-mnt
 +</code>
 +
 +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í =====
 +
 +{{.:settings.png}} 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.
 +
 +<code>
 +sudo echo "cs" > cd-data/isolinux/lang
 +</code>
 +Aby byl na CD zahrnut plný český překlad, instalujeme metabalík [[http://packages.ubuntu.com/dapper/translations/language-support-cs|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ů =====
 +
 +{{.:apt.png}} 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:
 +<code>
 +sudo cp /etc/resolv.conf sq-data/etc/
 +sudo cp /etc/hosts sq-data/etc/
 +</code>
 +
 +  * Zachrootujeme se do adresáře sq-data, připojíme systémové oddíly a nastavíme důležité proměnné:
 +<code>
 +sudo chroot sq-data
 +mount -t proc none /proc
 +mount -t sysfs none /sys
 +export HOME=/root
 +export LC_ALL=C
 +</code>
 +
 +  * 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ší.
 +<code>
 +apt-get install aptitude
 +</code>
 +
 +
 +Nezapomeneme na aktualizaci informací o balíčcích ze stávajících i přidaných [[Přidávání zdrojů|Zdrojů]]
 +<code>
 +aptitude update
 +</code>  * 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ě).
 +
 +
 +
 +{{.:clear.png}} 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:
 +<code>
 +apt-get clean
 +rm -rf /tmp/*
 +rm /etc/resolv.conf  /etc/hosts
 +umount /proc
 +umount /sys
 +exit
 +</code>
 +===== 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'' do ''cd-data/casper/vmlinuz''.
 +    * Vytvořte ''initrd.gz'':
 +<code>
 +sudo chroot sq-data
 +mkinitramfs -o /initrd.gz 2.6.15-26-k7(vaše označení jádra)
 +</code>*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:
 +<code>
 +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
 +</code>
 +
 +  * Odinstalovat cizí jazyky (angličtinu ale zachováme):
 +<code>
 +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
 +</code>
 +
 +  * Odinstalovat balíček gnome-games (ušetří asi 40MB):
 +<code>
 +aptitude --purge remove gnome-games gnome-games-data
 +</code>
 +
 +  * 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).
 +
 +<code>
 +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
 +</code>
 +
 +V případě, že instalujeme všechny, stačí instalovat metabalíček:
 +
 +
 +<code>
 +apt-get install language-support-cs
 +</code>
 +  * Instalovat podporu pro flash a jiné licenčně omezené formáty multimédií.
 +<code>
 +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
 +</code>
 +
 +
 +Java od SUNů není svobodně licencována a je nutno odsouhlasit licenční smlouvu:
 +<code>
 +apt-get install sun-java6-jre sun-java6-plugin
 +</code>
 +
 +  * Můžeme také provést update stávajících balíčků:
 +<code>
 +aptitude update
 +aptitude safe-upgrade
 +</code>
 +
 +
 +
 +===== Start Gnome v chrootu =====
 +
 +{{.:navigate.png}}
 +
 +  * Zachrootujte se - Postupně proveďte tyto příkazy:
 +<code>
 +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
 +</code>
 +
 +  * Spusťte si X na :1:
 +<code>
 +X :1 -ac
 +</code>
 +
 +  * V chrootu pusťte Gnome nebo vaše prostředí v livku:
 +<code>
 +DISPLAY=localhost:1 gnome-session
 +</code>
 +
 +  * 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 ======
 +{{.:cd.png}} Po dokončení úprav CD sestavíme zpátky.
 +
 +  * Připravíme soubory pro squashfs a instalátor na CD:
 +<code>
 +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
 +</code>
 +
 +  * 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:
 +<code>
 +sudo rm -f cd-data/casper/filesystem.squashfs
 +sudo mksquashfs sq-data/ cd-data/casper/filesystem.squashfs
 +</code>
 +
 +  * (Teď můžeme upravit jmenovku CD:)
 +<code>
 +sudo gedit cd-data/README.diskdefines
 +</code>
 +
 +  * Vytvoříme kontrolní součet md5 všech souborů na CD:
 +
 +//(s vyjímkou těch které se budou ještě měnit) //
 +<code>
 +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 ..
 +</code>
 +
 +  * Nakonec zabalíme ISO. To trvá jenom sto let.
 +<code>
 +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 .
 +</code>
 +
 +{{.:clear.png}} A po skončení hrátek s LiveCD, můžeme smazat pracovní adresáře
 +<code>
 +sudo rm -rf cd-data
 +sudo rm -rf sq-data
 +</code>
 +A je to!
 +
 +====== Zkouška CD v emulátoru ======
 +
 +Použij qemu, Luku!
 +
 +<code>
 +qemu -cdrom ubuntu-7.04-desktop-i386-custom.iso -m 300
 +</code>
 +(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:
 +
 +<code>
 +cdrecord dev=/dev/cdrom ubuntu-7.04-desktop-i386-custom.iso
 +</code>
 +====== Odkazy ======
 +
 +  * Viz také [[Vytvoření DVD s repozitáři]]
 +  * Inspirováno anglickým návodem [[https://help.ubuntu.com/community/LiveCDCustomization|LiveCDCustomization]].
 +  * "Klikací" skript s GUI je součástí repository Ubuntu, viz také [[http://uck.sourceforge.net/|UCK - Ubuntu Customization Kit]].
 +  * Vytvoření systému z již existujícího, na USB flash disk [[http://www.linuxexpres.cz/praxe/z-linuxu-mobilny-domov-na-usb-kluci?source=rss|Z Linuxu mobilný domov na USB kľúči]].