Következő
Előző
Tartalom
A CD-írás két lépésből áll Linux alatt:
- a felírni kívánt adatok (fájlok, hang vagy mindkettő) becsomagolása egy speciális formába
- az adatok felírása a CD-re a
cdrecord segédprogram segítségével
Ez a fejezet részletesen tárgyalja az adat és audio CD készítésének lépéseit.
Megjegyzendő, hogy a felírandó adatok összegyűjtése általában több időt vesz igénybe,
mint az ember gondolná. Ne feledd, a hiányzó fájlokat nem lehet hozzáadni a CD-hez
az írás és a lezárás után.
Szintén tartsd észben, hogy a CD-n bizonyos terület az ISO-9660 fájlrendszer
információi számára használódik el, ez általában néhány MB. 620 MB adat mindig
elfér egy 650 MB-os CD-n.
A leendő CD-ROM image-ének elkészítése
Használat előtt bármilyen adattároló médiumot (pl. hajlékony lemez, merevlemez, CD)
fájlrendszerrel kell ellátni (DOS-osan fogalmazva: formázni). A fájlrendszer
felelős az adathordozón elhelyezett fájlok szervezéséért és tárolásáért.
A szokásos segédprogramok, amelyek merevlemezek partícióin hoznak létre fájlrendszereket,
úgy járnak el, hogy egy üres fájlrendszert hoznak létre, amelyet csatolás után a felhasználó
tölthet fel fájlokkal, szükség szerint. Az írható CD csak egyszer írható, ezért
ha egy üres fájlrendszert hoznánk létre rajta, akkor ugyan meg lenne formázva, de
egyszer és mindenkorra üres maradna. Ez az újraírható nyersanyagra is igaz,
nem törölhesz tetszőleges szektorokat, mindig az egész tartalmat le kell törölni.
Ezért szükség van egy olyan segédprogramra, amely a fájlrendszer létrehozása közben
másolja fel a fájlokat a CD-re. Ez a program az mkisofs . Egy példán bemutatva a használatát:
mkisofs -r -o cd_image magangyujtemeny/
`---------' `--------------'
| |
a kimeneti fájl ezt a könyvtárat veszi forrásnak
A `-r ' kapcsoló hatására az összes fájl mindenki számára olvashatóvá
válik a CD-n, valamint RockRidge kiterjesztéssel készül az image.
Valószínűleg mindig akarod ezt a kapcsolót, kivéve ha tényleg tudod, hogy mit csinálsz.
(Segítség: az `-r ' kapcsoló nélkül a csatolási pont a
magangyujtemeny engedélyeivel fog rendelkezni!)
Az mkisofs megpróbálja az összes fájlnevet a DOS által használt 8.3 alakra
leképezni, a lehető legnagyobb kompatibilitás érdekében. Névütközés esetén
(különböző fájloknak ugyanaz a 8.3 neve), számokat használ a fájlnevekben, és a
választott neveket kiírja a standard hibakimenetre, ami általában a képernyő.
Ne aggódj, Linux alatt sosem fogod látni ezeket a 8.3 fájlneveket, mert a Linux
használja a RockRidge kiterjesztést, amely tartalmazza az eredeti fájlinformációkat
(engedélyek, fájlnév, stb.).
Felvetődhet a kérdés, hogy miért nem küldi az mkisofs közvetlenül az
íróra a kimenetet. Három oka van:
- Az
mkisofs nem tud semmit a CD-írókról.
- Esetleg szeretnéd égetés előtt tesztelni az image-et.
- Lassú gépeken nem lenne megbízható (lásd a 4. fejezetet).
Van egy módszer, amellyel egy menetben írhatunk CD-t, ez lejjebb kerül kifejtésre.
Az ember gondolhatna arra is, hogy csinál egy extra partíciót, és oda
írja az image-et egy fájl helyett. Nem javaslom ezt a megoldást, mert
ha nem a megfelelő partícióra írsz (egy elgépelés miatt), akkor az
egész Linux rendszered megsemmisülhet (értsd: az enyém egyszer megsemmisült így...).
Ráadásul ez helypazarlás is, mert a CD image ideiglenes, le lehet törölni az égetés után.
A nyers partíció alkalmazásának egyetlen előnye, hogy megtakarítod a
650 MB-os ideiglenes fájl letörlésével járó időt.
A CD image tesztelése
A Linux képes a fájlrendszeréhez úgy csatolni fájlokat, mintha
azok partíciók lennének a lemezen. Ez a sajátosság igen hasznos,
mert ellenőrizheted, hogy a CD image-en levő fájlok könyvtárstruktúrája és
engedélyei megfelelnek-e az elképzeléseidnek. Bár a nyersanyag ma már nagyon olcsó,
az írás művelete még elég lassú. Egy gyors ellenőrzéssel időt spórolhatsz.
A cd_image fájl csatolása a /cdrom könyvtár alá a következő paranccsal történhet:
mount -t iso9660 -o ro,loop=/dev/loop0 cd_image /cdrom
Ezek után megvizsgálhatod a fájlokat a /cdrom alatt -- úgy fognak
megjelenni, ahogy az igazi CD-n. A CD image lecsatolásához add ki az
`umount /cdrom ' parancsot. (Vigyázat: a 2.0.31 előtti Linux kernelekben
van egy hiba, emiatt az utolsó fájl a /cdrom könyvtárban nem lesz teljesen
olvasható. Használj egy újabb kernelt, mondjuk a 2.0.36-ost. A cdrecord program
-pad kapcsolója csak audio CD-kre használható, és az mkisofs program
-pad kapcsolója csak egy folt alkalmazása után használható. A foltozás ugyanakkora
munka, mint a frissítés egy hibátlan kernelre.)
Megjegyzés:
A mount egyes ősi verziói nem képesek kezelni a loopback eszközt.
Ha te is ilyen régi mount -tal rendelkezel, akkor frissítsd a Linuxodat.
Sok ember javasolta már, hogy írjam bele ebbe HOGYAN-ba a legújabb
mount csomag fellelhetőségét. Ezt mindig visszautasítom. Ha a Linux
disztribúciód az ősi mount programot használja, jelentsd hibaként.
Ha a Linux disztribúciódat nehéz frissíteni, jelentsd hibaként.
Ha minden olyan információt felsorolnék, ami ahhoz kell,
hogy a rosszul tervezett Linux disztribúciók hibáit ki lehessen javítani, akkor
ez HOGYAN sokkal nagyobb és nehezebben olvasható lenne.
A CD image CD-re írása
Már nics hátra sok tennivaló. Ha még nem próbáltad, itt a remek alkalom a
cdrecord -scanbus
parancs kiadására. Ebből megtudhatod, hogy melyik SCSI eszközre csatlakozik a
CD-író. Vannak más módszerek is, hogy megszerezd azt az információt, amelyet
a cdrecord ilyen szépen kiír, de ezeket kivettem a HOGYAN-ból (különösen
az általános SCSI eszközök veszélyes elnevezési sémáját).
Mielőtt megmutatnám az utolsó parancsot, hadd figyelmeztesselek, hogy a CD-írókat
állandó adatfolyammal kell táplálni, mert kicsi az adatbufferük. Tehát a CD image CD-re írását
nem szabad megszakítani, különben rossz lesz a CD. Nagyon könnyű megszakítani az
adatfolyamot egy nagy fájl letörlésével. Például, ha törölsz egy régi 650 MB-os
image fájlt, akkor a kernelnek 650.000 blokk információit kell frissítenie (feltéve, hogy 1
kilobájtot foglal el egy blokk a fájlrendszeren).
Ez némi időt vesz igénybe, nagyon valószínű, hogy annyira lelassítja a lemezműveleteket, hogy
az adatfolyam megszakad egy pár másodpercre. Ellenben a levelek olvasása, a web
böngészése, sőt még a kernelfordítás sem befolyásolja az írási folyamatot (a modern gépeken).
Jegyezd meg, hogy egyetlen író sem képes a lézert arra a helyre pozícionálni, ahol
megszakadt az írás egy zavar miatt. Ezért bármilyen erős rázkódás vagy más mechanikai hatás
nagy valószínűséggel tönkreteszi a CD-t, amit éppen írsz.
Ha lélekben elkészültél, ölts fel egy fekete köntöst, szorozd meg a CD-író
SCSI-id-ját a SCSI-revision értékével, és gyújts annyi gyertyát, mondj el fennhangon
két versszakot az ASR-FAQ-ból (alt.sysadmin.recovery hírcsoport), és végül írd be:
shell> SCSI_BUS=0 # a 2.1. listáról véve: "scsibus0:"
shell> SCSI_ID=6 # a 2.1. listáról véve: "TOSHIBA XM-3401"
shell> SCSI_LUN=0
shell> cdrecord -v speed=2 dev=$SCSI_BUS,$SCSI_ID,$SCSI_LUN \
-data cd_image
# ugyanaz, mint fenn, csak rövidebben:
shell> cdrecord -v speed=2 dev=0,6,0 -data cd_image
A jobb olvashatóság kedvéért az író koordinátái három környezeti változóban
tárolódnak, amelyek a következők: SCSI_BUS, SCSI_ID, SCSI_LUN.
A -data kapcsolót nem kötelező megadni, csak azért írtam ki mégis, hogy
a parancssor jól összevethető legyen az audio CD-hez használatos parancssorral.
Ha a cdrecord -ot egy CD-RW lemez újraírásához használod, hozzá kell tenned
a blank=... opciót, hogy a régi tartalom letörlődjön. Olvasd el a kézikönyvoldalt,
ott több módját is tárgyalják a CD-RW letörlésének.
Mostanában, amikor rajtam kívül mindenkinek 400 MHz-es gépe van, az emberek
az mkisofs kimenetét közvetlenül a cdrecord -ra irányítják:
shell> IMG_SIZE=`mkisofs -R -q -print-size magangyujtemeny/ 2>&1 \
| sed -e "s/.* = //"`
shell> echo $IMG_SIZE
shell> [ "0$IMG_SIZE" -ne 0 ] && mkisofs -r magangyujtemeny/ \
|cdrecord speed=2 dev=0,6,0
tsize=${IMG_SIZE}s -data -
# ne feledd az s-t --^ ^-- az STDIN-ről olvas
Az első parancs egy üres menet, amely meghatározza az image méretét (a cdrecord
disztribúcióhoz adott mkisofs kell ehhez a feladathoz). Elképzelhető,
hogy a te íródnak nem kell tudni a felírandó image méretét, úgyhogy ezt a sort akár el is
hagyhatod. Az image méretét a tsize paraméterben kell megadni a cdrecord -nak,
ez az IMG_SIZE környezeti változóban tárolódik. A második parancs az mkisofs és a
cdrecord egymásutánja egy csővezetékkel összekötve.
Az audio CD írása hasonlít az adat CD-nél megismert folyamathoz.
Két jelentős különbség van. Az egyik, hogy az audio CD hangsávokból áll,
amelyek külön-külön image-ekben vannak. Tehát ha tíz számot szeretnél
felvenni a CD-re, akkor tíz image-et kell készítened. A másik különbség, hogy
az image-ek formátuma nem ISO-9660 (vagy amelyik fájlrendszert szereted), hanem
``16 bites sztereó hangminta PCM kódolással 44100 minta/másodperc mintavételezéssel
(44,1 kHz)''.
Az egyik segédprogram, amely hangfájljaidat a kívánt formátumra alakítja,
a sox . Használata egyszerű:
shell> sox killing-my-software.wav killing-my-software.cdr
Ez a parancs a killing-my-software című dalt WAV formátumról CDR audio formátumra
konvertálja. További részletek a sox által ismert formátumokról és
fájlnév-kiterjesztésekről a sox kézikönyvoldalán olvashatóak.
Mivel a konverzió eredménye túl sok lemezhelyet foglal, beépítették azt a
sajátosságot a cdrecord -ba, hogy közvetlenül kezelje a WAV és AU
formátumokat. Így aztán ha a hangfájljaidnak .wav vagy .au kiterjesztése van
(és a mintavétel ``sztereó, 16 bit, 44,1 kHz''), akkor használhatod image-ként
őket manuális konverzió nélkül.
A cdrecord akkor írja fel az image-eket hangsávként, ha a -audio
kapcsolót adod meg. A többi paraméter megegyezik az adat CD írásánál
használtakkal (hacsak nincsenek különös igényeid). A következő három példa
ugyanazt csinálja, de különféle formátumokból olvassák a hangsáv adatait:
shell> cdrecord -v speed=2 dev=0,6,0 -audio track1.cdr track2.cdr...
shell> cdrecord -v speed=2 dev=0,6,0 -audio track1.wav track2.wav...
shell> cdrecord -v speed=2 dev=0,6,0 -audio track1.au track2.au...
Van egy érdekes eset, az MPEG Layer 3 fájlok, amelyeket az `mpg123 -s track1.mp3 > track1.cdr '
paranccsal lehet CD formátumúra hozni. (Vigyázat: ez olyan fájlt hoz létre, amelynek a bájtsorrendjét
meg kell fordítani a -swab kapcsolóval a cdrecord parancssorában.)
A másik irányú konverzió a 8hz-mp3 programmal valósítható meg. Szedd le a
WAV fájlt a CD-ről a cdda2wav programmal, és utána alakítsd MP3 formátumra a
8hz-wav programmal. (A témáról bővebben lásd: MP3 HOGYAN -- a ford.)
Egy halom MP3 fájlból így kell audio CD-t csinálni:
for I in *.mp3
do
mpg123 -s $I | cdrecord -audio -pad -swab -nofix -
done
cdrecord -fix
A géped sebességétől függően esetleg le kell csökkentened az írási
sebességet a speed=1 paraméterrel a cdrecord parancssorában.
Ha a speed=4 paramétert használod, akkor a gépednek le kell tudni játszani az
MP3 fájlokat négyszeres sebességgel. Az mpg123 rengeteg CPU időt fogyaszt!
Ha nem vagy benne biztos, futtass egy üres menetet a -dummy kapcsolóval (nem
kapcsolja be a lézert). Ha így teszel, egy olyan audio CD-t kapsz, amelyen minden
szám között két másodperc szünet van.
DAO
Ha szeretnél megszabadulni a zeneszámok közötti szünetektől, akkor DAO
(disk-at-once) módban kell írni a CD-t a fent ismertetett TAO (track-at-once) mód
helyett. Jelenleg a cdrdao program támogatja a legjobban a DAO
módot. Nézd meg a honlapját a részletekért.
A read-cd paraméter használatával akár még egy az egyben is másolhatsz
audio CD-ket.
Nem érdemes túl sok szót vesztegetni erre a témára. Add meg az egymás után következő
image-ek típusát a -data és a -audio kapcsolókkal. Példa:
cdrecord -v dev=0,6,0 -data cd_image -audio track*.cdr
Következő
Előző
Tartalom
|