»Š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:
cdrecord
V tem poglavju nekoliko podrobneje opisujemo ta dva koraka za pripravo podatkovnih in glasbenih cedejev.
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.
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:
mkisofs
ne zna upravljati zapisovalnikov CD.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.
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 programamount
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 programmount
, 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.
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.
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.
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
).
Č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
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