Portál AbcLinuxu, 25. dubna 2024 23:33

LiveCD - 1 (úvod, isolinux)

24. 1. 2006 | Michal Vyskočil
Články - LiveCD - 1 (úvod, isolinux)  

Pojďte se podívat, jak fungují LiveCD. Po lehkém úvodu se dostaneme k velmi zajímavé problematice bootování počítačů a k zavaděčům. Dozvíte se o rodině zavaděčů syslinux. Nakonec si projdeme isolinux a tvorbu bootovacího CD.

Úvodem

Živý (Live) systém je operační systém, který je upraven tak, že dokáže běžet z CD-ROM, nebo DVD-ROM média. Některé umí bootovat například i z USB Flash disku. Používají se jako:

Prezentace
Buď přímo celého operačního systému, nebo jeho konkrétní distribuce
Opravné nástroje
Live systémy jsou velmi užitečné v případě, že je systém nainstalovaný na harddisku poškozen.
Přenosné pracovní prostředí
Stejný systém na libovolném počítači

Asi nejčastěji bývají LiveCD založeny na upravené distribuci GNU/Linuxu. Příkladem je Knoppix nebo Danix založené na Debianu. Případně Slax, respektive ABC Linux 2005, založené na Slackware. Ale k dispozici je řada LiveCD i ostatních známých operačních systémů, jako OpenSolaris, xBSD, Microsoft Windows, Mac OS. A dokonce i těch méně známých, např. založených na jádru Hurd a podobně.

Seznam některých nelinuxových liveCD:

Předpokládám, že většina čtenářů Abíčka se už v nějaké formě s Live systémy setkala (Exkurze do světa live distribucí), takže předchozí úvod byl tak trochu nošením dříví do lesa. V dalším textu se budu specializovat především na linuxová LiveCD, ale dnešní díl je aplikovatelný i pro jiné systémy.

Zavaděč

Vezměme to od Adama, tedy od bootování. První nezbytnou položkou je zavaděč (bootloader), což je program, který zavolá počítač a zavádí (bootuje) vlastní systém. Zavaděče rozdělujeme na dvě kategorie:

Primární (first-stage)
jsou přímo součástí hardwaru počítače. Ve světě PC se používá poměrně hloupý BIOS od IBM. Společnost Sun vyvinula daleko pokročilejší zavaděč zvaný Open Firmware (nebo OpenBoot) napsaný v jazyce Forth (viz článek OpenBoot prompt). Ten se používá v PowerPC, Sparc, Ibm Power a ostatních systémech.
Sekundární (second-stage)
které volá právě primární zavaděč. Určitě znáte programy jako LILO (Linux Loader), Grub (Grand Unified Bootloader), loadlin (aplikace, která je schopná z DOSu zavést Linux). Nebo NTLDR, zavaděč operačních systémů rodiny Windows NT. Dále sem patří některé univerzální bootovací manažery, například XOSL.

V této souvislosti si neodpustím poznámku. Jak Sun Microsystems, tak Apple Computers migrují na PC platformu, proto mě zajímalo, zda jejich intelovské produkty používají BIOS nebo OpenFirmware. Operační systém firmy Sun Solaris (respektive OpenSolaris) může běžet na běžných PC s BIOSem. Společnost Apple sice od používání OpenFirmware odstoupila, ale na rozdíl od Sunu nepodporuje běh na běžných PC. Ve svých Intel-based počítačích používá Extensible Firmware Interface (EFI), který byl vyvinut společností Intel pro architektury IA-32 a Intanium.

Syslinux

Mimo výše zmíněné komplexní zavaděče, jako je třeba GRUB, existuje i velmi jednoduchý bootloader zvaný syslinux. Tedy ve skutečnosti se jedná i balík programů, protože pod označením syslinux se skrývá celá škála jednoúčelových zavaděčů:

Pro nás je pochopitelně nejzajímavější právě zavaděč isolinux. Většina z nás pravděpodobně poprvé viděla toto jméno při spuštění instalačního CD, které spolu s LiveCD bootují právě prostřednictvím tohoto zavaděče.

Samotný proces bootování z CD popisuje El Torito Bootable CD Specification, což je rozšíření specifikace ISO 9660, které umožňuje bootovat z CD-ROM. Z historických důvodů existují dva režimy zavádění:

Floppy Emulation Mode
V tomto režimu je zaváděcí sekvence uložena v obraze (image file) diskety. Obraz je nahrán z CD a zavádění probíhá stejně jako z klasického pevného disku nebo diskety. Protože souborovým systémem obrazu diskety bývá FAT, používaným zavaděčem je syslinux. Tento režim vznikl z důvodu, že tehdejší BIOSy nenačítaly bootovací sekvence z ISO 9660 systémů.
No Emulation Mode
V tomto případě je zaváděcí sekvence uložena přímo na disku CD-ROM a bootování probíhá přímo z něj. Tento režim je vyžadován zavaděčem isolinux a vzhledem k tomu, že všechny BIOSy z posledních dejme tomu 7 až 10 let podporují zavádění z CD-ROM, tak není moc důvodů, proč používat emulační mód.

Používáme isolinux

Následující text je takové mini-howto k isolinuxu. Protože je ten zavaděč skutečně velmi jednoduchý, tak v podstatě není, o čem psát. K vytvoření obrazu CD potřebujete program mkisofs verze 1.13 a vyšší, který je součástí balíku cdrtools.

Nejprve si musíte do některého adresáře zkopírovat věci, které mají být na vašem LiveCD. Ten se stane kořenovým vašeho CD. Isolinux standardně hledá konfigurační soubor isolinux.cfg ve třech adresářích /isolinux, /boot/isolinux nebo v /. Můžete si vybrat libovolný z nich. V něm potom uvedete umístění dalších potřebných souborů. Následuje ukázka nastavení z distribuce ABC Linux 2005. Více podrobností se dočtete v dokumentaci v souboru syslinux.doc.

display boot/splash.cfg
default linux
prompt 1
timeout 0
F1 boot/splash.txt
F2 boot/license.txt

label abc
kernel boot/vmlinuz
append max_loop=255 initrd=boot/initrd.gz init=linuxrc load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=4444 root=/dev/ram0 rw

label linux
kernel boot/vmlinuz
append max_loop=255 initrd=boot/initrd.gz init=linuxrc load_ramdisk=1 prompt_ramdisk=0 ramdisk_size=4444 root=/dev/ram0 rw

label memtest
kernel boot/memtest

Jak vidíte, formát souboru je poměrně primitivní a nepotřebuje příliš komentářů.

display je uvítací zpráva, kterou má zavaděč zobrazit
default je výchozí obraz jádra, který se má zavést
prompt možnost zadávat vlastní bootovací parametry
timeout počet sekund do automatického spuštění, 0 znamená neustálé čekání
Fx soubor, jehož obsah se vypíše po stisku funkční klávesy
label je krátký název jádra
kernel definuje jeho umístnění
append další parametry předané jádru

Na příkladu rovněž vidíme, že isolinux nezavádí pouze linuxové jádro, ale kterýkoliv soubor typu x86 boot sector, v našem případě memtest.

Soubory potřebné pro nabootování:

$ tree boot
boot
|-- initrd.gz
|-- isolinux.bin
|-- isolinux.boot
|-- splash.bmp.gz
|-- splash.cfg
|-- splash.lss
|-- splash.txt
`-- vmlinuz
initrd.gz init ram jádra
isolinux.bin vlastní binárka zavaděče
isolinux.boot bootovací data
splash.lss obrázek ve formátu LSS16 (podporuje pouze 4 barvy), lze ho získat programem ppmtolss16 přímo z balíku syslinux
vmlinuz Linux, jádro systému

V okamžiku, kdy máme vše připraveno, můžeme vytvořit image příkazem (za předpokladu, že pracovní adresář je kořenovým našeho CD)

mkisofs -o foo.iso \
-b boot/isolinux.bin -c boot/isolinux.boot \
-no-emul-boot -boot-info-table -boot-load-size 4 \
-v -J -R -D -A "LiveCD" -V "LiveCD" \
.

Parametry na předposledním řádku nejsou povinné, nicméně je používá Tomáš Matějíček při tvorbě ISO souborů distribuce Slax. Pohled do dokumentace isolinuxu říká následující:

-b bootovací obraz dle standardu El Torito
-c katalog zavaděče (boot catalog)
-no-emul-boot aktivuje neemulační režim bootování
-boot-info-table zapíše El Torito boot info table
-boot-load-size počet virtuálních sektorů které jsou načteny v neemulačním režimu
-v "ukecaný" verbose režim
-J rozšíření Joliet
-R rozšíření Rock Ridge
-D zakáže deep directory relocation
-A název aplikace (application id)
-V název svazku (volume id)

Vlastnosti a omezení isolinuxu

Isolinux má některá omezení, s nimiž je nutné počítat. Především používá unixový styl psaní cest, přičemž délka je omezena na 255 znaků. Podporuje pouze názvy definované v ISO 9660, ale už ne soubory využívající rozšíření Rock Ridge nebo Joliet. Pod Unixem si můžeme názvy ověřit připojením obrazu s parametry -o norockridge, nojoliet. Nicméně isolinux podporuje dlouhé (level 2) názvy souborů. Takže pokud nepotřebujete podporovat systémy s omezenou délkou názvů (jako MS-DOS), můžete vygenerovat obraz s parametrem -l, nebo -iso-level 2. Tím se možná délka názvu zvýší až na 31 znaků.

Závěr

V úvodu tohoto dílu jsme se dozvěděli něco o Live systémech. Potom jsme přešli k bootování a zavaděčům. Nakonec jsme se seznámili se zavaděčem isolinux, který je používán pro tvorbu bootovatelných CD. Další díl bude věnován problematice souborových systémů pro LiveCD.

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

První díl: LiveCD - 1 (úvod, isolinux), poslední díl: LiveCD - 5 (úprava distribuce Slax).
Následující díl: LiveCD - 2 (komprimované souborové systémy)

Související články

LiveCD - 2 (komprimované souborové systémy)
LiveCD - 3 (podpora pro zápis)
LiveCD - 4 (linux live, před spuštěním systému)
LiveCD - 5 (úprava distribuce Slax)
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

Odkazy a zdroje

syslinux
Extensible Firmware Interface (EFI)
Specifikace El Torito

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.