Naprej Nazaj Kazalo

3. Pisanje CD

»Še ko goriš, izginjaš v dim, piščalke te ne odložim.« (rimski cesar Neron, 64 n. št., o zažiganju svojih klasičnih cedejev. Popolnoma napak je razumel in požgal Rim do tal.)

Zapisovanje na diske CD se v Linuxu ponavadi izvaja v dveh korakih:

V tem poglavju nekoliko podrobneje opisujemo ta dva koraka za pripravo podatkovnih in glasbenih cedejev.

3.1 Zapisovanje diskov CD-ROM s podatki

Priprava podatkov za zapis na CD navadno traja dlje, kot si predstavljamo. Vedeti moramo, da datotek ne moremo dodajati na CD-ROM, ko je ta enkrat zapisan in zaprt. Enako velja za diske CD-RW, ki jih za zdaj lahko samo v celoti prepišemo. Uporaba večkratnega zapisa je za posamične datoteke preveč potratna, ker moramo vsakič na novo zapisati še celoten imenik datotek na disku (TOC). Datotečni zapis UDF za Linux pa je za zdaj še v preizkusni fazi.

Pomnite tudi, da je določeni del diska (navadno nekaj MB) uporabljen za shranjevanje informacij datotečnega sistema ISO 9660. Gotovi pa smo lahko, da na disk CD-R velikosti 650 MB shranimo 620 MB svojih podatkov.

Priprava slike diska CD-ROM

Preden lahko na kakršenkoli pomnilniški nosilec (disketa, disk ali CD) zapišemo svoje podatke, moramo na njem ustvariti datotečni sistem. V terminologiji MS-DOS se je temu postopku reklo tudi formatiranje diska. Datotečni sistem je način organizacije podatkov na nosilcu, ki ga uporablja operacijski sistem za zapis in branje podatkov.

Navadno programi za ustvarjanje datotečnega sistema ustvarijo prazen datotečni sistem na prostem razdelku na disku, tega z ukazom mount priklopimo v korenski datotečni sistem, potem pa uporabniki po potrebi na njem ustvarjajo svoje datoteke. Z diski CD-R ne gre tako. Na tak disk lahko podatke zapišemo samo enkrat. Če bi takrat zapisali prazen datotečni sistem, bi disk ostal prazen za vedno. Podobno velja tudi za diske CD-RW -- na disku ne moremo spremeniti vsebine poljubnega sektorja, temveč lahko le ves disk zbrišemo in spet zapišemo.

Kar potrebujemo, je orodje, ki hkrati ob prepisu datotek na CD ustvari še datotečni sistem. Orodju se pravi mkisofs. Uporabljamo ga, kakor kaže zgled:

mkisofs -r   -o slika_cd         osebna_zbirka/
             \----------/       \--------------/
                  |                    |
             kam gre izhod     odkod beremo vhod

Stikalo -r nastavi dovoljenja vseh datotek tako, da so dostopne vsem, in vklopi razširitev Rock Ridge. Za veliko večino uporabnikov je to natančno tisto, kar želijo; izpustite jo le, če res dobro veste, zakaj tako ravnate (namig: brez izbire -r obdrži priklopna točna lastnika in zaščito imenika osebna_zbirka).

Program mkisofs bo poskušal vsa imena datotek prevesti v zapis 8.3 (osem znakov imena in trije znaki pripone), ki ga uporablja DOS, in s tem zagotoviti kar največjo mogočo združljivost. V primeru sporov glede imen (različne datoteke z enakimi imeni 8.3), se v imenih datotek uporabijo številke, informacije o sporni datoteki pa se izpišejo na standardni izhod za napake (navadno na zaslon). Samo brez panike! V Linuxu s čudnimi imeni 8.3 tako ali tako nikoli ne boste imeli opravka, ker Linux uporablja razširitve Rock Ridge, s katerimi povrne izvirne podatke o datoteki (dovoljenja, ime datoteke itd.).

Če želite ustvariti disk z dolgimi imeni datotek, berljiv v okolju MS Windows, uporabite izbiro -J (razširitve MS Joliet) ali pa ukaz mkhybrid. Za pripravo diskov v Macintoshevem zapisu HFS pa raje podrobneje preučite navodila za večjega brata programa mkisofs, program mkhybrid.

Verjetno ste se vprašali, zakaj se izhod programa mkisofs ne pošlje neposredno zapisovalni napravi. Za to so vsaj trije razlogi:

Na voljo je tudi način, da disk CD-R zapišemo v eni potezi. Predstavili ga bomo pozneje.

Za zapis diskov CD bi lahko tudi ustvarili dodaten razdelek na disku in sliko zapisovali nanj. Tako strategijo močno odsvetujemo, saj lahko drobna tipkarska napaka pri tipkanju imena razdelka pomeni, da izgubite vse podatke na disku (primer ni izmišljen, avtor govori iz lastnih izkušenj). Poleg tega je to tudi zapravljanje prostora na disku, saj slika diska CD predstavlja zgolj začasne podatke in jo lahko zbrišemo, brž ko smo zapisali (in preizkusili) disk CD. Edina prednost uporabe ločenega razdelka je majhen prihranek časa, ki ga potrebujemo za brisanje 650 MB dolge datoteke.

3.2 Preizkušanje slike plošč CD

V Linuxu lahko tudi posamezne datoteke “priklopimo” tako, kakor da bi bile razdelki na disku. To lastnost lahko s pridom uporabimo pri preverjanju slike CD. Čeprav so zapisljivi diski CD dandanes nemarno poceni, pa zapis diska vseeno vzame nekaj časa. Ta čas si s kratkim preizkusom lahko prihranimo.

Prej ustvarjeno datoteko slika_cd priklopimo v imenik /mnt/cdrom z ukazom

mount -t iso9660 -o ro,loop=/dev/loop0 slika_cd /mnt/cdrom

Zdaj lahko preverite datoteke v imeniku /mnt/cdrom -- videti so natanko tako, kakor da bi bile na disku CD. Sliko diska odklopimo z ukazom umount /mnt/cdrom. (Opozorilo: v starih izdajah jedra Linuxa -- 2.0.31 ali starejše -- morda ne boste mogli do zadnje datoteke v imeniku /mnt/cdrom. V tem primeru nadgradite jedro - v izdajah od 2.0.36 naprej ni opisa težav. Izbira -pad programa cdrecord se nanaša samo na glasbene CD, izbrani -pad v programu mkisofs pa zahteva krpanje le-tega, s tem pa je prav toliko dela kakor z zamenjavo jedra z novejšo izdajo.)

Opomba:

Nekatere res stare izdaje programa mount ne znajo delati s povratnozančnimi napravami. Če imate take težave, vam svetujem, da nadgradite sistem Linux.

Dobil sem že veliko predlogov, naj v ta spis vnesem tudi informacije, kje dobiti najnovejšo različico programa mount. To vedno odločno zavrnem. Če je v vaši distribuciji Linuxa star program mount, spročite to kot napako. Če vaše distribucije Linuxa ni mogoče enostavno nadgraditi, sporočite to kot napako.

Če bi vključil vse informacije, ki so potrebne za odpravo napak slabo zgrajenih distribucij Linuxa, bi bil ta spis dosti obsežnejši in teže razumljiv.

3.3 Zapisovanje slike plošče CD na CD

Ta razdelek pokriva le zapis podatkov na disk CD v načinu TAO (track at once, ena steza naenkrat), kar je najpogostejši način zapisa podatkov. Za podrobnejši opis razlike med zapisoma TAO in DAO (disk at once, ves disk naenkrat) si oglejte poglavje o zapisu glasbenih CD. Če uporabljate način DAO z orodjem, kot je cdrdao, dodajte prazno glasbeno “stezo” na konec imenika TOC (podrobnosti so v datoteki README).

Skoraj smo že gotovi. Če ukaza niste poskusili že prej, je zdaj pravšnji trenutek za ukaz

cdrecord -scanbus

Izpis programa vam bo povedal številko enote SCSI, ki ustreza vašemu zapisovalniku. Program cdrecord opravi to dovolj dobro, da ni vredno navajati drugih načinov, kako bi še lahko uganili ta podatek.

Preden vam povem še zadnji ukaz, naj vas opozorim, da želijo biti zapisovalniki CD krmljeni z nepretrganim tokom podatkov. Postopka zapisovanja zatorej ne smemo prekinjati, drugače bo končni izdelek neberljiv disk. Brisanje zelo velike datoteke, denimo stare slike diska CD, zlahka pomeni usodno prekinitev pisanja, saj mora jedro Linuxa obnoviti podatke za 650.000 blokov na disku (ob predpostavki, da je bila datoteka dolga 650 MB in je velikost bloka 1 KB). Običajne dejavnosti, denimo branje pošte, brskanje po spletu ali celo prevajanje jedra, pa na sodobnih računalnikih ne bi smele biti usodne.

Vedite tudi, da noben zapisovalnik ne zmore znova nastaviti laserja na isto mesto, kjer je bil prekinjen. Tudi močni tresljaji ali drugi mehanski vplivi bodo zato verjetno zmotili zapis CD.

Ko boste psihično pripravljeni, si oblecite črno čarovniško haljo, pomnožite identifikacijsko številko SCSI-ID zapisovalnika CD z izdajo standarda SCSI, ki ga podpira, ter prižgite čim več sveč. Izgovorite dva verza ASR-FAQ (novičarska skupina alt.sysadmin.recovery) in končno vnesite:

shell> SCSI_BUS=0   # vzeto s programskega izpisa 1 "scsibus0:"
shell> SCSI_ID=6    # vzeto s programskega izpisa 1 "TOSHIBA XM-3401"
shell> SCSI_LUN=0
shell> cdrecord -v speed=2 dev=$SCSI_BUS,$SCSI_ID,$SCSI_LUN \
                   -data slika_cd

# isto kot zgoraj, a krajše
shell> cdrecord -v speed=2 dev=0,6,0  -data  slika_cd

Zaradi preglednosti smo naslov zapisovalnika v prvem zgledu shranili v tri spremenljivke okolja: SCSI_BUS, SCSI_ID in SCSI_LUN.

Da bi prepisali disk CD-RW, dodajte še stikalo “blank=...”, s čimer zbrišete staro vsebino. Več o različnih načinih brisanja diskov CD-RW najdete v priročniku cdrecord(1).

Dandanes, ko ima že bolj ali manj vsakdo stroj s procesorjem vsaj 400 MHz, nekateri izhod iz mkisofs napeljejo neposredno na vhod cdrecord:

shell> IMG_SIZE=`mkisofs -R -q -print-size osebna_zbirka/  2>&1 \
| sed -e "s/.* = //"`
shell> echo $IMG_SIZE
shell> [ "0$IMG_SIZE" -ne 0 ] && mkisofs -r  osebna_zbirka/  \
|cdrecord  speed=2  dev=0,6,0
            tsize=${IMG_SIZE}s  -data  -
#         ne pozabite na s --^         ^-- beremo s standardnega vhoda

S prvim ukazom mkisofs pripravimo do tega, da izračuna, kako velika bo izhodna datoteka, ki pa je ne naredi (potrebujemo izdajo mkisofs, ki je priložena cdrecord). Pri tem ukazu moramo določiti vse izbire, ki jih bomo uporabili pri dejanskem zapisu na disk, npr. -J, -hfs ipd. Nekateri zapisovalniki ne potrebujejo podatka o tem, kako velika je slika diska; pri teh lahko ta, prvi korak v celoti izpustimo. Izpisano velikost podamo kot parameter tsize programu cdrecord (shranjena je v spremenljivki IMG_SIZE). Pri drugem ukazu sta mkisofs in cdrecord sklopljena s cevovodom.

3.4 Zapis glasbenih CD

Zapisovanje glasbenih plošč je zelo podobno pravkar opisanemu zapisovanju podatkov. Izbirate lahko med dvema načinoma zapisa: DAO ali TAO. Način TAO (track at once, ena steza naenkrat) je za glasbo manj primeren, ker med posameznimi stezami (skladbami) slišimo klikanje. Vseeno ga bomo prvega opisali, ker je nekoliko enostavnejši in ker način DAO še ni na voljo za vse zapisovalnike.

Poglavitna razlika med zapisovanjem glasbenih in podatkovnih CD-R je v zapisu slike diska. Pri slednjih je v zapisu ISO 9660 (in izbranimi razširitvami), ki pa za glasbo ni primeren, ker ga noben laserski gramofon ne zna brati. Namesto tega mora biti glasba zapisana kot 16-bitni stereo zapis, vzorčen s frekvenco 44.100 Hz in PCM-kodiran.

Eden od pripomočkov, s katerim lahko pretvorimo zvočne zapise v zapis, primeren za zapis na CD, je sox. Uporaba je enostavna:

shell> sox  killing-my-software.wav  killing-my-software.cdr

Ukaz pretvori skladbo “killing-my-software” iz zapisa WAV v glasbeni zapis CDR. Priročnik sox(1) vsebuje podrobnosti o zapisih in priponah datotek, ki jih program prepozna. Ker ročno pretvorjene datoteke zasedajo tako veliko prostora, je v cdrecord vgrajena tudi možnost branja zapisov WAV in AU s primerno hitrostjo vzorčenja (16 bitov, stereo, 44.100 Hz). Če so vaše skladbe v katerem od teh dveh zapisov, jih ni treba pretvarjati v zapis CDR s programom sox, ker jih zna cdrecord uporabiti v njihovem izvirnem zapisu. Vendar pa ima cdrecord določene omejitve: velikost zvočnih podatkov mora biti večkratnik 2352, obenem pa mora biti daljša od 705.600 bajtov. Vse datoteke WAV tem pogojem ne ustrezajo, in te morate s programom sox dopolniti do zahtevane dolžine.

Zapis glasbenih CD v načinu TAO

Glasbeni CD ima več stez (skladb) in vsaka od njih je v načinu TAO zapisana kot ločena slika diska. Če želite imeti na disku deset skladb, morate pripraviti deset slik.

Cdrecord zapiše slike na disk kot skladbe, če je podana izbira -audio. Druge izbire so enake tistim pri zapisu podatkovnih CD, razen če nimate kakšnih zelo posebnih zahtev. Naslednji trije zgledi izvedejo isto, le da vsak bere skladbe iz različnih zapisov:

shell> cdrecord -v speed=2 dev=0,6,0  -audio  skladba1.cdr skladba2.cdr ...
shell> cdrecord -v speed=2 dev=0,6,0  -audio  skladba1.wav skladba2.wav ...
shell> cdrecord -v speed=2 dev=0,6,0  -audio  skladba1.au  skladba2.au  ...

Na tako izdelanem glasbenem CD so dvesekundni presledki med skladbami.

Omembe vreden zapis, ki ga Cdrecord ne bere neposredno, je MPEG Layer 3. Datoteke v tem zapisu moramo najprej pretvoriti v zapis CDR, denimo z ukazom “mpg123 --cdr - skladba1.mp3 > skladba1.cdr”. Z izborom ---cdr smo izbrali način izhodnega zapisa (CDR). Izbor - pomeni izpis na standardni izhod; v starejših izdajah Mpg123 dosežemo isto z izborom -s. Pretvorbo v nasprotno smer (iz WAV v MP3) lahko opravimo s programom LAME, skladbe s plošče pa lahko shranimo v zapisu WAV s programom cdda2wav.

Če bi radi pripravili disk CD-R s kopico skladb v zapisu MP3, si lahko pomagamo s skriptom:

for I in *.mp3
do
    mpg123 --cdr - "$I" | cdrecord -audio -pad -nofix -
done
cdrecord -fix

Odvisno od hitrosti vašega računalnika lahko izberete zapisovanje pri nižji hitrosti, npr. speed=1. Če uporabite speed=4, mora biti vaš računalnik sposoben predvajati datoteke MP3 pri štirikratni hitrosti! Predvajanje datotek MP3 je računsko precej intenzivno. Če ste v dvomih, poskusite najprej $ldquo;zapisati” z ugasnjenim laserjem (izbira -dummy).

Zapis glasbenih CD v načinu DAO

Če se želite znebiti nadležnih presledkov med skladbami, morate zapisati ves disk naenkrat v načinu DAO (disk at once). Spomnimo se, v načinu TAO (track at once) ustreza posamezni skladbi svoja slika na disku. Podpora za način DAO je trenutno najboljša v programu cdrdao. Za podrobnosti si oglejte njegovo domačo stran.

Če pripravljate CD v načinu DAO, uporabljate monolitno sliko (datoteka z zapisom glasbe) in nadzirate podatke o posameznih skladbah z nastavitveno datoteko.

CD_DA
TRACK AUDIO
FILE "live.wav" 0 5:0:0
INDEX 3:0:0
TRACK AUDIO
FILE "live.wav" 5:0:0 5:0:0
TRACK AUDIO
FILE "live.wav" 10:0:0 5:0:0
INDEX 2:0:0

3.5 Mešani glasbeno-podatkovni CD

O tem niti nimamo kaj dosti povedati. Pri posamezni stezi z izbirama -data ali -audio označimo, ali gre za podatkovno ali glasbeno stezo. Zgled:

cdrecord  -v dev=0,6,0  -data  slika_cd  -audio  skladba*.cdr


Naprej Nazaj Kazalo