- ANSI – American National Standards Institute; Americký národní institut pro standardy
- ATA – AT Attachment; AT připojení
- ATAPI – Advanced Technology Attachment Packet Interface; vyspělejší protokol pro provádění ATA příkazů
- CD – Compact Disc; kompaktní disk
- CLI – Command Line Interface; prostředí příkazového řádku
- FS – File System; souborový systém
- GUI – Graphical User Interface; grafické uživatelské prostředí
- IDE – Integrated Drive Electronics; rozhraní pro integrovaná zařízení jakými jsou např. pevné disky či CD-ROM mechaniky
- IEEE – Institute of Electrical and Electronics Engineers; sdružení velkého množství elektroinženýrů a informatiků takřka ze všech zemí světa
- ISO – International Standards Organization; Mezinárodní organizace pro standardy
- LASER – Light Amplification by Stimulated Emission of Radiation; zesilování světla pomocí stimulované emise záření
- PCMCIA – Personal Computer Memory Card International Association; rozhraní PCMCIA vytváří sběrnici, na kterou je možné připojovat PCMCIA karty
- POSIX – Portable Operating System Interface; přenositelné prostředí pro otevřené unixové systémy
- ROM – Read–Only Memory; trvalá, nepřepisovatelná paměť
- SCSI – Small Computer System Interface; ANSI standard pro paralelní rozhraní připojující nejrůznější periferních zařízení
- USB – Universal Serial Bus; univerzální sériová sběrnice
Mnozí lidé dnes dávají v té či oné distribuci přednost vypalování „cédéček“ či „dévédéček“ v některém z GUI pro standardní nástroje. Těžko říci, proč tomu tak je, ale jak se říká: „Proti gustu žádný dišputát“.
Občas se ale může stát, že oblíbené GUI nějak selže či prostě zrovna není k dispozici. V takových situacích je nesporně dobré vědět, jak si s problémem vypálení dat na „cédéčko“ poradit z CLI. Povíme si tedy, co je to obraz disku, jak se liší od ISO obrazu a jak takový obraz zálohovat, vytvořit a vypálit na nějaký nosič.
Obraz disku
Již každý dnes důvěrně zná duhový lesklý povrch „cédéčka“. Za ony krásné barvy mohou miliardy malých jamek, o které se lámou světelné paprsky. V těchto jamkách jsou uloženy bity informace, které jsou čitelné pomocí laseru.
Typické „cédéčko“ nese kromě dat také informace o svém uspořádání, takzvaný souborový systém (dále jen FS). Pro CD-ROM je nejrozšířenější FS definován normou ISO9660. „Obraz“ disku (angl. image) je dokonalá kopie disku v jediném souboru, typicky s příponou iso.
Zde si uděláme malou terminologickou odbočku a objasníme si rozdíl mezi „ISO obrazem“ disku a „obrazem disku“ obecně. O ISO obrazu disku mluvíme tehdy, jedná-li se o obraz disku, který obsahuje FS podle normy ISO9660. V ostatních případech mluvíme pouze o obrazu disku s tím, že řekneme, že obsahuje „ten či onen“ FS. Máme-li například obraz disku, který obsahuje Ext3 FS, nemluvíme o něm tedy jako o ISO obrazu, ale jako o obrazu disku obsahujícím Ext3 FS.
Vytvoření obrazu
Obraz disku získáme pomocí systémového programu dd. Pro naše potřeby stačí znát pouze dva přepínače programu dd, které lze snadno pochopit na příkladu.
dd if=/dev/cdrom of=/tmp/obraz.iso
Pokud vše proběhlo správně, uložil se nám dokonalý obraz CD-ROM do souboru /tmp/obraz.iso. Předpokládejme, že se jednalo o CD-ROM s ISO9660 FS. S takovým (i s každým jiným) obrazem lze zacházet úplně stejně, jako by se jednalo o skutečnou CD-ROM.
mount -o loop -t iso9660 /tmp/obraz.iso /tmp/obraz/
Do adresáře /tmp/obraz/ jsme připojili /tmp/obraz.iso, jako by to bylo skutečné zařízení (to skutečné bychom ovšem připojili bez přepínače loop). Další příklad.
mount -t iso9660 /dev/cdrom /mnt/cdrom/
V adresáři /mnt/cdrom/ teď máme připojenou skutečnou CD-ROM, z níž jsme prve vytvořili /tmp/obraz.iso. Nechme prozatím obě věci připojené a posuňme se zas o kousek dál.
Verifikace obrazu
Jistě také chceme mít kontrolu, že uložený obraz CD-ROM je opravdu jejím obrazem. Existují v zásadě dvě metody, z nichž první může za určitých podmínek selhat a druhá nemusí být vždy zcela stoprocentní.
První spočívá v porovnání kontrolního součtu pomocí programu md5sum příkazem md5sum /dev/cdrom /tmp/obraz.iso.
Pokud CD-ROM neobsahovala řádnou ukončovací stopu (ta způsobí, že se CD-ROM jakoby „uzavře“ a nelze na ni připisovat další data), uvedená metoda může skutečně selhat. Netřeba se ale děsit! Stále tu totiž je proklamovaná metoda druhá, která spočívá v porovnání obsahu FS CD-ROM s obsahem FS jejího obrazu pomocí utilitky diff.
diff -r /mnt/cdrom/ /tmp/obraz/
Obě věci – jak CD-ROM, tak její obraz – nyní odpojíme, protože se budeme věnovat vytváření různých (především ISO) obrazů CD-ROM. To provedeme příkazy umount /dev/cdrom či umount /mnt/cdrom/ v případě prvním, umount /tmp/obraz.iso či umount /tmp/obraz/ u druhého případu.
Norma ISO9660 specifikuje formát názvů souborů na tzv. „8.3“: název souboru nesmí mít více než osm znaků, přípona nesmí mít více než tři znaky a všechna písmena názvů jsou velká. Tečka na začátku souboru je převedena na znak „podtržítko“. Při vytváření obrazu jsou jména delší než „8.3“ oříznuta. Jsou-li dvě jména v adresáři po oříznutí a zvětšení na velká písmena stejná, pak jsou změněna atd.
Rozšíření RockRidge slouží především pro unixová prostředí a rozšiřuje popis uložených souborů. Umožňuje používat delší jména, symbolické odkazy, bloková a znaková zařízení. Zaručuje přenositelnost identifikátoru uživatele (UID), skupiny (GID) a práv podle normy POSIX.
Rozšíření Joliet je určeno pro případ, kdy má být budoucí CD-ROM k přečtení i v prostředí MS Windows (Windows NT, Windows 95). Kódováním jmen souborů je Unicode. Protože se v případě Joliet nejedná o žádný standard, je dobré k němu vždy přidat také rozšíření RockRidge, aby výsledný CD-ROM nebyl použitelný jen v prostředí MS Win32.>
HFS (Hierarchy Filesystem Standard) je standard hierarchického souborového systému, jemuž „rozumí“ platforma Macintosh.
Vytvoření ISO obrazu
Obraz CD-ROM vytváříme pomocí programu mkisofs. Program slouží k vytváření ISO9660 FS s možností přidat rozšíření RockRidge, Joliet či HFS.
Zhotovme si třeba v adresáři /tmp/cd/ adresářovou strukturu se soubory, dostatečně pestrou na to, abychom na ní mohli zkoušet vytvářet různé ISO obrazy budoucí CD-ROM, a pusťme se do toho.
Chceme-li (čistě teoreticky) vytvořit „vanilla“ (tj. čistý) obraz podle normy ISO9660, proveďme příkaz mkisofs -o /tmp/cd.iso /tmp/cd/.
Tím se nám vytvořil obraz CD-ROM, který obsahuje FS podle normy ISO9660 s obsahem adresáře /tmp/cd/. Můžeme se do něj tedy podívat (pro další ukázky již následující příkaz nebude uveden):
mount -o loop /tmp/cd.iso /tmp/obraz/
Vidíme, že jména souborů byla zkrácena, některá byla přejmenována, všechna jména jsou velkými písmeny a soubory se tváří, jakoby měly nastaven spustitelný atribut. Připojený obraz tedy zase odpojíme a zkusíme raději něco jiného.
Rozšíření RockRidge lze přidat tak, že programu mkisofs předáme jeden ze dvou přepínačů -R či -r, které způsobí velice podobné, ale nikoli stejné chování. Zatímco první způsob vytvoří „jen“ RockRidge obraz, druhý navíc způsobí, že UID a GID budou při vytváření obrazu u souborů i adresářů vynulována (tedy jim budou – de facto – nastavena práva root:root), všechny soubory a adresáře budou mít nastavena práva pro čtení, všechny atributy povolující zápis budou smazány, atd. Druhým způsobem se tedy jednoduše docílí všech důležitých změn, které jsou nutné, aby byla data také čitelná v jiném unixovém systému.
Podíváme-li se nyní opět do obrazu CD-ROM, který jsme vytvořili, spatříme výraznou změnu, která jasně koresponduje s popisem RockRidge oproti čistému ISO9660 obrazu.
Obraz s rozšířením Joliet vytvoříme pomocí přepínače -J. Oba výše popsané přepínače lze samosebou kombinovat, takže například příkazem mkisofs -o /tmp/cd.iso -r -J /tmp/cd/ vytvoříme ISO obraz, který bude mít jak čistě RockRidge, tak Joliet rozšíření.
„Perličkou na dně“ pak může být možnost vytvoření takového ISO obrazu, který se v různých prostředích bude chovat různě. Pracovně jsem si takový obraz obdařil přívlastkem „chytrý“.
Představte si, že potřebujete vytvořit obraz CD-ROM tak, aby se v prostředí MS Windows objevily jiné soubory než v prostředí vaší distribuce. Vytvořme na ukázku dva soubory joliet.txt a linux.txt a proveďme příkaz
mkisofs -o /tmp/cd.iso -R -J -hide joliet.txt -hide-joliet linux.txt \ FOO=joliet.txt FOO=linux.cz /tmp/cd/
Čeho jsme tím docílili? Parametry -R a -J nám specifikovaly, že ISO obraz bude obsahovat jak rozšíření RockRidge, tak Joliet. Parametr -hide schoval soubor joliet.txt pro prostředí Unixu. Parametr -hide-joliet schoval soubor linux.txt pro prostředí MS Windows. Oba soubory se v obou prostředích zobrazí jako FOO. Není to krásné?
Naše krátké povídaní o programu mkisofs tímto končí. Všem zájemcům, kterým by se snad zachtělo ponořit do problematiky hlouběji, doporučuji především podrobné prostudování manuálové stránky programu. Text je to velice hutný, vyčerpávající a zcela postačující. Skutečně v manuálu naleznete snad vše, co je potřeba o mkisofs vědět, a mnoho zajímavého navíc.
Pokračování příště.
Článek vyšel v dubnovém čísle časopisu, některé informace nemusejí být tedy aktuální.