Naprej Nazaj Kazalo

2. Priprava Linuxa na zapisovanje plošč CD-ROM

Ta razdelek se nanaša na naslednje vrste zapisovalnikov CD: SCSI, IDE/ATAPI ter enote, ki se priključijo na tiskalniška vrata. Med pisanjem tega spisa (maj 2000) zapisovalniki na vodilu USB niso bili podprti. Zapisovalniki, ki ne uporabljajo vodila SCSI, potrebujejo posebne gonilnike, s katerimi se predstavljajo kot zapisovalniki SCSI. Po eni strani je taka strategija poenotenja ("vse je SCSI") koristna, ker se na ravni namenskih programov z vsemi zapisovalniki dela enako. Po drugi strani pa zahteva, da znova nastavite nekatere namenske programe kot predvajalnike plošč ali ukaz mount -- če ste bili navajeni svoj zapisovalnik ATAPI uporabljati prek datoteke /dev/hdc, bo to treba z aktivacijo združljivosti spremeniti, denimo na /dev/scd0.

Ko ste uspešno nastavili svoje železje in preostanek sistema Linux, ukaz cdrecord -scanbus prikaže seznam vseh enot na vodilih SCSI. Namen tega razdelka je, da bi vam pomagal pri nastavljanju sistema Linux, tako da boste čim prej zagledali nekaj takega kot:

shell> cdrecord -scanbus
Cdrecord release 1.7a1 Copyright (C) 1995-1998 Jörg Schilling
scsibus0:
      0,0,0) 'Quantum ' 'XP34300         ' 'F76D' Disk
      0,1,0) 'SEAGATE ' 'ST11200N        ' '8334' Disk
      0,2,0) *
      0,3,0) 'TOSHIBA ' 'MK537FB/        ' '6258' Disk
      0,4,0) 'WANGTEK ' '5150ES SCSI 36  ' 'ESB6' Removable Tape
      0,5,0) 'EXABYTE ' 'EXB-8500-85QUE  ' '0428' Removable Tape
      0,6,0) 'TOSHIBA ' 'XM-3401TASUNSLCD' '3593' Removable CD-ROM
      0,7,0) *
scsibus1:
      1,0,0) 'Quantum ' 'XP31070W        ' 'L912' Disk
      1,1,0) *
      1,2,0) *
      1,3,0) 'TEAC    ' 'CD-R55S         ' '1.0H' Removable CD-ROM
      1,4,0) 'MATSHITA' 'CD-R   CW-7502  ' '4.02' Removable CD-ROM
      1,5,0) *
      1,6,0) 'YAMAHA  ' 'CDR400t         ' '1.0d' Removable CD-ROM
      1,7,0) *
Programski izpis: Zaznavanje naprav na vodilu SCSI.

Zgled, ki ga je prispeval Jörg Schilling, kaže skupaj štiri zapisovalnike SCSI na dveh vodilih. Izbira -scanbus prikaže tudi druge naprave SCSI, kot so enote CD-ROM, diski in tračne enote. Zadnji stolpec prikazuje opis enote SCSI, iz katerega pa ni mogoče zlahka ločiti zapisovalnikov CD od enot CD-ROM, s katerimi lahko le beremo. V oznaki izdelka (srednji stolpec) pa je pogosto kakšen namig (pripone R, -R ali -RW), ki nam pomaga pri prepoznavanju, katera enota je zapisovalnik.

2.1 Za nestrpne

Ta razdelek skuša ponuditi hiter in enostaven opis nastavitve. Res ne pokriva vseh mogočih situacij, kljub temu pa ste vabljeni, da nadaljujete in poskusite. Najprej z ukazom uname -r preverite, katero različico jedra Linuxa poganjate. Rezultat bo verjetno 2.4.nekaj ali 2.2.nekaj (pri čemer je ta drugi nekaj večji od 11). Če uporabljate jedro, starejše od različice 2.0.36, si morate pomagati, kakor veste in znate. Enako velja tudi, če uporabljate katero od razvojnih različic jedra (2.5.nekaj ipd.). Z namestitvijo novega jedra ni nič več dela kot s popravljanjem starega, zato tu ne navajamo nobenih receptov za krpanje napak v jedru.

Spodnji izpis prikazuje nabor ukazov, ki jih potrebujete za začetek. Z ukazi ustvarimo datoteke naprav v imeniku /dev, razen če ti že obstajajo.

test `whoami` = 'root' || echo "You must be root to execute the commands."
cd /dev/
umask -S u=rwx,g=rwx,o-rwx
[ -f loop0 ] \
    || ./MAKEDEV loop \
    || for i in 0 1 2 3 4 5 6 7; do mknod loop$i b 7 $i; done
[ -f sg0 -o -f sga ] \
    || ./MAKEDEV sg \
    || for i in 0 1 2 3 4 5 6 7; do mknod sg$i  c 21 $i; done
Programski izpis: ustvarjanje datotek naprav

Dostop do strojne opreme se v Linuxu izvaja prek datotek naprav. Preden se torej lotimo česarkoli, moramo preveriti, ali te datoteke obstajajo v imeniku /dev. Resda mi še nihče ni prepričljivo razložil, zakaj to ne gre samodejno, denimo z datotečnim sistemom naprav (devfs). Ta je na voljo že nekaj let in je standardna oprema jeder 2.4. Ponuja varnejši in veliko jasnejši način poimenovanja naprav, tako da se te samodejno pojavijo v imeniku /dev. Nekaj pomembnih ljudi resda trdi, da devfs ni idealna rešitev, vendar ne le, da niso ponudili ničesar boljšega -- ponudili niso niti ničesar primerljivega ali vsaj česa, kar bi bilo dostopno in preizkušeno. Začnimo že enkrat uporabljati devfs, da bom lahko zgornji programski izpis izpustil iz tega spisa.

Naslednja pomembna stvar, ki jo moramo preveriti, je, ali je jedro Linuxa opremljeno s potrebnimi gonilniki. Z naslednjimi ukazi v več datotekah preverimo, ali so gonilniki naloženi v jedro. Navadno ukaz cdrecord -scanbus samodejno sproži nalaganje vseh potrebnih gonilnikov v jedro. Če se to ne zgodi, dobimo sporočilo o napaki in modularni gonilnik lahko z ukazom insmod ročno naložimo v jedro.

test `whoami` = 'root' || echo "You must be root to execute the commands."
cdrecord -scanbus > /dev/null
if ! (pidof kerneld || test -f "/proc/sys/kernel/modprobe"); then
    echo "Neither kerneld nor kmod are running to automatically load modules".
fi
report_no_autoload() {
    echo "Ensure the module $1 is loaded automatically next time."
}
if test ! -f "/proc/scsi/scsi"; then
    report_no_autoload scsi_mod  &&  insmod scsi_mod
fi
if ! grep "^........ sg_" /proc/ksyms > /dev/null; then
    report_no_autoload sg  &&  insmod sg
fi
if ! grep "^........ sr_" /proc/ksyms > /dev/null; then
    report_no_autoload sr_mod  &&  insmod sr_mod
fi
if ! grep "^........ loop_" /proc/ksyms > /dev/null; then
    report_no_autoload loop  &&  insmod loop
fi
if ! grep iso9660 /proc/filesystems > /dev/null; then
    report_no_autoload iso9660  &&  insmod iso9660
fi
echo "The following is only needed for IDE/ATAPI CD-writers."
if ! grep ide-scsi /proc/ide/drivers > /dev/null; then
    report_no_autoload ide-scsi  &&  insmod ide-scsi
fi
cdrecord -scanbus
Programski izpis: Preverjanje gonilnikov

Če ukaz insmod sporoči napako o manjkajočem gonilniku, si, prosimo, preberite naslednje poglavje. Če delujete v terminalskem načinu, boste ob nalaganju gonilnikov videli izpisano vrsto diagnostičnih sporočil. Te lahko v grafičnem okolju (X11, KDE, GNOME) prikličete nazaj z ukazom dmesg.

Dva načina sta, da potrebne module samodejno naložimo v jedro ob zagonu:

.

Uporabniki zapisovalnika na vodilu SCSI lahko preostanek tega razdelka preskočijo, ker je ukaz cdrecord najverjetneje že zaznal njihovo strojno opremo. Če je ni, prosim, pošljite avtorju tega spisa elektronsko sporočilo z osnovnimi podatki o vašem sistemu, tako da bo lahko izboljšal razdelek o zapisovalnikih SCSI.

Zdaj pa k uporabnikom, ki uporabljajo zapisovalnike CD na vodilu IDE/ATAPI. Kot smo že omenili v prejšnjem poglavju, morate naložiti združljivostni modul ide-scsi. Vendar pa ima ta gonilnik lahko dostop do zapisovalnika le, če ga že ne uporablja kak drug gonilnik. Z drugimi besedami: svojemu običajnemu gonilniku IDE morate dopovedati, naj zapisovalnika ne prepozna in naj ga pusti pri miru, tako da ga lahko pograbi gonilnik ide-scsi.

hda = IDE vodilo/vtič 0 master
hdb = IDE vodilo/vtič 0 slave
hdc = IDE vodilo/vtič 1 master
hdd = IDE vodilo/vtič 1 slave
Tabela: datoteke naprav za naprave IDE/ATAPI

Zgornja razpredelnica kaže povezavo med imeni datotek naprav in položajem naprav na katerem od vodil IDE. Ime datoteke naprave, ki predstavlja vaš zapisovalnik CD, je treba podati jedru Linuxa, na primer hdb=ide-scsi. Tako nastavitev moramo dodati v datoteki lilo.conf ali chos.conf, če je gonilnik statični del jedra, kar je najpogostejši primer. Če morate podati jedru več kot en parameter, parametre ločite s presledki, tako kot v zgledu za chos spodaj. V programskih izpisih zgleda nastavitev, ki sledita, je prikazano več vrstic, ne le tista, ki jo je treba dodati. Vedite, da so vrstice append- in cmdline- odvisne od jedra, zatorej jih ne dodajajte na začetek datoteke.

image=/boot/zImage-2.2.14
  label=Linux
  read-only
  append="hdb=ide-scsi"
Programski izpis: Zgled nastavitve za LILO (/etc/lilo.conf)

linux "Linux 2.1.14" {
        image=/boot/zImage-2.0.37
        cmdline= root=/dev/hda5 readonly hdb=ide-scsi
}
Programski izpis: Zgled nastavitve za chos (/etc/chos.conf)

Če gonilnik IDE/ATAPI nalagamo kot modul, nam zgornja dva izpisa nista v pomoč. Namesto tega vključimo vrstico "options" iz naslednjega izpisa. Vključitev zadnjih treh vrstic navadno svetujejo zato, da se nadalje avtomatizira samodejno nalaganje potrebnih modulov.

options ide-cd ignore=hdb            # tell the ide-cd module to ignore hdb
alias scd0 sr_mod                    # load sr_mod upon access of scd0
#pre-install ide-scsi modprobe imm    # uncomment for some ZIP drives only
pre-install sg     modprobe ide-scsi # load ide-scsi before sg
pre-install sr_mod modprobe ide-scsi # load ide-scsi before sr_mod
pre-install ide-scsi modprobe ide-cd # load ide-cd   before ide-scsi
Programski izpis: Zgled nastavitve /etc/modules.conf

Če je zapisovalnik CD edina enota CD-ROM v sistemu, vedite, da jo morate zdaj uporabiti prek datoteke naprave /dev/scdx, kjer je x številka od 0 do 7. Verjetno boste želeli tudi simbolno ime cdrom spremeniti tako, da bo kazalo na novo ime naprave. Spodnji programski izpis kaže, kako to izvedemo za napravo scd0.

cd /dev && rm cdrom && ln -s scd0 cdrom
Programski izpis: Nastavitev cdrom kot simbolno ime za scd0

Če sta zapisovalnik CD in enota CD-ROM dve različni napravi, potem pustite simbolno ime cdrom pri miru.

Posebni napotki za zapisovalnike CD na vodilu SCSI

Preverite, ali je BIOS krmilnika SCSI prepozna zapisovalnik. Krmilniki SCSI ob zagonu preiščejo vodilo SCSI in izpišejo vse najdene naprave. Izpis obsega identifikacijsko številko SCSI ID naprave in oznako izdelka. Nobenega smisla nima nadaljevati, če vaš pisalnik ob zagonskem pregledu naprav SCSI ni naveden.

Če načrtujete priklop naprave SCSI prek vzporednih vrat (ne zamenjujte tega s priključitvijo naprav IDE prek vzporednih vrat), potrebujete posebni aktivni kabel in posebni gonilnik za jedro. Več podatkov o takih sistemih najdete na naslovu http://www.torque.net/parport/parscsi.html.

Posebni napotki za zapisovalnike CD na vzporednih vratih

Pisec priznava, da o tem nima pojma, in bralca vljudno vabi, naj obišče stran http://www.torque.net/parport/paride.html ali prebere datoteko /usr/src/linux/Documentation/paride.txt v svojem računalniku.

Prevajanje manjkajočih modulov jedra (neobvezno)

Ta razdelek lahko preskočite, če je bila vaša strojna oprema pravilno prepoznana in nastavljena, kot je bilo opisano zgoraj.

Jedro Linuxa je lahko opremljeno z gonilniki za različne naprave. Gonilniki so lahko statično naloženi v jedru, lahko pa jih prevedemo tudi kot module, ki se naložijo po potrebi. Zadnji način je priporočljiv za gonilnike, ki niso nujno potrebni ob zagonu sistema, ker bo tako jedro manjše in se bo hitreje naložilo. Pri gonilnikih za naprave, ki so nujno potrebne za zagon sistema, izbire nimamo, temveč jih moramo vključiti v jedro. Če imamo sistem naložen na disku IDE, je gonilnik IDE zgled za tak gonilnik -- vključiti ga moramo neposredno v jedro in ne kot modul, sicer se sistem ne bo pravilno zagnal.

Poznamo tri različne vrste zapisovalnikov CD: take na vodilu SCSI, na vodilu IDE/ATAPI in zunanje naprave, ki jih priključimo na vzporedna vrata. Spodnja tabela kaže, kako nastaviti jedro Linuxa za vsako od treh navedenih vrst. Prvi stolpec tabele podaja razdelek na nastavitvenem menuju jedra, kjer lahko najdemo nastavitev. Drugi stolpec navaja kratek opis, prav tako pobran z nastavitvenega menuja. V tretjem stolpcu najdemo ime modula. Zadnji trije stolpci navajajo, kateri moduli so potrebni za katero vrsto vodila: SCSI, IDE in PP (parallel port, vzporedna vrata).

Razd.  Opis                        Modul    SCSI  IDE   PP
------------------------------------------------------------
BLOCK  Enhanced IDE/MFM/RLL...                     Y      
BLOCK  IDE/ATAPI CDROM             ide-cd          M     
BLOCK  SCSI emulation support      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/M  Y/M   Y/M
FS     Microsoft Joliet cdrom...   joliet     Y    Y     Y
Tabela: izbira gonilnikov za različne vrste zapisovalnikov

Oznaka Y pomeni, da moramo gonilnik vključiti kot del jedra, M pa, da ga moramo prevesti kot modul. Pri oznaki Y/M imamo na izbiro, ali gonilnik vključimo neposredno v jedro ali pa kot modul. Če ni navedeno nič, to pomeni, da te izbire ni treba spreminjati. Veliko večje so možnosti, da bo ob vnovičnem zagonu vse še naprej delovalo, če jih v tem primeru tudi res ne spreminjamo. Posebej v mešanih okoljih (IDE/SCSI) je pametno, če prevedemo čim več gonilnikov kot module.

Prevajanje povratnozančne naprave (loopback device) ni obvezno, vendar pa nam omogoča preizkušanje slike CD, preden jo zapišemo na ploščo. Če želimo brati CD, moramo vključiti podporo datotečnemu sistemu ISO 9660. Ta že vključuje razširitve Rock Ridge, podporo razširitvam, ki jih prinaša Microsoftov zapis Joliet, pa moramo izrecno dodati. V vsakem primeru pa potrebujemo nizkonivojski gonilnik za našo vrsto strojne opreme. To je gonilnik, ki občuje neposredno z izbrano napravo. Za gonilnike na vodilu SCSI in vzporednih vratih imamo na voljo široko paleto gonilnikov.

Nameščanje tako prevedenega jedra Linuxa presega zastavljeni okvir tega spisa, zato se za podrobnosti obrnite na dokumentacijo za vašo distribucijo Linuxa.

Uporabniki sistemov Red Hat Linux morajo poleg navedenega vključiti še podporo za "Ramdisk support" in "Initial ramdisk", poleg tega pa morajo z ukazom mkintrd --preload ide-cd initrd-2.2.16.img 2.2.16ustvariti nov pomnilniški disk z novimi moduli.

2.2 Uporabniški programi za zapisovanje na CD

Podrobnejši pregled orodij za izdelavo diskov CD je na voljo na naslovu http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdb.html.

Programi za ukazno vrstico

Za pripravo slik CD-R je potreben eden od naslednjih paketov:

ftp://tsx-11.mnt.edu/pub/linux/packages/mkisofs/ (mkisofs)

ftp://ftp.ge.ucl.ac.uk/pub/mkhfs (mkhybrid)

Za zapisovanje slik CD-R na diske pa boste potrebovali enega od naslednjih programov:

ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/ (cdrecord)

http://www.ping.de/sites/daneb/cdrdao.html (cdrdao)

http://www.munich-vision.de/vcd/ (mkvcdfs)

Ne verjemite navodilom za starejše izdaje programa mkisofs, ki trdijo, da morate uporabljati izdajo 1.5 programa cdwrite. Namesto tega raje uporabite cdrecord. Novejše različice programa cdrecord vsebujejo poleg tega še izboljšano izdajo programa mkisofs in nekaj dodatnih orodij v podimeniku misc/ (readcd, isosize...), ki jih ne najdete nikjer drugje.

Grafični uporabniški vmesnik (neobvezno)

Navedeni grafični uporabni vmesniki so čelni programi -- za delovanje poleg njih potrebujemo še prej navedene programe, ki jih poganjamo iz ukazne vrstice.

X-CD-Roast je program za Linux, ki poenostavlja pripravo plošč CD in ponuja enovit vmesnik tako za pripravo slik CD (mkisofs) kot za zapis le-teh na disk (cdrecord).

http://www.fh-muenchen.de/home/ze/rz/services/projects/xcdroast/e_overview.html

BurnIT je javanski čelni program za cdrecord, mkisofs and cdda2wav, kar je vse, kar potrebujemo za pripravo CD v okolju Unix. Dostopen je na naslovu:

http://sunsite.auc.dk/BurnIT/

CD-Tux je terminalski čelni program za programa mkisofs in cdrecord. Z uporabo (ne)slavne knjižnice ncurses ustvarja enostavno okolje, v katerem lahko počnemo s CD skoraj vse, in to v barvah. Pri vsem skupaj je koda prevedenega programa manjša od 75 KB.

http://www.datadictator.co.za/cdtux/


Naprej Nazaj Kazalo