Vypalování v Linuxu

10. 12. 1999
Doba čtení: 6 minut

Sdílet

Ačkoliv vypalování CD není už dávno v Linuxu pouze otázkou příkazové řádky, zůstává tento způsob u mnoha lidí stále ve veliké oblibě, zejména proto, že uživatel získá lepší kontrolu nad celým procesem a vyšší pružnost. Dnes se tedy na vypalování s klasickými nástroji podíváme detailněji.

Vím, že existuje spousta lidí, kteří vlastní nějaký ten CD zapisovač a vypalují zásadně v M$ Windows. Buďto se to děje ze zvyku, z důvodů uživatelské přítulnosti, nebo z neschopnosti rozjet vypalování v Linuxu. Pokud patříte ke třetí skupině, měl bych pro vás pár rad. Zástupci skupiny první a druhé nechť laskavě nevěnují těmto řádkům pražádnou pozornost.

Zakoupil jsem IDE čtyřrychlostní vypalovačku HP 8100+ už se záměrem vypalovat v Linuxu (Red Hat 5.2). Informace jsem čerpal pouze z CD-Writing-HOWTO, kam odkazuji pro podrobnější informace i na seznam ověřených zařízení. Nyní musím předeslat, že vypaluji pomocí programu cdrecord a image vytvářím pomocí mkisofs a pouze těm se budu věnovat.

Program cdrecord vypaluje na CD tracky datové nebo hudební. Každý track představuje na harddisku jeden soubor. Hudební track může být například soubor WAV. Datový track se musí vytvořit pomocí mkisofs. Představte si, že si svá data určená k vypalování nahrajete do jednoho adresáře /root/mojedata, potom vhodně použijete mkisofs, který všechny soubory z /root/mojedata včetně adresářové struktury spojí do jednoho souboru např. IMAGE.RAW – tím vznikne image (obraz) datového tracku a ten už jste schopni vypálit na CD. Norma pro souborový systém na datovém CD se nazývá ISO 9660 a pokud pro vytvoření image použijete mkisofs (název vznikl z Make ISO 9660 File System), bude vaše CD čitelné ve Winech, na Macích, Amigách… Tolik kratičká teorie.

cdrecord zasílá vypalovačce SCSI příkazy. Nevlastníte-li SCSI řadič a SCSI vypalovačku, je jádro schopno s určitým omezením SCSI emulovat. Původní jádro v distribuci Red Hat má emulaci zkompilovanou v zaveditelných modulech. Takže nyní sdělíme jádru, že naše IDE vypalovačka bude emulována. Do souboru /etc/lilo.conf připíšeme v sekci image=/boot/vmlinuz-X.X.XX-XX jeden řádek: append=„hdc=ide-scsi“, kde hdc je původní název zařízení pro vypalovačku. Spustíme příkaz LILO, aby se provedly příslušné změny, a systém restartujeme. Po nalogování zavedeme modul do jádra příkazem insmod ide-scsi a objeví se nám informace o nově detekovaném SCSI zařízení. Důležitý je řádek Detected scsi CD-ROM sr0 at scsi0, channel 0, id 0, lun 0 (já mám všude nuly, ale někdo jiný nemusí). Pro vypalovačku teď namísto označení hdc platí sr0, takže upravíme soubor etc/fstab, aby se dala vypalovačka namountovat. Čísla channel, id a lun si zapamatujeme, neboť je budeme předávat cdrecordu. Pozn: modul ide-scsi se zavede automaticky po každém startu, když do souboru /etc/rc.d/rc.local přidáte řádek insmod ide-scsi.

Přistupme k vypalování. Nejjednodušší je vytvořit AUDIO CD:

cdrecord -v dev=0,0,0 speed=4 -audio /root/mojehud­ba/.wav

Přepínač -v zvýší „ukecanost“ (verbose level) výstupu programu. Parametr dev obsahuje dříve získaná čísla channel, id, lun (postupně). Přepínač -audio zajistí, že následující tracky jsou páleny jako audio. V adresáři /root/mojehudba jsou nachystané WAV soubory (vypalují se v abecedním pořadí, v případě potřeby jiného pořadí je nutné vypsat jednotlivé soubory ručně).

Někdy se objeví chybové hlášení ohledně velikosti audio tracků a k vypalování nedojde. Tracky mají totiž přesně definovanou nejmenší velikost a velikost dílků, ze kterých jsou složeny. V tom případě je nutné špatné tracky „dovycpat“ přepínačem -pad:

cdrecord -v dev=0,0,0 speed=4 -pad -audio /root/mojehud­ba/
.wav

Mezi audio tracky se automaticky vytváří 2 sekundové mezery. Od verze 1.8 je cdrecord schopen vypalovat režimem DAO (Disc At Once) – tedy audio tracky jsou stále indexovány, avšak bez mezer.

cdrecord -v dev=0,0,0 speed=4 -dao -audio /root/mojehud­ba/.wav


Vytvoření datového image se provádí pomocí programu mkisofs:

mkisofs -R -J -l /root/mojedata/ >/root/image.raw

Tento příkaz vytvoří jeden velký soubor /root/image.raw – obraz datového tracku, obsahujícího data z adresáře /root/mojedata/. Přepínače -R -J -l rozšiřují původní ISO 9660 o Rock Ridge Extensions, Joliet Extensions, Long Names. Souborový systém ISO 9660 je na dnešní dobu velmi omezený, proto se vytvořily jeho rozšíření, umožňující uložení dlouhých názvů souborů, uchování přístupových práv k souborům a podobně. Použité rozšíření v příkladu jsou podle mého názoru nejlepší. Vypálení takto připraveného image provedeme příkazem:

cdrecord -v dev=0,0,0 speed=4 -data /root/image.raw

„Mixované“ CD s jednou datovou a několika audio stopami vytvoříme takto:

cdrecord -v dev=0,0,0 speed=4 -data /root/image.raw -audio /root/mojehud­ba/
.wav

cdrecord standardně uzavře každé vypalované CD. Pokud budete chtít na CD v budoucnu něco připálit, zadejte přepínač -multi.

cdrecord -v dev=0,0,0 speed=4 -multi -data /root/image.raw

Vypalování na CD-RW se řídí stejnými pravidly. Přejete-li si CD-RW celé smazat, použijte příkaz:

cdrecord -v dev=0,0,0 speed=2 blank=fast

Seznam možných způsobů mazání dostanete po zadání příkazu:

cdrecord blank=help

Pokud chcete vyzkoušet, zda je Váš systém schopen dodávat dostatečně rychle data vypalovačce, zadejte následující příkaz. Všechno proběhne jako při vypalování, jenom se nezapne laser.

cdrecord -v dev=0,0,0 speed=4 -dummy -data /root/image.raw

Vytvoření kopie CD
Vytváříte-li kopii AUDIO CD, požijte nejprve program cdparanoia pro získání audio tracků (vřele doporučuji, jelikož tento program má bezvadnou kontrolu škrábanců):

cdparanoia -d /dev/sr0 -B „1-“

Přepínačem -d /dev/sr0 určujete zařízení, kde je vloženo CD. Přepínač -B způsobí, že každý track bude uložen ve zvláštním souboru. Parametr „1-“ říká, že se bude grabovat od prvního do posledního tracku. cdparanoia uloží v aktuálním adresáři jednotlivé stopy ve formátu WAV. Dále vypalujte podle výše uvedeného návodu.

Kopii datového CD vytvoříte buďto tím, že zkopírujete všechny soubory na disk a vygenerujete z nich image, a nebo si na disk uložíte přímo obraz CD. Pak se již postupuje stejně, jako ve výše uvedených příkladech. První způsob je jasný, druhý vyžaduje, aby na originálním CD byl pouze jeden datový track. Vložíte originální CD do mechaniky a zadáte:

cdrecord dev=0,0,0 -toc

čímž získáte TOC (Table Of Content – tabulka obsahu). Poslední 3 řádky mohou vypadat následovně:

first: 1 last 1
track: 1 lba: 0 ( 0) 00:02:00 adr: 1 control: 4 mode: 2
track:lout lba: 333628 ( 1334512) 74:10:28 adr: 1 control: 4 mode: –1

Duležité je, aby na CD byl jenom 1 track (first: 1 last 1). Velikost 333628 udává velikost tracku ve 2kB blocích. Pro získání image můžeme zadat příkaz:

dd if=dev/sr0 of=/root/image.raw bs=2k count=333628

Tímto nám vznikne soubor /root/image.raw, kterýžto je obrazem originálního CD, a ten vypálíme. Možná je to trochu krkolomný způsob, ale mně se osvědčil.

Na závěr uvedu způsob, jakým se vypálí soubory na HDD bez nutnosti vytvoření image. Je to vlastně nepřesné, neboť image se tvoří, avšak pouze v paměti, a cdrecord je spojen s mkisofs rourkou (pipe). Zadejte příkaz:

mkisofs -R -J -l -q -print-size /root/mojedata/

Tímto neproběhne vytvoření image, pouze budete informováni, jakou že by image měl velikost. Např.: Total extents scheduled to be written = 25504 znamená, že image bude mít velikost 25504 bloků po 2kB, což odpovídá (25504×2048) 51008 kilobytům (no budiž). Další příkaz provede vlastní vypalování:

mkisofs -R -J -l /root/mojedata/ | cdrecord -v dev=0,0,0 speed=4 tsize=25504s -

Prosím, nezapomeňte na písmeno „s“ v parametru tsize. Nutno poznamenat, že tento způsob zatěžuje systém více a je větší šance na zničení CD, proto nejdříve testujte s parametrem -dummy a nebo vypalujte nižší rychlostí.

P.S. Pro programy cdrecord, cd2wav, mkisofs existuje okénková nadstavba XCDRoast (a několik dalších, stačí se podívat na Freshmeat – poznámka redakce), který tohle všechno nabízí pomocí několika ťuknutími myši. Nějak se mi ale na něm nelíbilo, že nemám tolik věcí pod kontrolou.

Hodně úspěchů při vypalování!

Autor článku