Diit.cz - Novinky a informace o hardware, software a internetu

A hurá do vypálení prvního CD

diit.cz logo na CD-R serveru 1. dubna 2009
Ve spolupráci s Linux Double Weekly News, konkrétně pak s xpj, jsme pro vás připravili 5-ti dílný seriál o vypalování pod Linuxem. Bude vycházet každou středu a věříme, že zaujme nejen zvětšující se linuxovou komunitu, ale i ty co zatím o Linuxu jen slyšeli. Dnes tedy začínáme a první kapitola má tyto oddíly: Proč pod Linuxem?, Co je třeba, Vypalovačka, Jádro a Spouštění nového jádra.

V minulé části jsme si připravili systém pro práci s vypalovačkou, nastavili jádro a vyzkoušeli, zda cdrecord vypalovačku najde. Pokud vše pracuje tak jak má, můžeme se pustit do prvních pokusů s vypalováním.

mkisofs

mkisofs je program, který slouží k vytvoření iso9660 filesystému, který se následně vypálí na CD. Program podporuje většinu rozříření pro tento fs, např. Joliet, El Torito ... Ve svém článku budu používat verzi 1.12b5, která je v distribuci RedHat 6.1.

cdrecord

cdrecord je moderní vypalovací program, který slouží pro zápis dat na CD. Podporuje většinu formátů disků (jsou to takové ty růžové, zelené a já nevim jaké knihy :), umí pálit audio CD, datová CD, umí pálit na obyčejná CD-R média i na média CD-RW (ale pálí na ně, jako by to byla obyčejná CD-R), umí multisession, zápis TAO (track at once). Bohužel zatím neumí DAO (Disk at once), ale na to slouží program cdrdao.

filesystém iso9660 a jeho rozšíření

ISO 9660 je filesystém, v jehož formátu jsou uložená data na CD. Největším rozdílem např. od ext2 je, že se na něj nedá zapisovat. Mezi další omezení patří, že adresářová struktura může mít pouze 8 úrovní, maximální délka názvu souborů 32 znaků a maximální velikost 650 Mb. Proto se objevila další rozšíření tohoto standardu.

RockRidge je rozšíření, které slouží pro větší hloubku adresářové struktury a delší názvy souborů. To ovšem není možné pod microsoftskými os, ale při čtení CD v tomto rozšíření pod Linuxem se zobrazují veškeré atributy, které soubor má (tedy vlastník, skupina, práva a hlavně symbolické linky).

El Torito slouží k tvorbě bootovacích CD-ROMů. K tomu je potřeba BIOS, který tuto možnost podporuje. Vtip spočívá v tom, že na začátku CD je "zkopírovaná" disketa (prvních 1.44 Mb zabírá floppy-image). BIOS pak použije CD jako disketu a nabootuje z ní.

Joliet je rozšíření, které uchovává dlouhé názvy os windows (win95/98/nt). Je to v poslední době asi nejrozšířenější formát CD-ROMů.

Začínáme : data

Začneme víceméně tím nejjednodušším, co můžeme vypalovat a to jsou data. Na disku si v určitém adresáři připravíme adresářovou strukturu se soubory, které chceme vypálit. Dejme tomu, že si je dáme do adresáře /cd-image. Potom musíme z tohoto adresáře vytvořit iso-image. Můžeme si vybrat, jaké rozšíření použijeme. Doporučoval bych buď RockRidge nebo Joliet, je to samozřejmě závislé na tom, co vypalujeme a kdo to bude používat (na mp3ky bych doporučil Joliet, na CD s programy z Linuxu RockRidge).

Nejjednodušší použití je:

mkisofs -J -o image.cd /cd-image/

Kde parametr -J zapíná Joliet rozšíření, parametrem -o image.cd určujeme, kam se bude zapisovat výstup z programu (tedy vytvořený iso-image) a poslední parametr je cesta ke zdrojovým souborům. Místo parametru -J můžeme použít -r, což vytvoří image v rozšíření RockRidge a nastaví práva na čtení dat všem. Podle všeho lze použít oba parametry, abychom měli přístup k dlouhým názvům souborů v Linuxu i pod Windows.

Dalšími důležitými parametry programu jsou:

-a použije všechny soubory, nevynechává např. záložní soubory
-f za symbolický link doplní soubor na který tento ukazuje
-J Joliet rozšíření
-l použití 32znakových názvů pro iso9660
-L použití názvů souborů, začínajících tečkou v iso9660
-r RockRidge - upravený
-R RockRidge
-print-size vypíše pouze velikost budoucího filesystému

Pokračujeme : test vytvořeného iso-image

Pro otestování vytvořeného iso-image použijeme jednu z nejgeniálnějších vlastností Linuxu a to namountování souboru do adresářové struktury. Na námi vytvořený image použijeme tento příkaz (předpokládáme, že mount-point /mnt/cd-test existuje):

mount -t iso9660 -o loop image.cd /mnt/cd-test

Pak se již můžeme podívat do adresáře /mnt/cd-test, kde je vidět, jak bude vypadat CDčko.

Dokončení: palba iso-image na CD

A přichází vlastně to nejdůležitější, pálení na CD. Pokud tedy máme vše v pořádku, cdrecord vypalovačku najde a umí s ní komunikovat, iso image vypadá tak, jak by měl a už jsme se odhodlali, zbývá napsat tento příkaz:

cdrecord -v speed=2 dev=0,0,0 -data image.cd

Po spuštění nám program dává ještě 9 sekund na to, abychom se opravdu rozhodli, jestli opravud ano nebo ne. Pokud si to tedy rozmyslíme, stačí stisknout Ctrl-C a proces pálení neproběhne.

Parametr -v slouží pro výpis informací ohledně pálení (něco o vypalovačce, médiu, image a vypisuje i informace o průběhu zápisu na CD, bez něj je program tichý jak voda), speed=2 udává rychlost, jakou budeme pálit (zde tedy dvourychlostně a nesnažil bych se používat větší rychlost než vypalovačka podporuje), dev=0,0,0 udává
zařízení, kterým budeme pálit (čísla jsou závislá na tom, co vypíše cdrecord -scanbus, podle toho se použijí), -data že budeme pálit data a pak již název našeho iso-image.

Pro první pokusy bych ROZHODNĚ doporučoval použít parametr -dummy, který provádí vše, tak jak má být, ale s vypnutým laserem (tedy na CD se nic nezapisuje).

Jak to zjednodušit

Pokud máte silný stroj a jste trochu dobrodruh, můžete vyzkoušet tento sled příkazů (opsáno z CD-Writing HOWTO):


IMG_SIZE=`mkisofs -R -q -print-size /cd-image/ 2>&1 | sed -e "s/.* = //"`
echo $IMG_SIZE
[ "0$IMG_SIZE" -ne 0 ] && mkisofs -r /cd-image/ | cdrecord speed=2 dev=0,0,0 tsize=${IMG_SIZE}s -data -

První příkaz spustí mkisofs pro zjištění délky iso-image, kterou v druhý příkaz vypíše (to můžeme vynechat). Poslední příkaz zjistí, zda není velikost nulová, jestli ne, tak spustí mkisofs, jehož výstup si odebírá cdrecord, který ví, jak budou data velká (parametr tsize, nesmí se zapomenout na s na konci) a že je
bere ze standardního vstupu (to je to "-" na konci) a zapisuje je na zařízení dev=0,0,0 rychlostí speed=2.

Kopie CDčka 1:1

Posledí věcí, na kterou bych se dnes ještě podíval by byla kopie CD 1:1, tedy získání identické kopie disku. Zde můžeme použít dvě metody. Pokud máme vypalovačku a CD-ROMku, můžeme použít příkaz:

cdrecord -v dev=0,0,0 speed=2 -isosize /dev/scd1

kde jako zdroj dat dáváme CD-ROMku na /dev/sdc1 (samozřejmě podle toho, kde ji máte připojenou) a přímo zapisujeme data vypalovačkou na CDčko.

Pokud máme pouze vypalovačku, je nutné si obsah celého CD zkopírovat do souboru, který pak vypálíme. Zkopírování souboru se provede buď příkazem:

dd if=/dev/scd1 of=cdimage

kde parametr if=/dev/scd1 určuje zařízení, z kterého se kopíruje a parametr of=cdimage určuje soubor, do kterého bude obsah CD uložen.

Druhou možností vytvoření obsahu CD na disku je prográmek readcd, který po spuštění vypíše menu, kde si můžeme vybrat zkopírování obsahu CD do souboru. Tento program je součástí balíku cdrecord.

Výstup těchto programů je shodný s výstupem programu mkisofs, takže zápis na CD se provede tak, jak bylo popsáno výše. Upozorňuji pouze na to, že tento postup se nedá použít na AudioCD, na ta se musí využít buď cdda2wav, cdparanoia nebo cdrdao.

Něco málo o cdrecordu

cdrecord tedy slouží pro zápis dat na CD, jak již bylo řečeno dříve. Jeho ovládání parametry z příkazové řádky je jednoduché a parametry jsou celkem jasné.

Nejdříve se podíváme na nějaké informace ohledně vypalovačky. Příkaz -scanbus jsme si popsali minule, ale pokud již víme, že program vypalovačku najde, můžeme si vypsat veškeré zjistitelné informace o ní. To se provede příkazem:

cdrecord dev=0,0,0 -prcap

což vypíše informace o zařízení připojené na dev=0,0,0. Výpis začíná informacemi o zařízení, pak následují schopnosti čtení a zápisu na CD-R, CD-RW, DVD-R, DVD-RAM a zda podporuje testovací zápis (bez zapnutého laseru). Dále jsou informace ohledně schopnosti čtení různých formátů, informace o hraní audio CD, informace o uložení CD v mechanice a rychlosti čtení a zápisu.

Pro zápis si můžeme vybrat několik typů formátů, pro ně slouží tyto parametry:

-audio zapisuje data jako audio stopy
-data data jsou normální data
-xa2 data jsou CDROM XA mód 2 (používá se při multisession)
-dao zápis v Disk At One módu
-fix uzavře neuzavřený disk nebo se ho pokusí opravit
-multi vygeneruje TOC (table of contents), podporující multisession (zápis je pak v módu XA 2)
-msinfo vypíše informace o multisession, které jsou potřeba pro mkisofs
-toc vypíše TOC
-dummy zapisuje bez zapnutého laseru
-v vypisuje informace o průběhu zápisu
blank= vymaže CD-RW, může nabývat hodnot all, fast, track, ... při použití help se vypíší možnosti čištění CD-RW disku

Zde samozřejmě nebudu vypisovat všechny parametry, pouze ty nejdůležitější. Podrobný popis všech parametrů najdete v manuálové stránce programu. Každopádně doporučuji k prostudování.

Závěr

Takže už umíme vytvořit datový iso-image a vypálit ho. Příště budeme pálit audio CD v módech TAO a DAO (tj. s mezerami a bez mezer mezi písničkami) a možná také mixed mode a multisession CDčka.

xpj

Diskuse ke článku Jak pálit pod Linuxem

Středa, 24 Listopad 2004 - 17:45 | Martin Bartoň | msk: Všimnul sis, kdy ten článek vyšel?
Středa, 24 Listopad 2004 - 11:38 | Anonym | Napalovat pod linuxom na 2.0 / 2.2 kerneli? To...
Úterý, 26 Říjen 2004 - 07:22 | Anonym | Pokud mate zajem o dalsi clanky na tema...
Středa, 7 Duben 2004 - 00:14 | Martin Bartoň | xpj: To samozřejmě není problém. Jen se ozvi,...
Úterý, 6 Duben 2004 - 21:05 | Anonym | Ten článek je 4 roky starý. Před tou dobou, kdy...
Neděle, 28 Březen 2004 - 12:02 | Martin Bartoň | Jestli máte někdo nové informace a zkušenosti s...
Neděle, 28 Březen 2004 - 01:29 | Anonym | Ten clanek je ctyri roky stary. Zhruba v tuto...
Úterý, 23 Březen 2004 - 08:58 | Anonym | Pěkný a přehledný článek. Ale možná by to chtělo...
Čtvrtek, 12 Únor 2004 - 10:20 | Anonym | Proc ma ten linux vsechno tak neskutecne slozite...

Zobrazit diskusi