Portál AbcLinuxu, 13. května 2024 13:39

LiveCD - 5 (úprava distribuce Slax)

13. 4. 2006 | Michal Vyskočil
Články - LiveCD - 5 (úprava distribuce Slax)  

Po předchozích spíše teoretických dílech se pustíme do něčeho více praktického, abyste pak neřekli, že vám tento seriálek k ničemu nebyl. Seznámíme se s různými způsoby úprav distribuce Slax, čímž se vám v budoucnu určitě povede z ní udělat perfektní LiveCD.

Úvodem

Myslím, že po přečtení minulých dílů (1, 2, 3, 4) problematiku LiveCD znáte po teoretické stránce. Ovšem co je důležitější, jsou praktické vlastnosti. Proto jsem zařadil díl, v němž nebudete poznávat nové souborové systémy, nebo do detailu zkoumat ten, či onen aspekt nějakého spouštěcího skriptu. Tento díl by vás měl přesvědčit, že úprava Slaxe je velmi jednoduchá a můžete si jej velmi snadno a rychle uzpůsobit k obrazu svému.

Způsobů, jak upravit Slax, je několik:

  1. Změna některého souboru - díky existenci adresáře rootcopy můžete snadno změnit několik souborů.
  2. Moduly - také si můžete stáhnout nebo vytvořit rozšiřující moduly, a doplnit tak softwarové vybavení.
  3. Skripty Linux Live - s nimi jsme se seznámili už v minulém díle, a pokud chceme provádět opravdu zásadní změny, nebo dokonce vytvořit vlastní distribuci, nezbude nám, než využít jejich služeb.

Adresář rootcopy

Pokud si vypíšete seznam souborů v kořenovém adresáři CD, dostanete podobný výpis:

-rw-r--r--  1 root root 18259 Sep 27 21:28 COPYING
-r--r--r--  1 root root   339 Sep 27 21:28 LICENSE
-rw-r--r--  1 root root  1406 Sep 27 21:27 abc.ico
...
-rw-r--r--  1 root root  2546 Sep 27 21:28 requirements.txt
drwxr-xr-x  2 root root  2048 Sep 27 21:27 rootcopy
-rw-r--r--  1 root root  3926 Sep 27 21:28 start.html
drwxr-xr-x  3 root root  2048 Sep 27 21:28 tools

Pokud chceme změnit jeden nebo několik málo souborů, je nejrychlejším způsobem je nahrát přímo do zmíněného adresáře rootcopy. Přijdeme tím sice o kompresi, kterou zajišťuje squashfs, ale pro malé soubory to nevadí. Vlastní překopírování obsahu zařídí startovací skript linuxrc (viz LiveCD - 4 (linux live, před spuštěním systému)). Například chceme-li změnit uvítací zprávu, není nic snazšího, než napsat:

mkdir -p /cesta/k/cd/rootcopy/etc
cp uvitaci_zprava /cesta/k/cd/rootcopy/etc/issue

Vytvořit ISO a vypálit. Je na místě podotknout, že tyto soubory jsou omezeny možnostmi souborového systému ISO 9660.

Skript make_iso.sh

Tomáš Matějíček napsal skript, který velmi usnadňuje tvorbu ISO. A aby vám to nebylo líto, tak jeho podstatné části okomentuji.

CDLABEL=""

Hned na začátek nejdůležitější věc, jméno CD. Pokud nechcete, aby šlo ve vypalovačce poznat, že jde o Slax, zde můžete definovat jméno nové. Doporučuji něco úderného, jako například ABC_Linux_2005.

# isolinux.bin is changed during the ISO creation,
# so we need to restore it from backup.
cp -f boot/isolinux.bi_ boot/isolinux.bin

Jak napovídá komentář, soubor isolinux.bin je během procesu změněn. Proto je na začátku mazaně obnoven ze zálohy a vám doporučuji jej z adresáře boot nemazat. Pokud nevíte, co je to za soubor, pak si přečtěte první díl s názvem LiveCD - 1 (úvod, isolinux).

mkisofs -o "$1" -v -J -R -D -A "$CDLABEL" -V "$CDLABEL" \
26 -no-emul-boot -boot-info-table -boot-load-size 4 \
27 -b boot/isolinux.bin -c boot/isolinux.boot .

Posledním a nejdůležitějším příkazem je mkisofs, který vytvoří bootovatelné CD. Pokud se vám zdá příkaz povědomý, pak máte dobrou paměť, protože byl uveden v prvním díle.

Použití je pak velmi prosté: ./mkisofs kam/se/ma/ulozit/iso

Pro ty, kteří nemají zrovna po ruce Linux a pracují na Windows, je k dispozici ješte soubor make_iso.bat se stejnou funkcí. Jen pro zajímavost, ISO se vytvoří příkazem:

tools\DOS\mkisofs.exe @tools\DOS\config -o "%1" \ 
-A "%CDLABEL%" -V "%CDLABEL%" .

Moduly

Moduly jsou základem celého Slaxe, podobně jako je vše ve Smalltalku objekt, nebo vše v Lispu seznam, pak se dá s trochou nadsázky říct, že vše v této distribuci je modul. Pokud mi nevěříte, schválně si vypište obsah adresáře base:

ls -lh base/
celkem 178M
-rw-------  1 root root  12M led 27 21:24 01_kernel.mo
-rw-------  1 root root  31M led 27 21:24 02_core.mo
-rw-------  1 root root  21M led 27 21:24 03_xwindow.mo
-rw-------  1 root root 8,0M led 27 21:24 04_xap_libs.mo
-rw-------  1 root root  18M led 27 21:24 05_common.mo
-rw-------  1 root root  37M led 27 21:24 06_kde_base.mo
-rw-------  1 root root  20M led 27 21:24 07_kde_apps.mo
-rw-------  1 root root  20M led 27 21:24 08_kde_office.mo
-rw-------  1 root root  13M led 27 21:24 09_slax.mo

V něm jsou uloženy základní moduly tvořící systém.

Co je to vlastně modul

Což je poměrně logická otázka. Jindy všeznalý příkaz file mnoho nenapoví:

base/01_kernel.mo: writable, regular file, no read permission

Pochopitelně nemáme práva pro čtení, a proto je file němý. Přihlášením jako root zjišťujeme více.

01_kernel.mo: Squashfs filesystem, little endian, version 3.0, 0 bytes,\
1835 inodes, blocksize: 65536 bytes, created: Fri Jan 27 20:55:47 2006

Moduly jsou tedy bloky dat komprimované souborovým systémem Squashfs (viz LiveCD - 2 (komprimované souborové systémy)). Proto hned připojíme:

# nezapomen, ze adresar . i .. jsou na pripojenem obrazu CD,
# tudiz jsou read-only
mount -o loop -t squashfs 01_kernel.mo ../../01_kernel
mount: wrong fs type, bad option, bad superblock on /dev/loop2,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail  or so

A možná dopadnete jako já, protože mám v jádře starší verzi 2.2, což potvrdil i dmesg:

Squashfs 2.2 (released 2005/07/03) (C) 2002-2005 Phillip Lougher
SQUASHFS error: Major/Minor mismatch, filesystem is (3:0),
I support (1 : x) or (2 : <= 1

Potom nám nezbyde, než si stáhnout patch ze stránek projektu, aplikovat ho (více detailů je v souboru INSTALL) a přeložit jádro.

cd /usr/src/linux-2.{4,6}.x
patch -p1 < location-of-squashfs/linux-2.{4,6}.x/squashfs3.0-patch

Potom nám již nic nebrání se podívat do obsahu modulu:

ls ../../01_kernel/
boot  etc  lib  sbin  usr  var

Jak jsem již tedy uvedl, modul je jednoduše základ celé distribuce a díky kompresi pomocí Squashfs můžete nosit na 200MB mini CD kompletní systém, včetně KDE a KOffice. Naprosto stejně je zařízena funkce ukládání uživatelského nastavení, kdy se změny ukládají do zapisovací větve (viz LiveCD - 3 (podpora pro zápis)) a nakonec jsou zabaleny do modulu, který je při následném startu přehrán a jeho obsah nahradí staší soubory na CD.

Rozšiřujeme Slax pomocí modulů

Na stránkách Slaxe naleznete seznam modulů, které si můžeme stáhnout. Pro mě bývá nutností doinstalovat modul pro Vim, na který jsem si úspěšně vybudoval závislost. V tomto okamžiku máme na výběr dva adresáře, kam modul nahrát:

A potom již výše popsaným způsobem vytvoříme ISO a vypálíme.

Slax také poskytuje nástroje, jak nahrát modul za běhu. Příkazem uselivmod cesta/k/modulu dojde k dynamickému nahrání. Ale stává se, že systém potom úplně vytuhne, takže je lepší se této možnosti vyhnout. Alternativou je kliknutí na modul v Konqueroru, což má stejný efekt (včetně možného zatuhnutí).

Moduly se díky souborovému systému unionfs dynamicky připojí do systému, bohužel je smutnou skutečností, že právě on bývá nejslabším článkem celého systému a častokrát způsobuje záhadné chyby v systému, anebo přivodí i jeho pád.

Závěrem

Dnešní díl obsahoval velmi málo teorie, ale za to byl, doufám, nacpán až k prasknutí informacemi. I když popis malého skriptu makeiso.sh jsem si nemohl nechat ujít. Zároveň byl tento díl (alespoň pro mě jako pro autora) zajímavý v tom, že se odkazoval na znalosti získané ve všech čtyřech předchozích dílech.

Teď už víte, jak modifikovat ISO distribuce Slax a také, že se nejedná o nic složitého. Naopak, myslím, že je to velice snadné. Jediné, co vám může malinko ztěžovat situaci, je rozhodnutí, do kterého adresáře to mám vlastně nakopírovat. V příštím díle se zaměříme na další praktickou a užitečnou dovednost pro váš spokojenější život se Slaxem a tou je vytváření vlastních modulů.

Seriál LiveCD (dílů: 5)

První díl: LiveCD - 1 (úvod, isolinux), poslední díl: LiveCD - 5 (úprava distribuce Slax).
Předchozí díl: LiveCD - 4 (linux live, před spuštěním systému)

Související články

LiveCD - 1 (úvod, isolinux)
LiveCD - 2 (komprimované souborové systémy)
LiveCD - 3 (podpora pro zápis)
LiveCD - 4 (linux live, před spuštěním systému)
Exkurze do světa live distribucí
Vypalování CD - I
Na co se často ptáme 1: LILO
Jak na animované LILO
Jak změnit rozlišení při bootu?
Jak na duální boot s Windows 2000
Mandrakemove 2 CZ
Slackware LiveCD
Danix
ProMEPIS 2005
Jak jsem se poprala s ABC Linuxem

Další články z této rubriky

Úvod do Dockeru (1)
Paralelizace běžných činností v konzoli pomocí GNU Parallel
Unixové nástroje – 26 (triky pro práci v Bashi)
Unixové nástroje – 25 ((s,c)fdisk, gdisk, parted a findmnt)
Linux: systémové volání splice()

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.