Verder Terug Inhoud

2. Linux-systeemsetup voor het beschrijven van CD-ROM's

Deze sectie is van toepassing op de volgende typen CD-writers: SCSI, IDE/ATAPI en de devices voor de parallelle poort. USB CD-writers worden niet ondersteund as of May 2000. Voor niet-SCSI writers zijn compatibiliteitsdrivers nodig, welke ze laat verschijnen alsof het echte SCSI-devices zijn. Aan de ene kant is een dergelijke uniforme strategie makkelijk ("alles is SCSI"), omdat op applicatieniveau je je kennis met andere gebruikers kunt delen ongeacht hun soort CD-writer. Aan de andere kant moet je applicaties zoals audio spelers of het mount utility herconfigureren om de wijziging van de naam van de driver weer te geven. Als je eerder bijvoorbeeld je ATAPI CD-writer via het device bestand /dev/hdc benaderde, dan moet je het na het activeren van de SCSI compatibiliteit drivers benaderen via /dev/scd0.

Zodra het je is gelukt je hardware en de rest van je Linux-systeem in te stellen, dan toont de opdracht cdrecord -scanbus je een lijst met devices op je SCSI bussen. Het doel van deze sectie dient om je te begeleiden bij het instellen van je Linux-systeem, zodat je uiteindelijk iets te zien zult krijgen als:

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' Verwijderbare Tape
      0,5,0) 'EXABYTE ' 'EXB-8500-85QUE  ' '0428' Verwijderbare Tape
      0,6,0) 'TOSHIBA ' 'XM-3401TASUNSLCD' '3593' Verwijderbare 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' Verwijderbare CD-ROM
      1,4,0) 'MATSHITA' 'CD-R   CW-7502  ' '4.02' Verwijderbare CD-ROM
      1,5,0) *
      1,6,0) 'YAMAHA  ' 'CDR400t         ' '1.0d' Verwijderbare CD-ROM
      1,7,0) *
Detecteren van devices op je SCSI-bus

Dit voorbeeld werd aangeleverd door Jörg Schilling en het toont een totaal van vier CD-writers. Houd alsjeblieft in de gaten dat -scanbus ook andere devices rapporteert, b.v. reguliere CD-ROM's en harddisk drives. De laatste kolom geeft de SCSI beschrijving van het device, waaruit je niet af kunt leiden wat de gewone CD-ROM drives en die met de mogelijkheid te branden zijn. Maar de productidentificatie (middelste kolom) geeft vaak aanwijzingen in de vorm van een R, -R of -RW.

2.1 Snelstart

Deze sectie is een poging te voorzien in een snelle en makkelijke beschrijving van de configuratie. Niet alle mogelijke setups worden behandeld, maar ga alsjeblieft tot het einde door en probeer het hoe dan ook uit. Kijk als eerste welke kernelversie door de opdracht "uname -r" wordt afgedrukt. Het zou iets moeten zijn als 2.0.x of 2.2.Y, waar X een hoger nummer is dan 36 en Y een hoger nummer dan 11. Als je oudere versies of de zogenoemde ontwikkelaarskernels gebruikt dan ben je op jezelf aangewezen. Het installeren van een nieuwe kernel is net zoveel werk als het corrigeren van een oude kernel, dus heb ik alle aanwijzingen die je nodig hebt voor kernels met fouten verwijderd.

De listing hieronder toont een set opdrachten om mee te beginnen. De opdrachten maken device files aan onder /dev tenzij ze reeds voorkomen.

test `whoami` = 'root' || echo "Je moet root zijn om de opdrachten uit te voeren"
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
Aanmaken van devicefiles

Toegang tot de hardware wordt onder Linux gewoonlijk geïmplementeerd via devicefiles. Dus voor je ook maar iets doet, moet je er zeker van zijn dat die bestanden onder /dev voorkomen. Nog steeds heeft niemand me een boeiende reden kunnen geven waarom dit niet is geautomatiseerd via technieken als het device filesystem (devfs). Het devfs is reeds jaren beschikbaar, het geeft een veiliger (!) en veel duidelijkere benaming aan devices en het maakt dat de device entries automatisch onder /dev verschijnen. Een aantal mensen beargumenteren dat devfs niet de perfecte oplossing is, maar ze komen ook niet met iets beters, zelfs niet met iets vergelijkbaars, en als laatste maar niet als minste, niets dat nu beschikbaar is en getest. Laten we beginnen devfs te gebruiken, zodat we de bovenstaande opdrachten uit dit document kunnen verwijderen. ( http://www.atnf.CSIRO.AU/~rgooch/linux/kernel-patches.html)

Het volgende is dat de Linux kernel moet zijn uitgerust met de benodigde drivers. De volgende opdrachten controleren diverse bestanden op de aanwezigheid van drivers in de actieve kernel. Gewoonlijk brengt de opdracht "cdrecord -scanbus" het automatisch laden van alle drivers teweeg. In geval een driver niet in de kernel aanwezig is, wordt het daarna gemeld en de gemodulariseerde driver (module) wordt handmatig via insmod geladen.

test `whoami` = 'root' || echo "Je moet root zijn om de opdrachten uit te voeren."
cdrecord -scanbus > /dev/null
if ! (pidof kerneld || test -f "/proc/sys/kernel/modprobe"); then
    echo "Noch kerneld noch kmod zijn actief om automatisch modules te laden".
fi
report_no_autoload() {
    echo "Zorg dat de module $1 de volgende keer automatisch is geladen."
}
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 "Het volgende is alleen nodig voor 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
Testen op drivers

Lees alsjeblieft het volgende hoofdstuk door als insmod foutmeldingen retourneert over het ontbreken van modulebestanden. In tekstmodus (console) kan het laden van modules een aantal meldingen op je scherm tot gevolg hebben. In grafische modus (X11, KDE, Gnome) kun je deze meldingen herroepen met de opdracht dmesg.

Er zijn verscheidene manieren om de modules de volgende keer dat je je Linux systeem opstart kun starten:

(1) Plaats de relevante insmod opdracht in de opstartreeks
    (een shellscript genaamd rc.local of equivalent).
(2a) Start kerneld of kmod op en
(2b) configureer ze in /etc/modules.conf (wat nauwkeuriger:
     je configureert het utility modprobe, welke wordt aangeroepen door de
     daemons)

Mensen met een SCSI-writer kunnen de rest van deze sectie overslaan, omdat cdrecord hun hardware zeer waarschijnlijk al detecteert. Stuur me alsjeblieft een e-mail met wat informatie over je setup als dit niet zo is, zodat ik de sectie over SCSI-writers kan verbeteren.

Nu terug naar de mensen met CD-writers voor IDE/ATAPI. Zoals eerder aangegeven, moet je de compatibiliteitendriver ide-scsi laden. Maar deze driver kan je CD-Writer alleen benaderen als nog geen enkele andere driver dit heeft gedaan. Met andere woorden: je moet de reguliere IDE-driver aangeven je CD-Writer als niet herkend te laten, zodat de ide-scsi het af kan vangen.

hda = IDE bus/connector 0 master device
hdb = IDE bus/connector 0 slave  device
hdc = IDE bus/connector 1 master device
hdd = IDE bus/connector 1 slave  device
Bestandsnamen van IDE/ATAPI devices

De tabel hierboven toont de relatie van bestandsnamen voor devices met de plaatsing van de devices op de IDE-bussen. De bestandsnaam van het device die je CD-Writer voorstelt moet worden doorgegeven aan de driver in de Linux-kernel. Bijvoorbeeld: hdb=ide-scsi. Een dergelijke instelling zou moeten worden toegevoegd aan lilo.conf of chos.conf als de driver statisch in je kernel is gecompileerd, wat de meest gebruikelijke setup blijkt te zijn. Wanneer je meer dan één parameter aan de kernel door moet geven, dan scheidt je ze door middel van spaties (zoals in het chos voorbeeld). De volgende twee listings laten je voorbeeldconfiguraties zien met meer regels dan de relevante append-regel. De append- en cmdline-regels zijn image-specifiek (dwz dat je ze niet onmiddellijk bovenaan moet vermelden).

image=/boot/zImage-2.2.14
  label=Linux
  read-only
  append="hdb=ide-scsi"
Voorbeeldconfiguratie voor lilo (/etc/lilo.conf)

linux "Linux 2.1.14" {
        image=/boot/zImage-2.0.37
        cmdline= root=/dev/hda5 readonly hdb=ide-scsi
}
Voorbeeldconfiguratie voor chos (/etc/chos.conf)

Als de driver voor IDE/ATAPI CD-ROM's als een module is geladen, dan maakt het bovenstaande geen verschil, maar zorg dat je de options regel uit de volgende listing opneemt. De laatste drie regels uit die listing worden gewoonlijk aanbevolen om het laden van de vereiste modules verder te automatiseren.

options ide-cd ignore=hdb            # vertel de ide-cd module hdb te negeren
alias scd0 sr_mod                    # laad sr_mod voor toegang tot scd0
#pre-install ide-scsi modprobe imm   # onbecommentarieer alleen bij een aantal ZIP-drives 
pre-install sg     modprobe ide-scsi # laad ide-scsi voor sg
pre-install sr_mod modprobe ide-scsi # laad ide-scsi voor sr_mod
pre-install ide-scsi modprobe ide-cd # laad ide-cd   voor ide-scsi
Voorbeeldconfiguratie voor /etc/modules.conf

Als je CD-writer de enige CD-ROM is die op je machine is aangesloten, denk er dan aan dat je de CD-ROM in de writer moet benaderen via het device bestand /dev/scd× waar ×=0,..,8. Je kunt de symbolische naam cdrom laten verwijzen naar de nieuwe bestandsnaam van het device. In de listing hieronder wordt getoond hoe je dit kunt bereiken met het voorbeeld scd0.

cd /dev && rm cdrom && ln -s scd0 cdrom
Maak cdrom een symbolische naam voor scd0

Wijzig de cdrom symlink niet als je CD-writer en CD-ROM station twee verschillende apparaten zijn.

Speciale notities over SCSI CD-writers

Zorg dat je writer door de BIOS van je SCSI hostadapterkaart wordt herkend. Elke SCSI hostadaptor scant de SCSI-bus als de computer wordt aangezet. en rapporteert alle devices die het vindt die op de bus zijn aangesloten. In dit verslag zijn de SCSI-ID's van de devices en hun productlabel opgenomen. Het heeft geen zin verder te gaan als je CD-writer niet in dit verslag is weergegeven.

Als je van plan bent je SCSI-device op de parallelle poort aan te sluiten (niet te verwarren met de IDE-drives voor de parallelle poort), dan heb je een speciale active kabel en een speciale kerneldriver nodig. Lees http://www.torque.net/parport/parscsi.html om meer te leren over deze optie.

Speciale opmerkingen over CD-writers voor de parallelle poort

Ik heb hier geen idee van, sorry. Lees alsjeblieft http://www.torque.net/parport/paride.html of het lokale bestand /usr/src/linux/Documentation/paride.txt.

Compileren van ontbrekende kernelmodules (optioneel)

Je hoeft deze sectie niet te lezen als je hardware reeds met succes is herkend en is geconfigureerd door de eerder beschreven configuratiestappen.

De Linux kernel kan zijn uitgerust met drivers voor diverse features. Je kunt de drivers in het kernelimage statisch compileren of je kunt ze als module compileren waarbij je ze op verzoek laadt. De laatste methode heeft de voorkeur voor drivers die niet essentieel zijn om je Linux systeem tot leven te brengen, omdat ze kernel dan kleiner en sneller zal zijn. Een aantal drivers zijn echter essentieel voor de werking van het systeem en die moet je dus niet als module compileren. Een voorbeeld: als je systeem op een IDE harddisk is geïnstalleerd, dan moet de driver voor de IDE harddisk in de kernel zijn gecompileerd, niet als een module.

Er zijn drie verschillende typen CD-writers: SCSI, IDE/ATAPI en externe writers die via de parallelle poort werken. In de tabel wordt getoond hoe de Linux kernel voor die hardwaretypen te configureren. De eerste kolom van de tabel geeft de sectie aan van het kernelconfiguratiemenu,waar je de betreffende instelling kunt vinden. De tweede kolom is de beschrijving van de feature (ook uit het kernelconfiguratiemenu). De derde kolom geeft de naam van de resulterende module. De kolommen genaamd SCSI, IDE en PP bevatten de benodigde opties voor de betreffende hardware (PP = parallelle poort).

Sect.  Description                 Module   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
Driverkeuze voor verschillende typen writers

Y staat voor yes en dit betekent dat je het monster in de kernel op zou moeten nemen. M staat voor module en dit betekent dat je deze feature als een module moet compileren. Y/M geeft je de optie te besluiten tussen een van beiden (de volgorde geeft de keuzes aan met minder potentiële problemen). Lege instellingen hoeven niet te worden aangepast en het niet wijzigen verhoogt de kans dat de resulterende kernel zal werken (als het dit voorheen deed...). Vooral in omgevingen waar SCSI en ATAPI devices zijn gemengd, kun je het beste het meeste als modules bouwen.

Het compileren van het loopback device is optioneel. Hiermee kun je de image testen voordat je het wegschrijft naar de media. Als je CD-ROM's wilt kunnen lezen, dan hebt je ondersteuning nodig voor het ISO 9660 bestandssysteem. Deze driver voegt automatisch RockRidge Extensies toe. De Microsoft Joliet CD-ROM extensies moeten expliciet worden toegevoegd aan het ISO 9660 bestandssysteem. In elk geval heb je een low-level driver nodig voor je hardware. Low-level refereert naar de driver, welke direct met de hardware samenwerkt. Voor SCSI en de parallelle poort zijn heel wat low-level drivers beschikbaar.

Het installeren van de resulterende Linux-kernel valt buiten het kader van deze HOWTO. Raadpleeg hiervoor alsjeblieft de documentatie van je Linux-distributie.

Gebruikers van RedHat Linux moeten in de gaten houden dat ze de features "Ramdisk support" en "Initial ramdisk" compileren. Bovendien moet je een nieuwe ramdisk aanmaken bij de nieuwe modules door het aanroepen van een opdracht als "mkintrd --preload ide-cd initrd-2.2.14.img 2.2.14".

2.2 Haal de user software op voor het branden van CD-R's

Een gedetailleerder onderzoek naar tools gerelateerd aan het produceren van CD-ROM's is beschikbaar op http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdb.html.

Opdrachtregel utility's

Een van de volgende packages is vereist om images te genereren van CD-R's (alleen vereist voor data CD-ROM's):

ftp://tsx-11.mit.edu/pub/linux/packages/mkisofs/ (mkisofs) ftp://ftp.ge.ucl.ac.uk/pub/mkhfs (mkhybrid)

Voor het schrijven van images naar de CD-R, heb je één van de volgende softwarepackages nodig:

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)

Vertrouw de manpage van oude versies van mkisofs niet waarin uiteen wordt gezet dat je versie 1.5 van cdwrite nodig hebt. Gebruik gewoon cdrecord en je bent prima af. Let op dat nieuwere versies van cdrecord worden geleverd met een verbeterde versie van mkisofs en nog wat extra tools in de directory misc/ (readcd isosize) welke elders niet zijn aangetroffen.

Graphical user interfaces (optioneel)

Front-ends zijn echt front-ends onder Linux. Dat betekent dat je nog steeds de opdrachtregelutility's moet installeren, maar dat je ze op een beter uitziende manier kunt benaderen.

X-CD-Roast is een programma gericht op het eenvoudig aanmaken van CD's onder Linux. Het combineert opdrachtregeltools zoals cdrecord en mkisofs in een fraaie grafische gebruikersinterface.

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

BurnIT is een JAVA front-end voor cdrecord, mkisofs en cdda2wav-0.95, wat het een compleet package maakt voor het branden van CD's onder het Unix platform. Het is beschikbaar vanaf

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

CD-Tux is een tekengeöriënteerd front-end voor de programma's mkisofs en cdrecord. "Het maakt een makkelijk te gebruiken kleurrijke omgeving aan voor bijna alles wat te maken heeft met een CD via het gebruik van de (niet)beroemde NCURSES library. En dit doet het met een uitvoerbaar bestand van minder dan 75K."

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

Verder Terug Inhoud