Ez a fejezet a CD-írók minden fajtájára vonatkozik, tehát
SCSI-ra, IDE/ATAPI-ra és párhuzamos portra köthetőre egyaránt.
Az utóbbi két típus egy olyan speciális meghajtóprogramot
(compatibility driver) igényel, amely segítségével igazi SCSI
eszköznek látszik. Egyfelől hasznos ez az egységesítési stratégia
(``minden SCSI''), mert az alkalmazások szintjén megoszthatod
a tudásod a többi felhasználóval, függetlenül attól, hogy
nekik milyen CD-írójuk van. Másfelől viszont újra kell
konfigurálnod például az audio CD-lejátszót vagy a mount
segédprogramot, hiszen a meghajtók neve megváltozik.
Például ha eddig /dev/hdc
néven érted el az ATAPI
CD-íródat, akkor a SCSI compatibility driver telepítése után
/dev/scd0
néven kell rá hivatkoznod.
Miután sikeresen telepítetted a hardvert és a Linux rendszer többi
részét, a `cdrecord -scanbus
' parancs megmutatja a SCSI
buszra csatlakozó eszközöket.
A fejezet célja, hogy segítsen úgy beállítani a Linuxot, hogy
a végén valami ilyesmit kapj:
shell> cdrecord -scanbus
Cdrecord release 1.7a1 Copyright (C) 1995-1998 Jörg Schilling
scsibus0:
0) 'Quantum ' 'XP34300 ' 'F76D' Disk
1) 'SEAGATE ' 'ST11200N ' '8334' Disk
2) *
3) 'TOSHIBA ' 'MK537FB/ ' '6258' Disk
4) 'WANGTEK ' '5150ES SCSI 36 ' 'ESB6' Removable Tape
5) 'EXABYTE ' 'EXB-8500-85QUE ' '0428' Removable Tape
6) 'TOSHIBA ' 'XM-3401TASUNSLCD' '3593' Removable CD-ROM
7) *
scsibus1:
100) 'Quantum ' 'XP31070W ' 'L912' Disk
101) *
102) *
103) 'TEAC ' 'CD-R55S ' '1.0H' Removable CD-ROM
104) 'MATSHITA' 'CD-R CW-7502 ' '4.02' Removable CD-ROM
105) *
106) 'YAMAHA ' 'CDR400t ' '1.0d' Removable CD-ROM
107) *
2.1. lista: a SCSI buszra csatlakozó eszközök vizsgálata
A példa Jörg Schillingtől származik, és összesen négy CD-írót
mutat. Megjegyzendő, hogy a -scanbus
a többi eszközt is megjeleníti,
pl. közönséges CD-ROM-okat vagy merevlemezeket. Az utolsó oszlop megadja
az eszköz SCSI leírását, amiből nem lehet egyértelműen eldönteni, hogy
CD-íróról, vagy közönséges CD-ROM-ról van-e szó. Szerencsére a középső
oszlopbeli termékazonosító sokszor segít; CD-íróra utal az `R', a `-R' és
a `-RW'.
A Linux kernel sokféle meghajtóprogrammal felszerelhető. A meghajtóprogramokat belefordíthatjuk a kernelbe statikusan, vagy lefordíthatjuk őket modulként is. A modulokat csak akkor kell betölteni, ha szükség van rájuk. Ez az utóbbi módszer ajánlható akkor, ha olyan meghajtóprogramokról van szó, amelyek nem létfontosságúak a rendszer talpraállásához, ugyanis így kisebb és gyorsabb kernelt kapunk. Vigyázat, néhány meghajtóprogram létfontosságú a rendszer számára az induláskor, ezeket nem szabad modulba fordítani. Például tegyük fel, hogy a rendszer egy IDE merevlemezen foglal helyet. Ekkor az IDE meghajtóprogramnak a kernelben kell lenni, nem modulban.
Három fajtája van a CD-íróknak: SCSI, IDE/ATAPI és külső egységek, amelyek a párhuzamos porton keresztül működnek. Az alábbi táblázat bemutatja, hogy kell konfigurálni a Linux kernelt ezekhez a hardverekhez. A táblázat első oszlopa a kernel konfigurációs menüjének azt pontját jelöli, ahol a beállítás elvégezhető. A második oszlop a kernel konfigurációs menüjéből vett leírása az adott beállításnak. A harmadik oszlopban szerepel a kapott modul neve. A SCSI, IDE és PP oszlopok tartalmazzák a szükséges beállításokat az adott hardverhez (PP = párhuzamos port).
Menü Leírás Modul SCSI IDE PP
------------------------------------------------------------
BLOCK Enhanced IDE/MFM/RLL... Y
BLOCK IDE/ATAPI CDROM ide-cd M
BLOCK SCSI hostadaptor emulation ide-scsi M
BLOCK Loopback device loop M M M
PARIDE Parallel port IDE device paride Y/M
PARIDE Parallel port ATAPI CD-ROMs M
PARIDE Parallel port generic ATAPI M
PARIDE (select a low-level driver) Y
SCSI SCSI support scsi_mod Y/M Y/M
SCSI SCSI CD-ROM support sr_mod Y/M Y/M
SCSI Enable vendor-specific Y Y
SCSI SCSI generic support sg Y/M Y/M
SCSI (select a low-level driver) Y
FS ISO-9660 CDROM filesystem iso9660 Y Y Y
FS Microsoft Joliet cdrom... joliet M/Y M/Y M/Y
2.1. táblázat: meghajtók kiválasztása a különböző írótípusokhoz
Az Y azt jelenti, hogy igen, és hogy ezt be kell rakni a kernelbe. Az M jelentése modul, azaz ezt modulba kell fordítani. Az Y/M esetén lehet választani a kettő közül. (A sorrend jelzi, hogy melyikkel lehet kevesebb probléma.) Ha valahova nincs semmi odaírva, akkor az azt jelenti, hogy ott nem kell megváltoztatni a kernel beállítását. Ha nem piszkálod ezeket az üresen hagyott a beállításokat, akkor jó esélyed van arra, hogy a kernel továbbra is működni fog (amennyiben eddig működött). Különösen olyan környezetben van értelme minél több dolgot modulba fordítani, ahol IDE és SCSI eszközök vegyesen vannak.
A loopback eszköz lefordítása nem kötelező. Ennek segítségével tesztelheted az image fájlt felírás előtt. Ha szeretnéd a CD-ROM-okat elolvasni, akkor szükség van az ISO-9660 fájlrendszer támogatására. Ez a meghajtóprogram magában foglalja a RockRidge kiterjesztés támogatását is. A Microsoft Joliet kiterjesztést explicite hozzá kell adni az ISO-9660 fájlrendszerhez. Minden esetben szükség lesz alacsonyszintű hardvermeghajtókra. Az alacsonyszintű azt jelenti, hogy ezek a meghajtóprogramok közvetlenül a hardverrel lépnek kapcsolatba. Rengeteg alacsonyszintű meghajtóprogram van a SCSI-hoz és a párhuzamos porthoz.
Ha szeretnéd a modulokat betölteni, akkor sorold fel őket
az /etc/modules
konfigurációs fájlban, vagy futtasd a
kerneld
vagy a kmod
démonokat, amelyek automatikusan
betöltik a modulokat, ha a kernelnek szüksége van rájuk. A modulokkal
kapcsolatos dolgok megkönnyítésére hozzáadhatod a következő sorokat az
/etc/conf.modules
fájlhoz:
alias scd0 sr_mod # betölti az sr_mod modult ha az scd0 eszközhöz kell fordulni
alias scsi_hostadaptor ide-scsi # SCSI kártya emuláció
options ide-cd ignore=hdb # ha a /dev/hdb a CD-író
2.2. lista: néhány beállítás IDE/ATAPI írókhoz
Az alias
-ok ugyanarra a modulra más nevet vezetnek be, nem létszükséglet
használni őket. Az options
segítségével állíthatod be, hogy a modul betöltése
mindig ugyanúgy történjen, például miután sikeresen használtad az modprobe/insmod
programokkal. Ha többet szeretnél megtudni a különböző modulok különböző beállításairól, akkor olvass tovább!
Leírás parancs
-------------------------------------------------------------
Megmutatja az aktív meghajtókat cat /proc/devices
Kilistázza az aktív modulokat cat /proc/modules
Kilistázza az elérhető modulokat modprobe -l
Eltávolít egy modult modprobe -r
Betölt egy modult manuálisan modprobe
Betölt egy modult rendszerindításkor echo "nézd meg az /etc/modules fájlt"
(olvasd el a disztribúciód dokumentációját)
Betölt egy modult, amikor szükséges echo "futtasd a kmod vagy a kerneld démont"
2.2. táblázat: kernelmodulokkal és meghajtóprogramokkal foglalkozó parancsok
Ha egy olyan modulra van szükséged, amely nem található meg a rendszeredben,
akkor újra kell fordítanod, és újra kell telepítened a kernelt. További információkért
olvasd el a Kernel HOGYAN-t. A kernelmodulokról szóló legfrissebb információk a
Modules HOWTO-ban olvashatóak. Ha sikeresen megtaláltad vagy lefordítottad a
szükséges modulokat, akkor vagy írd be a nevüket az /etc/modules
fájlba, vagy hagyd, hogy automatikusan betöltse őket egy megfelelő program
(kmod, kerneld). Ha nem vagy biztos a dologban, olvasd el a disztribúciódhoz adott
dokumentációt.
Ha a magad ura vagy, akkor telepítsd a ``Linux Kernel source'' csomagot, amelyet a disztribúciódhoz adtak, és add ki a következő parancsokat:
cd /usr/src/linux
make menuconfig # kövesd a menüket és az utasításokat
make dep
make zImage # vagy "make bzImage"
# helyezz be egy lemezt a meghajtóba
dd if=arch/i386/boot/zImage of=/dev/fd0
make modules
make modules_install
2.3. lista: rendszerindító hajlékony lemez készítése
A fenti parancsokkal egy rendszerindító hajlékony lemez készíthető. Ha tényleg fogalmad sincs, hogy ez az egész miről szól, akkor jobban teszed, ha előbb elolvasod a Kernel HOGYAN-t vagy valami hasonló írást, vagy segítséget kérsz egy barátodtól, mielőtt teljesen tönkreteszed a rendszered. Ne feledd, a kernel a rendszer szíve.
ATAPI CD-író tulajdonosok figyelem: ha a kernel ATAPI eszközként ismeri fel az írót a rendszerinduláskor, akkor nem lehet Linux alatt CD-íróként használni. Ha egyszer az IDE/ATAPI meghajtóprogram elkapta az eszközt, a SCSI meghajtóprogram (a SCSI-kártya emulációra ültetve) már nem tudja ezt megtenni. Fordítsd újra a kernelt úgy, hogy a CD-ROM-mal kapcsolatos dolgokat modulba rakod (lásd a fenti táblázat).
A 2.2 és e feletti kernelverzióknál beállíthatod az ide-cd meghajtóprogram
mohóságát az ``ignore='' paraméterrel. Ha ezt beállítod, akkor a meghajtóprogram
nem fogja megragadni a megadott eszközt, úgyhogy az rendelkezésre fog állni, amikor
a SCSI-kártya emuláció elindul. Például használd a `modprobe ide-cd ignore=hdb
'
parancsot, ha az ATAPI író a hdb, és azt szeretnéd, hogy az ide-scsi meghajtóprogram
SCSI eszközként kezelje a hdb-t (általában sr0 lesz). Ezt nem lehet sehogy megadni
a kernel parancssorában (mint a 2.0 sorozatnál).
A kernel 2.2.9-es verziójáig ne engedélyezd a CONFIG_SCSI_MULTI_LUN (``probe for multiple luns'') opciót és az ide-scsi támogatást egyszerre, mert egy hiba az ide-scsi meghajtóprogramban ezt nem teszi lehetővé.
Néhány felhasználó ütközéseket tapasztalt egyes előre lefordított binárisok és a 2.2 sorozat között. A problémát a Linux kernel okozza. A lehetséges megoldások:
cdrecord
-ot, így az alkalmazkodik
a linux/include/scsi/sg.h
-ban levő értékekhez. Ezek az értékek meg kell hogy egyezzenek
az aktuálisan futó kernel értékeivel, mivel az sg felhasználói felülete egyszerű.
Úgy hallottam, hogy a 2.2.10 és e feletti kernelekben használhatjuk a 2.0.x sorozatban megismert lehetőséget éppúgy, mint a korábbi 2.2.x verziókban meglevő lehetőséget. Én azt a stratégiát javaslom, hogy mondd meg egyértelműen a kernelnek, hogy melyik eszközhöz melyik meghajtóprogram való, úgy ahogy a 2.0.37-es verziónál tehetnéd. A következő fejezet megvilágítja ezt a módszert.
A 2.0.31 előtti kernelekben számos hiba van, és nem tudják elolvasni a CD-ROM-ról az utolsó fájlt. Frissíts 2.0.37-re vagy újabbra. Ebben a verzióban az eddig ``SCSI emulation''-nak nevezett sajátosságot átnevezték a precízebben megfogalmazott ``SCSI host adaptor emulation''-ra.
A 2.0.37 és e feletti kernelverziókban kiválaszthatod, hogy melyik meghajtóprogramot
(IDE vagy SCSI) szeretnéd használni az adott ATAPI eszközhöz. Pontosabban hozzáadhatod
a ``SCSI host adaptor emulation'' sajátosságot a kernelhez, és az adott eszközhöz a
kernel parancssorában aktivizálhatod az emulációt rendszerindításkor. Például
ha a CD-író a /dev/hdb
, akkor add hozzá hdb=ide-scsi
kifejezést a
parancssorhoz. A következő listákban olvasható, hogy hogyan kell módosítani a
LILO
és a chos
bootmanagerek konfigurációs fájljait, hogy állandóvá tegyük ezeket a beállításokat.
image=/boot/zImage-2.0.37
label=Linux
read-only
append="hdb=ide-scsi"
2.4. lista: a lilo egy lehetséges beállítása (/etc/lilo.conf)
linux "Linux 2.0.37" {
image=/boot/zImage-2.0.37
cmdline= root=/dev/hda5 readonly hdb=ide-scsi
}
2.5. lista: a chos egy lehetséges beállítása (/etc/chos.conf)
Miután telepítetted az összes szükséges meghajtóprogramot, indítsd újra a gépet az új kernellel. Ez minden olyan tulajdonsággal rendelkezni fog, amire a következő fejezetekben szükség lesz.
A devfs felhasználóinak nem kell törődniük az eszközfájlok manuális beállításával. Ha devfs-t használsz, minden meg fog jelenni automatikusan a megfelelő helyen.
Lépj be a /dev
könyvtárba, és nézd meg, hogy megvannak-e a
loopback eszközök. Nem súlyos hiba, ha nincsenek ott, de hasznos lehet,
ha ott vannak (lásd 3.5. fejezet). Ha már ott vannak, akkor az ls
parancs
megmutatja őket:
shell> cd /dev
shell> ls loop*
loop0 loop1 loop2 loop3 loop4 loop5 loop6 loop7
2.6. lista: a loopback eszközök
Ha nincsenek meg ezek az eszközfájlok, akkor hozd létre őket a
/dev/MAKEDEV
script segítségével:
shell> cd /dev/
shell> modprobe loop # a "loop" nevű modul betöltése
shell> ./MAKEDEV loop
2.7. lista: a loopback eszközöket létrehozó parancsok
Az utolsó parancs csak akkor fog sikerülni, ha a loop
modul
a kernelben van. Amit eddig a loop eszközök kezeléséről olvastál, az a többi
eszközre is érvényes (sg*, pg*, hd*, ...), ezért ezeket nem tárgyalom
külön ebben a dokumentumban.
Ha a Linux diszribúciód nem tartalmazza a /dev/MAKEDEV scriptet, akkor kézzel kell létrehozni az eszközfájlokat egy ilyen ciklussal:
for i in 0 1 2 3 4 5 6 7
do
mknod /dev/loop$i c 7 $i
done
Az ATAPI az IDE eszközök számára készített kiterjesztés, amely minden újabb IDE eszközben megvan. Ez a kiterjesztés lehetővé teszi a SCSI protokoll használatát az IDE buszon. Az ide-scsi modullal együtt, amely az IDE-vezérlőt részben SCSI-vezérlővé alakítja, úgy használhatjuk az IDE/ATAPI eszközöket, mintha SCSI eszközök lennének. Töltsd be ezt a modult és folytasd a munkát, mintha SCSI CD-íród lenne.
Győződj meg róla, hogy az írót felismeri a számítógéped BIOS-a. Semmi értelme továbblépni, ha a számítógép nem fogadja el a hardvert. (Az a tény, hogy nem köpi ki, nem vehető elfogadásnak, a képernyőn egy üzenetnek kell megjelennie.)
Ha a SCSI eszközt a párhuzamos porton keresztül szeretnéd a gépedhez kötni (ne keverd össze a párhuzamos porton keresztül csatlakozó IDE eszközökkel), akkor egy különleges kábelre és egy különleges kernel-meghajtóprogramra van szükséged. Olvasd el a http://www.torque.net/parport/parscsi.html weblapot, ha többet szeretnél tudni erről.
A /dev/sd* és a /dev/sr* eszközfájlok, amelyek a SCSI merevlemezeknek és a SCSI CD-ROM meghajtóknak felelnek meg, csak blokkokban tudnak adatokat küldeni és fogadni. Emiatt nagyon gyorsak, és nagyon alkalmasak adattárolásra. A CD-író lézerének vezérlése bonyolultabb, és nem elégséges a blokkos író/olvasó megközelítés. Mivel az sd* és sr* eszközöket célszerű a tiszta és gyors állapotukban meghagyni, egy új típusú SCSI eszköz került bevezetésre, az úgynevezett általános SCSI eszköz. Bármit meg lehet csinálni a SCSI hardverrel az általános eszközökön keresztül, nincsenek rögzítve egy bizonyos célra, ezért hívják általánosnak őket.
Akárcsak a többi eszközt, ezt is a /dev könyvtárban kell keresni (konvenció szerint):
shell> cd /dev
shell> ls sg*
sg0 sg1 sg2 sg3 sg4 sg5 sg6 sg7
Ha nincsenek meg ezek az eszközfájlok, akkor hozd létre őket a
/dev/MAKEDEV
script segítségével:
shell> cd /dev/
shell> ./MAKEDEV sg
Ha a Linux diszribúciód nem tartalmazza a /dev/MAKEDEV scriptet, akkor kézzel kell létrehozni az eszközfájlokat egy ilyen ciklussal:
for i in 0 1 2 3 4 5 6 7
do
mknod /dev/sg$i c 21 $i
done
Fogalmam sincs, sajnálom. Olvasd el a http://www.torque.net/parport/paride.html weblapot, vagy a /usr/src/linux/Documentation/paride.txt fájlt.
Egy részletesebb lista a CD-ROM készítéséhez használatos segédprogramokról megtekinthető a http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdb.html weblapon.
A következő csomagok egyike szükséges a CD-R lemezre felírandó image fájl készítéséhez (csak adatokat tartalmazó CD-ROM-okhoz kell):
ftp://tsx-11.mit.edu/pub/linux/packages/mkisofs/ (mkisofs)
ftp://ftp.ge.ucl.ac.uk/pub/mkhfs (mkhybrid)
Az image fájl CD-re írásához a következő csomagok egyike kell:
ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/ (cdrecord)
http://www.ping.de/sites/daneb/cdrdao.html (cdrdao)
Ne higgy a (régi) mkisofs
kézikönyvoldalának, amely azt állítja, hogy
az 1.5-ös verziójú cdwrite
programra van szükséged. Nyugodtan használd
a cdrecord
-ot. Jegyezd meg, hogy az újabb cdrecord
verziók csomagjában
egy továbbfejlesztett mkisofs
van, és még sok más eszköz a misc/
alkönyvtárban
(readcd
, isosize
), amelyek másutt nem találhatóak meg.
A keretprogram tényleg csak egy keret a Linux alatt. Ez azt jelenti, hogy külön kell telepíteni a parancssoros verziót is, de egy szebben kinéző módon férhetsz hozzá.
Az X-CD-Roast egy olyan programcsomag, amely céljául tűzte ki az egyszerű
CD-írást Linux alatt. Parancssoros programokat, mint a cdrecord
és az
mkisofs
, egyesít egy szép grafikus felhasználói felület alatt.
http://www.fh-muenchen.de/home/ze/rz/services/projects/xcdroast/e_overview.html
A BurnIT egy JAVA keretprogram a cdrecord
, az mkisofs
és a
cdda2wav-0.95
programokhoz, így egy teljes CD-író csomagot képez
a Unix platformon. Letölthető a
http://sunsite.auc.dk/BurnIT/
webhelyről.
Az XDaodio egy grafikus keretprogram a cdrdao
-hoz. Fő célja az audio CD-k
egy az egyben történő lemásolása.
http://www.lrz-muenchen.de/~MarkusTschan/