Portál AbcLinuxu, 12. května 2024 07:58

Vypalování CD - III

18. 2. 2003 | Juraj Remenec
Články - Vypalování CD - III  

Vytvoření image souboru. Vypalování datových, audio a mixed CD. Programy: mkisofs, cdrecord, cdrdao, cdparanoia.

Dovoľte, aby som Vás privítal pri už treťom vydaní seriálu o napalovaní CD pod operačným systémom Linux. V dnešnej časti sa ponoríme do samotnej problematiky napalovania.

Táto časť seriálu už bude predpokladať, že máte úspešne spustenú a nakonfigurovanú napalovačku na vašom počítači. Ak nie, prečítajte si naše staršie diely (I a II).

Ak ste donedávna používali niektorý z napalovacích programov pod Windows, či už je to NERO, Easy CD Creator, alebo originál dodávaný ku vášmu modelu napalovačky, zabudnite na jeho ovládanie. V tejto časti sa budeme zaoberať najmä programami určenými pre príkazovú riadku. Samozrejme, neskôr spomenieme aj niektoré grafické nadstavby, ktoré ale tak, či tak používaju programy, ktoré tu dnes budeme rozoberať.

1. Začíname

Vypalovanie CD pod Linuxom sa realizuje v dvoch krokoch. V tom prvom musíme mať pripravení tzv. obraz nášho budúceho CDčka. Kto donedávna používal na napalovanie systém Windows, a vytváral si obraz každého kopírovaného CDčka na svoj disk, určite vie, o čom je reč. Ti, ktorí nevedia, o čom je reč, si môžu predstaviť určite miesto na svojom disku (napríklad adresár), pod ktorým majú porozmiestňované a ponahrávané súbory tak, ako ich budú chcieť mať porozmiestňované na svojom novom CD. Treba si však uvedomiť ďalšiu vec. Zatial čo vo Windowse nebolo pravidlo vytvárat obraz (okrem prípadu, ked vlastníte len napalovačku bez CDROM), v Linuxe by malo vždy platit, že treba vytvorit obraz na disk. Samozrejme nie je to podmienka. Niektoré grafické napalovacie programy, dokážu napalovať už priamo zvolený adresár (obraz robia automaticky) - o tom, ale až v budúcej časti.

Obrazom v Linuxe bude jeden súbor, ktorý bude obsahovať akoby zabalené data, ktoré chceme vypáliť. To znamená, že v Linuxe nestačí nahádzať pod jeden adresár data a začať ich hneď napalovať, ale musíme tieto data zabaliť (zhrnúť) do takzvaného ISO súboru (ISO - viď. prvý diel seriálu). Nejde tu ani tak celkom použiť slovo "zabaliť", lebo data v tomto súbore nie su komprimované, ale kedže sa všetky súbory zhrňaju do jedného, budem aj naďalej používať slovo "zabaliť". Tento postup je dôležitý najmä preto, že obyčajné čisté CD ešte neobsahuje žiadný súborový systém a práve tento mu musíme zadefinovať pri výrobe ISO súboru. Súborový systém má na starosti organizáciu súborov na médiu. Každé médium na počítači musí obsahovať nejaký súborový systém či už je to disketa, CDčko, disk, ZIP mechanika alebo aj FLASH karta. Súborových systémov je niekoľko a každé z nich je niečim špecifické.

Ďalším krokom napalovania pod Linuxom, je už samotné vypalovanie ISO súboru (obrazu) prostredníctvom programu cdrecord, alebo už aj pomocou nového dvdrecord.

2. Vytváranie obrazu

Iste je vám už známe, že na každom zariadení (médiu) musí byť vytvorený nejaký súborový systém. Po formáte diskety, disku, alebo iného média musíme (pod Linuxom) vytvárať súborový systém (mkfs). Zatiaľ čo na disku vytvoríme systém a postupom času ho vypĺňame údajmi, tak v CD to je len jednokroková záležitosť. To znamená, že v jednom kroku musíme na CD vytvoriť systém a zaroveň ho už aj zaplniť údajmi. Ak sa vám podarí vytvoriť prázdny ISO súbor, tak výsledkom bude čisté naformátované CD so súborovým systémom bez údajov, ktoré už môžte akurát tak zahodiť. Vzhľadom na tieto skutočnosti ani nie je možné napríklad z prepalovateľného CDčka vymazať len určitú časť sektorov, ale CD treba úplne zmazať a na novo napáliť.

Na vytváranie ISO obrazov slúži nástroj mkisofs, ktorý môžte stiahnúť aj ako súčasť balíka cdrtools z domovskej stránky autora programu cdrecord. V minulosti bol náhradou mkhybrid, lebo mkisofs ešte nedosahovalo takých "kvalit" ako dnes.

Ešte chcem upozorniť, že v nasledujúcich riadkoch sa budeme venovať len systémom, ktoré podporuje balík mkisofs. Pokiaľ máte záujem sa dozvedieť niektoré informácie o ďalších súborových systémoch, tak celkom dobre howto nájdete aj na stránke Filesystems-HOWTO. Aby sme ale furt len nekecali, poďme sa pozreť na príklad vytvorenia takého ISO obrazu.

mkisofs -r -o nazov_vystupneho_suboru.iso vstupny_adresar/

Uvedený príklad demonštruje vytvorenie jednoduchého ISO súboru, ktorý je možne začať napalovať. Ak si do adresára napríklad /iso nahrám nejaké súbory a použíjem vyššie uvedenú syntax príkazu mkisofs, bude výsledkom jediný ISO súbor, ktorý keď vypálime na CD a pozreme sa doň, najdeme v ňom súbory tak, ako keby sme boli pod adresarom /iso. Parameter -r aktivuje RockRidge rozšírenia a takisto určuje všetky súbory na čítanie. Čo sa týka RockRidge rozšírení - ide o systém, ktorý zabalované súbory akoby zmapuje na formát 8.3. Ide o formát, ktorý zaručuje kompatibilitu medzi väčšinou systémov. Znamená, že pre systémy, ktoré toto rozšírenie nepodporujú budú súbory max. 8 znakov dlhé (názov súboru) a 3 znaky dlhá prípona (EXE, COM, BAT, atď...).

Z uvedeného vyplýva, že takto napálené CD bude možné načítať aj na systémoch ako je MS-DOS a takisto WINDOWS. WINDOWS ako taký tiež nepodporuje RockRidge, takže nazvy súborov, bude tiež možné vidieť len v maximálnej dĺžke 8 znakov. Čo sa ale týka Linuxu, tak tento systém tieto rozšírenia podporuje, čiže ak ste si dali nahrať súbor, ktorý ma napríklad meno "toto je moj dlhy súbor.pdf", tak pod Windowsom ho uvidíte ako "toto_je_.pdf", zatiaľ čo v Linuxe bude zobrazený v plnej kráse. Toto rozšírenie navyše ponúka možnosť používať v Linuxe aj symbolické linky a zachováva nadstavenie atribútov (práv) daného súboru.

Takto vytvorené CD používa systém ISO9660. Pokiaľ chceme, aby sa dlhé názvy súborov zobrazovali aj na Windowsoch, musíme, použiť, takzvané Joliet rozšírenia. Tie zasa aktivujeme parametrom -J. Zaroveň nie je problém tieto rozšírenia zmiešať do kopy tak, aby plnohodnotne CD fungovalo ako pod Windowsom, tak aj pod Linuxom.

mkisofs -r -J -o vystupny_subor.iso vstupny_adresar/

Nemenej známym formátom je aj tzv. HFS (Macintosh Hierarchical Filesystem), ktorý umožnuje napaliť CDčko pre Macintosh počítače (prepínač -hfs) a formát El Torito sa zasa používa v spojení s bootovateľnými CD. Okrem tohto ponúka ešte mkisofs pre tieto formáty aj rôzné iné voľby. Bližšie sa dočítate v manuál. stránkach programu.

Všetky doteraz uvedené rozšírenia využívaju systému ISO9660. Ak by ste chceli, ale vytvoriť CD napríklad s ext3 súborovým systémom, tak postup je úplne iný. Nakoľko sa mkisofssnaží využívať len formáty kompatibilné s ďalšími OS, ext3 (ani ďalšie ako ext2...) nie je týmto programom podporované. Pokiaľ by ste si ale naozaj chceli vytvoriť takéto špeciálne CD, ktoré samozrejme načítate len na Linuxe, musíte použit príkaz dd. Tento je dostupný v každej distribúcii Linuxu. Príklad vytvorenia takéhoto súborového systému môže potom vyzerať aj takto:

dd if=/dev/zero of="moj_subor.iso" bs=1024k count=650

Uvedený príkaz nám vytvorí ISO súbor o veľkosti 650 MB (count parameter). Tento súbor, je ale zatiaľ bez súborového systému, takže je na vás aký si vyberiete. Ak sa teda chceme držať pôvodného cieľa, vytvoríme v tomto súbore ext3 súborový systém.

mkfs.ext3 moj_subor.iso

Hoci vám po potvrdení tohto príkazu "vyroluje" varovanie, ignorujte ho a potvrďte svoju voľbu tlačítkom "y". Po vytvorení súborového systému doň musíme nakopírovať zvolené data.

3. Test obrazu, alebo kopírovanie súborov

Po vytvorení obrazu vášho budúceho CD sa môžme presvedčiť o jeho plnej funkčnosti. Iste si ešte spomínate na II diel, v ktorom som spomínal konfiguráciu jadra. Ľudia, ktorý s nami prechádzali všetkými bodmi (kompilovali si jadro), museli zakompilovať ako modul do jadra podporu Loopback devices. Linux má vlastnosť, ktorá mu dovoľuje pripájať niektoré súbory, tak akoby to boli diskové oddiely. Príkazom:

mount -o loop moj_subor.iso /mnt/floppy

V uvedenom príklade vidíme postup pri pripojovaní nášho ISO súboru do niektorého adresára (/mnt/floppy je len ako príklad). Prepínač -o loop nám aktivuje "loopback", ktorá nám umožnuje, takýto súbor pripájať. Takže po vykonaní príkazu môžte pristupovať k súborom (pod /mnt/floppy) tak, akoby boli na vašom CDčku. Ak ste si súbori "doprezerali", musíte opäť použiť príkaz:

umount /mnt/floopy

Pokiaľ ste si vytvárali obraz so svojím vlastným súborovým systémom, napríklad naším vyšším postupom vytvorenia ext3, tak samotné nakopírovanie súborov, uskutočníme podobne, ako pri teste CDčka. Dobré by však bolo uviesť príkazu mount aj parameter -t, teda napríklad:

mount -t ext3 -o loop moj_subor.iso /mnt/floopy

Po zadaní uvedeného príkazu sa nám náš obraz pripojí do adresára /mnt/floppy a začne sa chovať, ako pripojený disk o veľkosti 650 MB. Keď doň nakopírujeme súbory, musíme ho odpojiť a môžme pristúpiť k už samotnému procesu vypalovania.

4. Proces napalovania

Ako som už spomenul, na napalovanie sa používa program cdrecord, alebo jeho nová alternatíva dvdrecord. Syntax zmieneného programu je pomerne jednoduchá. Iste si pamätáte na ukážku výpisu, ktorá nám zobrazovala nájdené SCSI zariadenia. V tom mojom prípade to bolo číslo 0,0,0. Tieto jednotivé čísla zastupujú číslo SCSI zbernice, ID zariadenia a potom je tzv. číslo LUN (SCSIBUS,TARGET,LUN). Každe SCSI zariadenie dostáva v systéme túto trojicu identifikačných čísel. Je ich možné navoliť aj ručne, ale väčšinou sú pridelované systémom, ktorý sa stará, aby jednotlivé SCSI zariadenia neboli v kolízii. Každé zariadenie, ma na svojej SCSI zbernici svoje jedinečné ID číslo. Číslo LUN (Logical Unit Number) špecifikuje, niektoré ďalšie rozhrania daného zariadenia. Toto posledné číslo je vo väčšine prípadov "0". Takže čo musíme o svojej napalovačke vedieť je to, pod akým "trojčíslom" je detekovaná. Nám už známy príkaz cdrecord -scanbus, vypíše zoznam zariadení.

cdrecord -scanbus
Cdrecord 1.10 (i686-pc-linux-gnu) Copyright (C) 1995-2001 Jörg Schilling
Linux sg driver version: 3.1.24
Using libscg version 'schily-0.5'
scsibus0:
    0,0,0   0) 'ZIP' 'IOMEGA ZIP-100' 'R' 'Removable ZIP disk'
    0,1,0   1) 'ATAPI' 'CD-R/RW 24X10' 'P.MJ' Removable CD-ROM
    0,2,0   2) *
    0,3,0   3) *

V tomto prípade bude naše štastné trojčíslo "0,1,0" tomuto totižto systém pridelil napalovačku. Na čísle "0,0,0" máme ZIP mechaniku, ktoru, ale pre napalovanie nebudeme využívať... V praxy pri napalovaní sa poznatok tohto čísla využíva, aby sme programu cdrecord ukázali na ktoré zariadenie môže posielať SCSI príkazy (sám cdrecord to nevie rozoznať). Príklad použitia tohto programu môže potom vyzerať aj takto:

cdrecord -v speed=4 dev=0,1,0 -data moj_subor.iso

Poznámka: Program musíme spúštať ako užívateľ root. Je to kvôli nadstavením právam na /dev/sg* zariadeniach. Pokiaľ dostatočne upravite práva, tak program je možné spúšťať aj ako non-root užívateľ. Pozor však na to, aby vám užívatelia nepoškodili (nezmazali, nenaformátovali) prípadne SCSI disky.

Myslím, že rozoberať prepínače nie je nejak extra treba. Pre úplnosť, nám -v zapne tzv. ukecaný režím (ukazuje aj priebeh napalovania), speed=x nám definuje rýchlosť napalovania (pokiaľ zadáte číslo väčšie, než je ním schopná vaša napalovačka páliť, tak cdrecord použije aj tak len to maximálne, ktoré vaša napalovačka zvláda), dev=SCSIBUS,ID,LUN definuje zbernicu, na ktorej sa nachádza napalovacie zariadenie no a parameter -data našepkáva programu, že pôjde o datové CD.

Niekomu sa môže zdať, že uvedený spôsob je moc "dlhý". V taktomto prípade nám bude stačieť konfiguračný súbor /etc/cdrecord.conf, ktorý môžme upraviť, pre naše potreby.

# This file is /etc/cdrecord.conf
# It contains defaults that are used if no command line option
# or environment is present.
#
# The default device, if not specified elswhere
#
CDR_DEVICE=moj_cmeliak

#
# The default speed, if not specified elswhere
#
CDR_SPEED=4

#
# The default FIFO size if, not specified elswhere
#
CDR_FIFOSIZE=4m
#
# The following definitions allow abstract device names.
# They are used if the device name does not contain the
# the characters ',', ':', '/' and '@'
#
# drive name device speed fifosize driveropts
#
#teac=      1,3,0 -1 -1 ""
#panasonic= 1,4,0 -1 -1 ""
#plextor=   1,4,0 12 -1 ""
#sanyo=     1,4,0 12 -1 burnproof
moj_cmeliak= 0,1,0 -1 -1 burnproof

Mýslím, že obsah, nie je treba nijak extra rozoberať, snaď až na niekoľko detailov. Všimnite si, že v parametri CDR_DEVICE som uviedol svoje meno napalovacieho zariadenia, ktoré som potom konkretnejšie (aj jeho parametre) nadefinoval na konci súboru. V tejto "definícii" som určil, na akom "štastnom" trojčíselku mám svoju napalovačku, akou rýchlosťou chcem napalovať defaultne (pokiaľ nezadám nejakú inú hodnotu v príkazovom riadku), aka ma byť veľkosť FIFO (si vysvetlime za chvíľku) a niektoré ďalšie parametre CD-ROMu, ako je napríklad "burnproof".

Pred napalovaním si musíme uvedomiť, na čo náš počítač má a na čo nie. Pokiaľ sa rozhodneme využiť napalovanie bez funkcie BURNPROOF, alebo ju naša napalovačka jednoducho neposkytuje, tak musíme za každú cenu zabezpečiť plynulý tok dát (nie prerušovaný). Data na napálenie sú počas procesu pálenia posielané do buffera (FIFO), z ktorého by mali byť plynule dodávané do napalovačky. To znaméná, že data disku by mali priebežne dopĺňať data v bufferi tak, aby ich hodnota ostávala na čo najvyššej hladine. V takýchto sitáciach by sme sa mali vyvarovať rôznym vedľajším diskovým aktivitám. V opačnom prípade sa môže stať, že disk nebude stačieť dodávať data do bufferu, jeho zaplnenie začne klesať a ako nahle sa preruší plynulá dodávka toku dat do napalovačky, je CDčko poškodené a môžme si ho akurát tak zavesiť do auta na zrkadlo ;-)). Napalovačky, ktoré majú funkciu BURNPROOF, dokážu prerušiť napalovanie a v zápäti zasa nadviazať na ukončenú stopu, čiže v tomto prípade nedochádza k znehodnoteniu CD. Pokiaľ si nie istý, či vaša napalovačka podporuje BURNPROOF, môžte sa o tom presvedčit pomocou príkazu:

cdrecord -dev=0,1,0 -driveropts=help -checkdrive

Cdrecord 1.10 (i686-pc-linux-gnu) Copyright (C) 1995-2001 Jörg Schilling
scsidev: '0,1,0'
scsibus: 0 target: 0 lun: 0
Linux sg driver version: 3.1.24
Using libscg version 'schily-0.5'
Device type    : Removable CD-ROM
Version        : 0
Response Format: 1
Vendor_info    : 'ATAPI'
Identifikation : 'CD-R/RW 24X10'
Revision       : 'P.MJ'
Device seems to be: Generic mmc CD-RW.
Driver options:
burnproof Prepare writer to use Sanyo BURN-Proof technology
noburnproof Disable using Sanyo BURN-Proof technology

Ako vidíte, tak program nám dáva na výber dva možné parametre, a to "burnproof" a "noburnproof". Z uvedeného vyplývá, že naša napalovačka je schopná používať aj túto funkciu. Keď sme si nakonfigurovali aj súbor cdrecordu, tak syntax uvedeného príkazu je už "kratšia".

cdrecord -v -data moj_subor.iso

Ako som už povedal, prvú prioritu majú parametre v príkazovom riadku, takže ak dáte do vyššie uvedného príkazu napríklad parameter "speed=12", začne sa nadefinovaná rýchlosť v cdrecord.conf ignorovať a použije sa uvedená rýchlosť v príkazovom riadku.

dvdrecord je nový prírastok medzi programami v Linuxe. Autor tohto programu vychádza z programu cdrecord, takže je tu takmer 100% kompatibilita. Autor programu dvdrecord tvrdí, že tento program je výbornou náhradou cdrecordu, najmä pri napalovaní DVD CDčiek a oproti cdrecordu vraj sú už opravené niektoré chyby (osobne sa mi nepodarilo zistit ktoré). Každopádne, ak chcete využívať na napalovanie ten, nič vám nebráni. Syntax používania tohto programu je totožná so syntaxou používania cdrecord-u. Takisto aj konfiguračný súbor, ktorý je pomenovaný dvdcdrecord.conf, je totožný.

5. Praktické príklady

V linuxe, taktiež nieje problém napalovať aj z CDčka na CDčko. Pokiaľ ste na pevno rozhodnutý, že nechcete spraviť odbraz CDčka najprv na disk, tak priame pálenie je možne uskutočniť pomocou parametra -isosize.

cdrecord -v -isosize /dev/cdrom

Pokiaľ ste odhodlaný urobiť si najprv obraz CDčka na disk, môžte opäť použiť program dd.

dd if=/dev/cdrom of=/tmp/iso_cdcka.iso

Poznámka: Ak bude bootovateľné CD, správí sa aj bootovateľný ISO súbor (napálim na CD a bude to bootovať). Na tomto istom principe, môžte spraviť napríklad aj bootovanie na svojich CDčkach. Stačí aby ste si spravili obraz nejakej bootovateľnej diskety a výsledný image, použili pri tvorbe hlavného ISO-a, pomocou programu mkisofs za použitia prepínačov -b a -c.

Pokiaľ chcete vedieť, ako je to s napalovaním AUDIO cédéčka, tak si pod nejaky adresár nahrajte všetký wav, cdr, au súbory, ktoré chcete napáliť ako hudobné CD, a použijte príkaz v jednom z takýchto možných tvarov.

cdrecord -v -audio track1.wav track2.wav track4.wav ...
cdrecord -v -audio track1.wav track2.cdr track3.au ...
cdrecord -v -audio *.wav *.au *.cdr

Poznámka: Pokiaľ chcete ripovať z originálneho CDčka tieto súbory, použite napríklad program cdparanoia na wav, a potom ich je možné konvertovať do ostatných súborov, napríklad za pomoci programu sox zasa do cdr formátu.

Pokiaľ máte hudobné CD, ktoré medzi skladbami neobsahuje medzery, a chcete si také napalíť aj vy - treba použiť metódu DAO (Disk At Once). Štandardne je totižto používana funkcia TAO (Track At Once), ktorá by vám každý track "odmedzerovala". Najlepším nástrojom na napalovanie v režime DAO je program cdrdao. Plus za pomoci prepínača read-cd vytvoríte identickú kópiu hudobného cdčka.

Ak by ste mali záujem vytvoriť datové CDčko spolu zo zvukovou stopou, môžte použiť tzv. "zmiešaný mód".

cdrecord -v -data moj_subor.iso -audio track1.wav

Tak, ako ste vo Windows mali simuláciu napalovania, tak isto ju môžte použiť aj na Linuxe. Navyše si takto môžte dobre odskúšať, do akej miery až môžte pracovať s počítačom pri napalovaní.

cdrecord -v -dummy -data moj_subor.iso

6. Záver

Problematika napalovania je dosť obsiahlá téma. Na jej úplne zvládnutie treba prečítať množstvo manuálov. Ak sme tu niečo nespomenuli, čo sme spomenúť mali, dajte vedieť autorom týchto seriálov a my vám s radosťou na vaše otázky odpovieme v poslednom vydaní tohto seriálu. Takže smelo do toho. V budúcom vydaní nášho seriálu vás už Robert Krátký prevedie, vytváraním MULTISESSION a ďalšími zákutiami, ktoré ste tu dnes nenašli.

Související články

Vypalování CD -I (Úvod, teorie, hardware)
Vypalování CD - II (Nastavení SCSI emulace)
Vypalování CD - IV (Multisession a Packet Writing)
Vypalování CD - V (Grafické nástavby)
Vypalování CD - VI (FAQ)

Odkazy a zdroje

cdrtools
cdrdao
dvdrtools
sox
Filesystems-HOWTO

Seriál Vypalování CD (dílů: 6)

První díl: Vypalování CD - I, poslední díl: Vypalování CD - VI.
Předchozí díl: Vypalování CD - II
Následující díl: Vypalování CD - IV

Další články z této rubriky

VDR a DVB-T2, část 2.
VDR a DVB-T2, část 1.
Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
MapTiler – proměňte obrázek v zoomovatelnou mapu
Syncthing

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.