18.6. Lézeres tárolóeszközök (CD-k) létrehozása és használata
Vissza | 18. fejezet - Háttértárak | Előre

## 18.6. Lézeres tárolóeszközök (CD-k) létrehozása és használata

Írta: Meyer, Mike.

### 18.6.1. Bevezetés

A CD-k számos lehetőségünkben eltérnek a hagyományos lemezektől. Kezdetben a felhasználók nem is voltak képesek írni ezeket. Olyannak tervezték, hogy a fejek sávok közti mozgásából fakadó késleltetés nélkül lehessen folyamatosan olvasni. A szállítása a maga idejében sokkal könnyebb volt minden vele egyforma méretű eszköznél.

A CD-ken is találhatunk sávokat, azonban ez csak a folyamatosan olvasható adat egy szakaszát jelenti, nem pedig a lemez fizikai tulajdonságát. Ha FreeBSD-n akarunk CD-t készíteni, akkor ehhez először össze kell állítanunk a CD egyes sávjaira kerülő adatokat és ezután rögzíteni ezeket a sávokat a CD-n.

Az ISO 9660 állományrendszert úgy tervezték, hogy megbirkózzon ezekkel az eltérésekkel. Sajnos ezzel együtt kőbe vésték az állományrendszerek akkoriban érvényes korlátozásait is. Szerencsére lehetőséget ad bővítésre, ezáltal a helyesen megírt CD-k képesek úgy átlépni ezeket a határokat, hogy közben az általuk alkalmazott kiterjesztéseket nem ismerő rendszerekkel is együtt tudnak működni.

A `sysutils/cdrtools` port tartalmaz egy mkisofs(8) nevű programot, amellyel létre tudunk hozni ISO 9660 típusú állományrendszert tartalmazó adatállományt. Többféle kiterjesztést is ismer, amit majd a lentebb ismertett opciókkal érhetünk el.

A CD írásához használt konkrét segédeszköz attól függ, hogy ATAPI vagy esetleg másmilyen írónk van. Az ATAPI CD-írók az alaprendszer részeként elérhető `burncd` programon keresztül használhatóak. A SCSI és USB CD-írók esetén pedig a `sysutils/cdrtools` portban megtalálható `cdrecord` programot használhatjuk. Az ATAPI/CAM modul segítségével a `cdrecord` és más SCSI-írókra készült programokat is tudunk használni ATAPI hardvereken.

Ha a CD-író szoftverünket grafikus felhasználói felületen keresztül szeretnénk használni, akkor az X-CD-Roast vagy a K3b alkalmazásokat érdemes szemügyre vennünk. Ezek az eszközök elérhetőek csomagként vagy a `sysutils/xcdroast` és `sysutils/k3b` portokból. ATAPI hardver esetén az X-CD-Roast és a K3b alkalmazások használatához szükségünk lesz az ATAPI/CAM modulra.

### 18.6.2. mkisofs

A `sysutils/cdrtools` port részeként elérhető mkisofs(8) program képes a UNIX® típusú állományrendszer könyvtárszerkezete alapján egy ISO 9660 típusú állományrendszert tartalmazó image-et készíteni. Legegyszerűbb módon így használhatjuk:

`#` `mkisofs -o `image.iso` `/az/elérési/út``

Ezzel a paranccsal egy olyan `image.iso` nevű állományt hozunk létre, amely `/az/elérési/út` által megadott helyen található könyvtárszerkezetet mintázza ISO 9660 állományrendszer formájában. A folyamat során minden olyan állományt leképez szabványos ISO 9660 állományrendszerbeli névre, amely megfelel a szabvány elvárásainak, és kihagy minden olyan állományt, amely nem jellemző az ISO állományrendszerekre.

Számos opció lehet segítségünkre az ilyenkor felbukkanó akadályok leküzdésében. Ezek közül különösen fontos az `-R`, amely a UNIX® rendszerek számára megszokott Rock Ridge kiterjesztéseket, valamint a `-J`, amely a Microsoft rendszerekben használt Joliet kiterjesztéseit, és végül a `-hfs`, amely a Mac OS® alatt létrehozott HFS állományrendszerek kiterjesztéseit engedélyezi.

A kizárólag csak FreeBSD rendszereken használt CD-k esetében a `-U` megadásával kapcsolhatjuk ki az állománynevek mindenféle korlátozását. Az `-R` beállítás használatával olyan állományrendszer képét hozzuk létre, amely teljesen megegyezik a parancsban megadott könyvtárból induló fa tartalmával, habár több módon is sérti az ISO 9660 szabvány előírásait.

Az utolsó általános jelleggel használható beállítás a `-b`. Ezzel lehet megadni az „El Torito” szabványnak megfelelő rendszerindító CD készítéséhez szükséges rendszerindító image elérését. Ennél a beállításnál tehát meg kell adni a rendszerindításhoz használt lemez image-ét, amely a CD tartalmát magában foglaló könyvtárszerkezetben található valahol. A mkisofs(8) alapértelmezés szerint egy ún. „floppy emulációs” módban hozza létre az ISO image-et, ezért a rendszerindításhoz használatos lemez image-ének pontosan 1200, 1440 vagy 2880 KB méretűnek kell lennie. Egyes rendszerbetöltők, mint amilyen például a FreeBSD terjesztéséhez használt lemezeken található, nem használják ezt az emulációt. Ilyen helyzetekben a `-no-emul-boot` kapcsolót kell megadni. Tehát ha a ``/tmp/sajátboot`` könyvtárban van egy indítható FreeBSD rendszerünk, amelyben a ``/tmp/sajátboot/boot/cdboot`` a rendszerindító lemez image-e, akkor egy ``/tmp/indítható.iso`` nevű ISO 9660 formátumú állományrendszert tartalmazó image-et például így tudunk elkészíteni:

`#` `mkisofs -R -no-emul-boot -b boot/cdboot -o `/tmp/indítható.iso` `/tmp/sajátboot``

Miután ezt megtettük, és a rendszermagunkban benne van az `md` eszköz támogatása, csatlakoztathatjuk is az állományrendszert:

`#` `mdconfig -a -t vnode -f `/tmp/indítható.iso` -u 0` `#` `mount -t cd9660 /dev/md0 /mnt`

Ezután már össze tudjuk vetni az `/mnt` és ``/tmp/sajátboot`` könyvtárak egyezőségét.

A mkisofs(8) viselkedését több más opcióval tudjuk finomhangolni, mint például az ISO 9660 kiosztás módosítása vagy a Joliet és HFS lemezek készítése. A mkisofs(8) man oldalon mindezekről bővebben olvashatunk.

### 18.6.3. burncd

Ha ATAPI CD-írónk van, akkor a `burncd` paranccsal írhatjuk az ISO image-et a lemezre. A `burncd` az alaprendszer része, és `/usr/sbin/burncd` néven érhető el. A használata igen egyszerű, csupán pár paramétere van:

`#` `burncd -f `eszköz` data `image.iso` fixate`

Ezzel a paranccsal rámásoljuk az `image.iso` állományt az `eszköz` eszközre. Az alapértelmezett eszköz a `/dev/acd0`. A burncd(8) man oldalán találjuk meg az írási sebességgel, a CD írás utáni kiadásával és az audio lemezek írásával kapcsolatos beállításokat.

### 18.6.4. cdrecord

Ha nincs ATAPI CD-írónk, akkor az íráshoz a `cdrecord` parancsot kell használnunk. A `cdrecord` nem az alaprendszer része: vagy a `sysutils/cdrtools` portból vagy a neki megfelelő csomagból kell telepítenünk. Az alaprendszerben végbemenő változások miatt a program bináris változatai hibázhatnak, aminek következtében csak „poháralátéteket” fogunk tudni gyártani. Ezért a rendszerrel együtt érdemes frissíteni ezt a portot is. Vagy ha a -STABLE verziót használjuk, akkor mindig érdemes a port elérhető legújabb verziójára frissíteni.

Miközben a `cdrecord` számos paraméterrel rendelkezik, az alapvető használata mégis egyszerűbb a `burncd` parancsénál. Egy ISO 9660 formátumú image-et ugyanis a következő módon tudunk felírni lemezre:

`#` `cdrecord dev=`eszköz` `image.iso``

A `cdrecord` használatának trükkös része a megfelelő eszköz megtalálása, tehát a `dev` beállítás helyes megadása. Ehhez használjuk a `cdrecord` `-scanbus` paraméterét, amely az alábbihoz hasonló eredményt fog produkálni:

`#` `cdrecord -scanbus` Cdrecord-Clone 2.01 (i386-unknown-freebsd7.0) Copyright (C) 1995-2004 Jörg Schilling Using libscg version 'schily-0.1' scsibus0: 0,0,0 0) 'SEAGATE ' 'ST39236LW ' '0004' Disk 0,1,0 1) 'SEAGATE ' 'ST39173W ' '5958' Disk 0,2,0 2) * 0,3,0 3) 'iomega ' 'jaz 1GB ' 'J.86' Removable Disk 0,4,0 4) 'NEC ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM 0,5,0 5) * 0,6,0 6) * 0,7,0 7) * scsibus1: 1,0,0 100) * 1,1,0 101) * 1,2,0 102) * 1,3,0 103) * 1,4,0 104) * 1,5,0 105) 'YAMAHA ' 'CRW4260 ' '1.0q' Removable CD-ROM 1,6,0 106) 'ARTEC ' 'AM12S ' '1.06' Scanner 1,7,0 107) *

Itt felsorolásra kerülnek a `dev` beállítás értékeként felhasználható eszközök. Keressük meg köztük a CD írónkat és a `dev` értékének a három vesszővel elválasztott számot adjuk meg. Ebben az esetben a CD-író eszköz most az 1,5,0 lesz, tehát itt a helyes paraméterezés `dev=1,5,0`. Ezt az értékét könnyebben is meg lehet adni. Ennek részleteiről a cdrecord(1) man oldalán olvashatunk. Abban az esetben is érdemes fellapoznunk, ha az audio sávok írásáról, az írási sebesség korlátozásáról vagy más hasonló dolgokról akarunk olvasni.

### 18.6.5. Audio CD-k másolása

Audio CD-t úgy tudunk másolni, ha először állományok sorozatába mentjük a lemez tartalmát, majd ezeket az állományokat egy üres CD-re írjuk. Ennek konkrét folyamata azonban némileg eltér az ATAPI- és SCSI-meghajtók használata során.

Eljárás 18.1. SCSI-meghajtók esetén

1. A `cdda2wav` programmal mentsük le a lemez tartalmát.

   `%` `cdda2wav -vall -D2,0 -B -Owav`

2. A `cdrecord` paranccsal írjuk fel a `.wav` kiterjesztésű állományokat.

   `%` `cdrecord -v dev=`2,0` -dao -useinfo *.wav`

   Gondoskodjunk róla, hogy a `2,0` értéket a 18.6.4. szakasz - cdrecordnak megfelelően helyesen állítottuk be.

Eljárás 18.2. ATAPI-meghajtók esetén

### Megjegyzés:

Az ATAPI/CAM modul segítségével a `cdda2wav` parancs ATAPI meghajtókkal is használható. Ez a megoldás általában kedvezőbb (a hibák és bytesorrend ügyesebb kezelése, stb.) a legtöbb felhasználó számára, mint az itt ismertetett.

1. Az ATAPI CD meghajtója az egyes sávokat `/dev/acd`d`t`nn`` néven teszi elérhetővé, ahol a `d` a meghajtó sorszáma, a `nn` a sáv két számjeggyel kiírt sorszáma, amelyet szükség szerint balról nullával egészítenek ki. Így tehát az első meghajtó első sávja a `/dev/acd0t01`, a második a `/dev/acd0t02`, a harmadik a `/dev/acd0t03` és így tovább.

   Ellenőrizzük, hogy ezek az eszközök jelen vannak a `/dev` könyvtárban. Amennyiben hiányoznának, kényszerítsük ki a lemez újbóli beolvasását:

   `#` `dd if=/dev/acd0 of=/dev/null count=1`

2. Szedjük le az egyes sávokat a dd(1) használatával. A parancs kiadásakor meg kell adnunk egy blokkméretet is:

   `#` `dd if=/dev/acd0t01 of=track1.cdr bs=2352` `#` `dd if=/dev/acd0t02 of=track2.cdr bs=2352` ...

3. A `burncd` használatával írjuk fel a lemezre az imént lementett állományokat. Meg kell adnunk, hogy ezek audio állományok, és hogy a `burncd` a munka befejeztével zárja le (fixate) a lemezt.

   `#` `burncd -f `/dev/acd0` audio `track1.cdr track2.cdr ...` fixate`

### 18.6.6. Adat CD-k másolása

Az adatot tartalmazó CD-ket le tudjuk másolni egy olyan image-be, amely funkcionálisan megegyezik egy mkisofs(8) által létrehozott image-dzsel és amivel le tudunk másolni bármilyen adat CD-t. Az itt megadott példa azt feltételezi, hogy a CD-meghajtónk neve `acd0`. Helyére a saját CD-meghajtónk nevét kell behelyettesíteni.

`#` `dd if=/dev/acd0 of=`állomány.iso` bs=2048`

Most miután lementettük az image-et, írjuk fel CD-re a fentiek szerint.

### 18.6.7. Adat CD-k használata

Most, hogy már készítettünk egy szabványos adat CD-t, valószínűleg szeretnénk is valamilyen csatlakoztatni és elérni a rajta levő adatokat. Alapértelmezés szerint a mount(8) mindig azt feltételezi, hogy az állományrendszerek `ufs` típusúak. Ezért ha valami ilyesmivel próbálkozunk:

`#` `mount /dev/cd0 /mnt`

akkor egy Incorrect super block szövegű hibaüzenetet lesz a jutalmunk, és természetesen nem tudjuk csatlakoztatni a CD-t. Mivel a CD nem `UFS` állományrendszert tartalmaz, ezért az ilyen jellegű kísérleteink mind kudarcba fognak fulladni. Valahogy fel kell világosítanunk a mount(8) parancsot arról, hogy itt most egy `ISO9660` típusú állományrendszert akarunk csatlakoztatni, és akkor minden a helyére kerül. Ezt úgy tudjuk megtenni, ha a mount(8) parancsnak megadjuk a `-t cd9660` paramétert. Például, ha a `/dev/acd0` néven elérhető CD-meghajtóban levő lemezt akarjuk a `/mnt` könyvtárba csatlakoztatni, akkor ezt kell begépelnünk:

`#` `mount -t cd9660 /dev/cd0 /mnt`

Vegyük észre, hogy az eszköz neve (ez ebben a példában most `/dev/cd0`) lehet más is attól függően, hogy milyen csatolófelületet használ a CD-meghajtónk. Sőt, a `-t cd9660` valójában csak a mount_cd9660(8) parancsot indítja el. Ennek tükrében tehát az előbbi példát így rövidíthetjük le:

`#` `mount_cd9660 /dev/cd0 /mnt`

Ezen a módon bármilyen gyártmányú adat CD-t képesek vagyunk csatlakoztatni. Egyes ISO 9660 kiterjesztéseket használó lemezek azonban esetleg furcsán működhetnek. Például Joliet lemezek az összes állomány nevét kétbyte-os Unicode karakterben tárolják. A FreeBSD rendszermagja ugyan nem beszéli a Unicode-ot, de a FreeBSD CD9660 meghajtója képes menetközben átkonvertálni a Unicode karaktereket. Ha bizonyos nem angol karakterek kérdőjelekként jelennének meg, akkor a `-C` beállítás használatával még egy helyi kódlapot is meg kell adnunk. Ezzel kapcsolatban bővebb tájékoztatásért forduljunk a mount_cd9660(8) man oldalhoz.

### Megjegyzés:

A `-C` beállítás segítségével csak akkor lesz képes a rendszermag elvégezni ezt az átalakítást, ha előtte betöltjük a `cd9660_iconv.ko` modult. Ezt megtehetjük úgy, hogy ha felvesszük a következő sort a `loader.conf` állományba:

cd9660_iconv_load="YES"

Indítsuk újra a számítógépünket, vagy közvetlenül töltsük be a modult a kldload(8) használatával.

Estenként előfordulhat, hogy kapunk egy Device not configured hibaüzenetet a CD-k csatlakoztatásakor. Ez általában arra utal, hogy a CD-meghajtó nem érzékeli a berakott lemezt, vagy éppen a meghajtó nem látható a buszon. A CD-meghajtók esetében pár másodpercig eltarthat, amíg felismeri a berakott lemezt, ilyenkor mindig legyünk türelemmel.

Néha a SCSI CD-meghajtó nem látható, mert nem volt elég ideje válaszolni busz újraindítása előtt. Ha SCSI CD-meghajtónk van, akkor a következő beállítást tegyük hozzá a rendszermagunk konfigurációjához és fordítsuk újra a rendszermagukat.

options SCSI_DELAY=15000

Ezzel utasítjuk a SCSI buszunkat egy 15 másodperces várakozásra a rendszer indítása során, és így ezzel elég esélyt adunk arra, hogy a CD-meghajtó válaszolni tudjon a busz újraindítása előtt.

### 18.6.8. Nyers adat CD-k írása

Írhatunk közvetlenül is állományokat a CD-re, ISO 9660 formátumú állományrendszer használata nélkül. Sokan így oldják meg a mentést. Ezt sokkal gyorsabban lebonyolítható egy szabványos CD esetében:

`#` `burncd -f /dev/acd1 -s 12 data archive.tar.gz fixate`

Az ezen a módon megírt CD-ket szintén nyers módon kell olvasnunk:

`#` `tar xzvf /dev/acd1`

Az ilyen lemezeket nem tudjuk a normális CD-khez hasonlóan csatlakoztatni. Sőt, az ilyen CD-ket csak FreeBSD alatt tudjuk olvasni. Ha csatlakoztathatóvá akarjuk tenni a lemezt, vagy más operációs rendszerek alól is szeretnénk olvasni, akkor erre a célra a fentebb bemutatott mkisofs(8) parancsot kell használnunk.

### 18.6.9. Az ATAPI/CAM meghajtó használata

Írta: Fonvieille, Marc.

Ez a meghajtó lehetővé teszi az ATAPI eszközök (CD-ROM, CD-RW, DVD meghajtók stb...) számára, hogy a SCSI alrendszeren keresztül legyenek elérhetőek, így esetünkben is használhatóvá válnak olyan alkalmazások, mint például `sysutils/cdrdao` vagy a cdrecord(1).

A meghajtó használatához a következő sort kell a `/boot/loader.conf` állományba illeszteni:

atapicam_load="YES"

Indítsuk újra a számítógépet.

### Megjegyzés:

Amennyiben a rendszermagban az atapicam(4) statikus támogatását szeretnénk használni, úgy a következő sort kell a rendszermag konfigurációs állományába felvenni:

device atapicam

Továbbá a következő sorokra lesz még szükségünk:

device ata device scbus device cd device pass

Ezeknek már eleve ott kell szerepelnie. Ezután fordítsuk újra és telepítsük a rendszermagot, majd indítsuk újra a számítógépet.

A rendszer indulásakor az írónak ehhez hasonló módon kell megjelennie:

acd0: CD-RW <MATSHITA CD-RW/DVD-ROM UJDA740> at ata1-master PIO4 cd0 at ata1 bus 0 target 0 lun 0 cd0: <MATSHITA CDRW/DVD UJDA740 1.00> Removable CD-ROM SCSI-0 device cd0: 16.000MB/s transfers cd0: Attempt to query device size failed: NOT READY, Medium not present - tray closed

A meghajtó most már elérhető a `/dev/cd0` eszközön keresztül, és például ennyi begépelésével csatlakoztatni tudunk róla egy CD-t a `/mnt` könyvtárba:

`#` `mount -t cd9660 `/dev/cd0` /mnt`

`root` felhasználóként a következő paranccsal tudjuk lekérdezi az író SCSI címét:

`#` `camcontrol devlist` <MATSHITA CDRW/DVD UJDA740 1.00> at scbus1 target 0 lun 0 (pass0,cd0)

Eszerint a `1,0,0` lesz az eszköz SCSI címe, amelyet a cdrecord(1) és más SCSI alkalmazások esetén adunk meg.

Az ATAPI/CAM és SCSI rendszerek tekintetében olvassuk el az atapicam(4) és cam(4) man oldalakat.

Vissza | Fel | Előre
18.5. USB tárolóeszközök | Főoldal | 18.7. Lézeres tárolóeszközök (DVD-k) létrehozása és használata

Ha kérdése van a FreeBSD-vel kapcsolatban, a következő címre írhat (angolul): <questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.