A hurá do vypálení prvního CD
Kapitoly článků
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.