FreeBSD kézikönyv
Előző | Fejezet 18. Háttértárak | Következő

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

Írta: Mike Meyer.

## 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.

SCSI-meghajtók esetén

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

       % cdda2wav -v255 -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 Szakasznak megfelelően helyesen állítottuk be.

ATAPI-meghajtók esetén

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: Marc Fonvieille.

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.

Előző | Tartalom | Következő
USB tárolóeszközök | Fel | 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): <freebsd-questions@FreeBSD.org>.
Ha ezzel a dokumentummal kapcsolatban van kérdése, kérjük erre a címre írjon: <gabor@FreeBSD.org>.