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.
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.
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.
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.
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
A cdda2wav programmal mentsük le a lemez tartalmát.
% cdda2wav -vall -D2,0 -B -Owav
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
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.
Az ATAPI CD meghajtója az egyes sávokat /dev/acddtnn 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
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 ...
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
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.
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
-Cbeá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.
Í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.
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 atapicamTovábbá a következő sorokra lesz még szükségünk:
device ata device scbus device cd device passEzeknek 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.
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>.