CD-Writing HOWTO

Winfried Trümper <winni@xpilot.org> Vertaald door: Ellen Bokhorst bokkie@nl.linux.org v2.9.3, 23 juli 2000

In dit document wordt uitgelegd hoe CD-ROM’s onder Linux te schrijven.

Inhoudsopgave

1 Introductie 3 1.1 Copyright, licentie en gebruiksvoorwaarden . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Beschikbaarheid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Aanbevolen leesstof . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.4 Terminologie ... lasers op maximum ... fire! . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.4.1 Adaptor vs. Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.5 Ondersteunde CD-writers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.6 Ondersteunde "features"

6

1.7 Mailing Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2 Linux-systeemsetup voor het beschrijven van CD-ROM’s 8

2.1 Snelstart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.1.1 Speciale notities over SCSI CD-writers . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1.2 Speciale opmerkingen over CD-writers voor de parallelle poort . . . . . . . . . . . . . 11 2.1.3 Compileren van ontbrekende kernelmodules (optioneel) . . . . . . . . . . . . . . . . . . 11

2.2 Haal de user software op voor het branden van CD-R’s . . . . . . . . . . . . . . . . . . . . . . 13 2.2.1 Opdrachtregel utility’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2.2 Graphical user interfaces (optioneel) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3 CD-R’s branden 14

3.1 Beschrijven van CD-ROM’s (zuivere data) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.1.1 Maak een image aan van de laatste CD-ROM . . . . . . . . . . . . . . . . . . . . . . . 14 3.1.2 Test het CD-image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.1.3 Schrijf de CD-image naar een CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.2 Schrijven van audio CD’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.2.1 Beschrijven van audio CD’s (TAO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.2.2 DAO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.3 CD-ROM’s in gemengde modi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 4 Beste Winfried,... 18

4.1 Hoe gevoelig is het brandproces? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.2 Heeft bestandsfragmentatie een slechte impact op de doorvoer? . . . . . . . . . . . . . . . . . 19 4.3 Is het mogelijk een CD-image op een UMSDOS-bestandssysteem aan te maken? . . . . . . . . 19 4.4 Is er geen manier om de ISO-9660 beperkingen te omzeilen? . . . . . . . . . . . . . . . . . . . 19 4.5 Hoe de tracks van audio CD’s in te lezen? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.6 Hoe na het booten SCSI devices te detecteren? . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.7 Is het mogelijk een 1:1 kopie van een data CD te maken? . . . . . . . . . . . . . . . . . . . . 21 4.8 Kan Linux Joliet CD-ROM’s lezen? (verouderd antwoord) . . . . . . . . . . . . . . . . . . . . 21 4.9 Hoe lees/mount ik CD-ROM’s met de CD-writer? . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.10 Hoe krijg je nog meer data op de CD-R? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.11 Hoe maak je opstartbare CD-ROM’s? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 4.12 Hoe maak je CD-ROM’s schrijfbaar zoals harddisks? . . . . . . . . . . . . . . . . . . . . . . . 23 4.13 Is het mogelijk verscheidene writers tegelijk te gebruiken? . . . . . . . . . . . . . . . . . . . . 23 4.14 Hoe zit het met Solaris, *BSD, AIX, HP-UX, enz.? Wordt mijn Unix-variant ondersteund? . 23 4.15 Waar kan de lokale configuratie permanent worden opgeslagen? . . . . . . . . . . . . . . . . . 23 4.16 Hoe kan de CD-info worden opgehaald? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 4.17 Hoe zit het met herschrijven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.18 Hoe een multi-sessie CD aan te maken? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.19 Moet ik de SCSI-adapter gebruiken die met de writer wordt geleverd? . . . . . . . . . . . . . 25 4.20 Hoe branden over het netwerk? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.21 Ik hoor een kraak of klikgeluid aan het einde van elke track. . . . . . . . . . . . . . . . . . . . 26 4.22 Hoe kan dit zodanig worden ingesteld dat een gewone gebruiker CD’s kan branden in plaats

van altijd root? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.23 Waar haal ik de Ĳellow Bookën Orange Book"standaards vandaan? . . . . . . . . . . . . . . 26 4.24 Ik ben aan het zoeken geweest naar informatie over het branden van Video-CD’s onder Linux. 26 4.25 Wat is makkelijker in te stellen, IDE of SCSI? . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.26 Hoe kan ik een CD overbranden met {cdrecord,cdrdao}? . . . . . . . . . . . . . . . . . . . . . 27 4.27 Wat doet cdrecord als het geen invoer meer krijgt vanuit de pipe? . . . . . . . . . . . . . . . 27 4.28 Is er een equivalent met ignore=hdX voor de ide-scsi emulatie? . . . . . . . . . . . . . . . . . 27 4.29 Hoevaak kun je een CD-RW hergebruiken voor hij fouten gaat vertonen? . . . . . . . . . . . . 27 4.30 Welk formaat moet ik kiezen voor een platformafhankelijke CD-ROM? . . . . . . . . . . . . . 27 4.31 Is multi-sessie voor audio tracks mogelijk? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.32 Welke hardwarebronnen heb ik nodig? Is een oude Pentium genoeg? . . . . . . . . . . . . . . 27

5 Probleemoplossing 28 5.1 Het werkt niet: onder Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.2 Foutmelding: No read access for ’dev=0,6,0’. . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5.3 Het werkt niet: onder DOS enzo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5.4 SCSI foutmeldingen tijdens het branden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

5.5 Medium errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

5.6 Nieuw geschreven CD’s zijn niet leesbaar op sommige spelers. . . . . . . . . . . . . . . . . . . 29

5.7 Mijn scanner werkt niet meer na het laden van de ide-scsi module . . . . . . . . . . . . . . . . 29

6 Krediet 29

1 Introductie

Veel mensen gebruiken Linux om CD-ROM’s te branden, omdat het betrouwbaar en makkelijk is. Geen blauwe schermen tijdens het branden en geen hoofdpijn om de juiste combinatie hard- en software te krijgen. Het werkt gewoon wanneer het eenmaal juist is ingesteld. In de CD-writing wordt een uitleg gegeven van de setup, hoe data op de media geplaatst kan worden en er worden interessante applicaties besproken waarin lezers zo aardig waren in te voorzien.

1.1 Copyright, licentie en gebruiksvoorwaarden

Copyright Winfried Trümper 1996-2000. All rights reserved.

Herdistributie en gebruik, met of zonder aanpassingen zijn toegestaan op voorwaarde dat de naam van de auteur niet mag worden gebruikt als erkenning van producten of om producten te promoten die zijn afgeleid van deze software zonder nadrukkelijke voorafgaande geschreven permissie. In deze zin zijn vertalingen welkom en hoeft hiervoor geen toestemming aan mij te worden gevraagd.

De auteur doet afstand van alle rechtvaardigingen met betrekking tot dit document, waaronder alle impliciete garanties of verkoopbaarheid en geschikheid voor een bepaald doel; in geen geval zal de auteur aansprakelijk zijn voor enig speciale, indirecte of gewichtdoende beschadigingen of enige beschadingen hoe dan ook resulterend uit het verlies door gebruik, gegevens of winsten, in een actie of contract, nalatigheid of andere slordige actie, voortkomend uit of in verband zijnde met het gebruik van dit document.

Samengevat: lees en gebruik op eigen risico. Geen geld-terug garantie. Als je wilt begrijpen waarom dit document altijd een nogal zwakke licentie heeft gehad en niet onder de gnu GPL of vergelijkbare beperking is geplaatst, dan zou je dit artikel van het Duitse computermagazine c’t moeten lezen: <http://www.heise.

de/tp/deutsch/inhalt/te/8375/1.html> (thans alleen in het Duits).

1.2 Beschikbaarheid

Als de editor van dit document som ik voornamelijk op wat andere mensen me hebben gemeld. Ik ben geen softwareontikkelaar noch een hardware-expert, dus voor specifieke problemen met hard- of software kun je het beter iemand anders vragen. Wat altijd zin heeft, is het vermelden van oplossingen voor problemen die nog niet door mij in de HOWTO zijn behandeld.

Ik krijg elk jaar verscheidene honderden e-mails betreffende de CD-Writing HOWTO. Dus heb alsjeblieft geduld met mij, aangezien ik niet altijd binnen een paar uur kan antwoorden. Ik lees echter alles metten en plaats je in mijn CDR-wachtrij. Zorg er alsjeblieft voor dat je bekend bent met de inhoud van de nieuwste versie van dit document, voor je een vraag stelt; het is altijd beschikbaar vanaf <http://www.guug.de/

~winni/linux/>.

1.3 Aanbevolen leesstof

Wellicht dat je het handboek van je Linux-distributie nodig hebt om erachter te komen hoe je een nieuwe kernel installeert. Ik weet werkelijk niets over dit onderwerp wanneer het verdergaat dan mijn eigen Linux distributie.

De CD-R FAQ <http://www.fadden.com/cdrfaq/> is een algemene FAQ over compact-disk recordables (CD-R), CD-writers en de benodigde software. Aangezien de meeste CD-writers kunnen worden gebruikt om ook CD-ROM’s te lezen, wil je wellicht de Linux CD-ROM HOWTO, de Linux SCSI HOWTO en de Linux Kernel HOWTO doorlezen.

1.4 Terminologie ... lasers op maximum ... fire!

CD-ROM staat voor Compact Disc Read Only Memory, een opslagmedium waarbij een optische laser wordt gebruikt om de micoscopische putjes op een kleurrijke glimmende disk af te tasten. De putjes stellen de bits aan informatie voor en ze zijn zo klein dat er een aantal biljoen van op de disc passen. Dus een CD is een massa-opslagmedium.

De term CD-R is een verkorte vorm voor CD-ROM recordable en het refereert naar een CD zonder microscopische putjes op het oppervlak. Dus het is leeg. De CD-R heeft een speciale chemische film waarin putjes kunnen worden gebrand. Dit wordt bewerkstelligd door een laser die normaal gesproken slechts de putjes een beetje aftast, wat meer kracht te geven zodat het de putjes brandt. Deze actie kan slechts éénmaal worden toegepast op een CD-R. Je kunt een aantal gebieden leeglaten om hier later naar te schrijven, waarmee je een zogenoemde multi-session CD aanmaakt.

De CD-ROM rewritable (verkort: CD-RW ) werd ontwikkeld om wat te doen aan de beperking van CD-R media. Met een CD-RW brander kan de laser beiden, putjes in de media branden en ook de media in zijn originele staat terugbrengen. Dit is mogelijk omdat de laser niet werkelijk gaten in de media brandt, waardoor het in een rookwolk op zou gaan. Een aardige analogie voor deze techniek is een ijshockey-spel: door over het ijs te rijden, laten spelers (een laser) krassen op het ijs achter. Het patroon in het ijs (de media) neemt gedurende een ronde op wat er plaatsvond op het ijs. In de tussenliggende periodes van het spel, rijdt de Zamboni schoonmaakkar over het ijs en vult het de gaten door de bovenste laag van het ijs te smelten. (Zamboni is de merknaam van schoonmaakauto’s in ijshockey-stadiums.) Op deze wijze wordt het patroon op het ijs geschoond en kan een nieuwe ronde beginnen. De wetenschappelijke term voor verdampen, condenseren, smelten en bevriezen is "faseomkeer", dus de naam "faseomkeer devices"voor CD-RW-writers.

Deze HOWTO gaat over het beschrijven van CD-R’s en CD-RW’s. Welkom aan boord, kaptein.

1.4.1 Adaptor vs. Adapter

De meest voorkomende spelling binnen de kernelbron is adapter (adapter: 4283, adaptor: 154). Nog belangrijker: dit is van invloed op de parameters van module-opties en aliassen, zoals in "scsi_hostadapter". Dus om een consistente spelling in de configuratievoorbeelden en documenttekst te bereiken, volg ik die conventie ongeacht of het de juiste spelling is.

1.5 Ondersteunde CD-writers

USB CD-writers worden thans in het geheel niet ondersteund. Afgezien daarvan kun je er gerust vanuit gaan dat de meeste nieuwere IDE/ATAPI - en SCSI-writers onder Linux werken. Nieuwere drives zijn meestal 1. Introductie 5

MMC-compliant en worden daarom ondersteund. Als de SCSI-versie van een bepaalde writer werkt, zal de IDE/ATAPI naar alle waarschijnlijkheid ook werken en vice versa. Een aantal mensen hebben echter behoefte aan het warme en vage gevoel door het lezen van het exacte model van hun writer in een of andere compatibiliteitenlijst. Om die reden heb ik de hieropvolgende lijst niet uit deze HOWTO verwijderd. Hier is een uitgebreide samenvatting met drives waarvan is gemeld dat ze met cdrecord werken:

Acer:           CDRW 4432A, CDRW 6206A, CD-R/RW 6X4X32, 8432A
BTC:            BCE 621E (IDE)
Compro:         CW-7502, CW-7502B
Creative:       MK 4211, RW 4224E,
Delta:          OME-W 141
Dysan:          CRW-1622
Elite:          Elite b444.41
Goldstar:       CED-8041B
Grundig:        CDR 100 IPW
Guillemot:      Maxi CD-R 4X/8X
HP:             SureStore 4020i, SureStore 6020i,
                C4324, C4325
                CD-writer+ 7100, 7200i, 7500e, 8100i, 8110i, 8200i Plus,
                           8250i, 9100i, 9110i, 9200e, 9210, 9300i, 9310i
Hi-Val:         CDD 2242, CDD-3610,
Iomega:         ZIPCD 4x650
JVC:            XR-W 2001, XR-W 2010, XR-W 2040, XR-W 2042, XR-RW 2224,
                YR 2626
Kiss:           CDRW (geen model gegeven)
Kodak:          PCD 200, PCD 225, PCD 260, PCD 600
Matsushita:     matsushita is de japanse naam voor panasonic, kijk daar a.u.b.
Memorex:        CRW-620, CDR-622, CRW-1622, CRW-2224, CDRW-4420
Microboards:    PlayWrite 2000, PlayWrite 4000 RW, PlayWrite 4001 RW
MicroNet:       MasterCD Plus 4x4, MasterCD Plus 4x6
Mitsubishi:     CDRW-226
Mitsumi:        CR-2401-TS, CR-2600 TE,  CR-2801 TE,
                CR-4801 TE, CR-4802 TE,  CR-4804 TE
Nomai:          680.RW
Olympus:        CDS 615E, CDS 620E
Optima:         DisKovery 650 CD-R
OTI:            CDRW 965, CDRW 975 (Socrates 1.0)
Panasonic:      CW-7285, CW-7502, CW-7503, CW-7582
Philips:        CDD-521/10, CDD-522,
                CDD-2000, CDD-2600, CDD-3600, CDD-3610, CDD 4201
                PCA 267cr, PCA 460 RW, PCRW 404,
                Omniwriter 26, Omniwriter 26A,
                CDRW800
Pinnacle:       RCD-100, RCD-1000, RCD-5020, RCD-5040
Pioneer:        DW-S114X
Plasmon:        CDR 480, CDR 4220, RF-4100, RF-4102, CDR 4400
Plextor:        CDR PX-24 CS, PX-412 C, PX-R412 C
                PX-R 810Ti, PX-R 820T, PX-W 4220Ti, PX-W 8220T, PX-W 8432T
                Plexwriter RW 4/2/20
Procom:         PCDR 4
REC:            820s
Ricoh:          RO-1420C+, MP 1420C, MP 6200S, MP 6201S, MP 7040A, MP-7060A
Samsung:        SW-204
Sanyo:          CRD-R24S
Smart and

     Friendly:       CD-RW 226, CD-R 1002, CD-R 1002/PRO, CD-R 1004,
                     CD-R 2004, CD-R 2006 PLUS, CD-R 2006 PRO, CD-RW 2224,
                     CD-R 4000, CD-R 4006, CD-R 4012, CD-RW 4424A
                     CD-R 8020, CD-R 8220
     Sony:           CDRX 100E, CDRX 120E, CDRX 140S-RP,
                     CDU 920S, CDU 924, CDU 926S, CDU 928E, CDU 948S
     Taiyo Yuden:    EW-50
     TEAC:           CD-R50S, CD-R55S, CDR-55S, CDR-55K,
                     CDR-56S-400, CD-R56S-600, R56S-614
     Traxdata:       CRW 2260,
                     CDR 4120, CDR 4120 Pro, CDRW 4260, CDRW 4424, CDR 4800
     Turtle Beach:   2040R
     Waitec:         wt 2036, wt 2444ei
     WPI (Wearnes):  CDRW-622, CDR-632P
     Yamaha:         CDR-100, CDR 102, CDR-200, CDR-200t, CDR-200tx
                     CDR-400, CDR-400c, CDR-400t, CDR-400tx, CDR-400Atx
                     CDW-2216E, CRW-2260, CRW-2260t,
                     CRW-4250tx, CRW-4260t, CRW-4260tx, CRW-4261, CRW-4416S,
                     CRW-6416S, CRW-8424E
     CD-writers ondersteund onder Linux

De detaillijst met modellen waarvan is gemeld dat ze wel of niet onder diverse Unix-achtige besturingssyste-

men werken is online beschikbaar vanaf <http://www.guug.de:8080/cgi-bin/winni/lsc-orig.pl>.

Als je hardware niet wordt ondersteund dan kun je Linux nog steeds gebruiken om een image van de CD aan te maken. Je wilt dit wellicht doen omdat de meeste software om CD-R’s te branden voor DOS niet kan omgaan met RockRidge-extensies (Unix-achtige bestandssystemen op CD-ROM). In de tweede stap kun je dan DOS of Macintosh software gebruiken om het image naar de CD-R te schrijven.

1.6 Ondersteunde "features"

Er bestaan twee klassen utility’s: de hardware-drivers en de data-formatters. De hardware-drivers ondersteunen de volgende features:

     Ondersteunde Feature  cdwrite-2.1     cdrecord-1.6    cdrdao
     -------------------------------------------------------------
     IDE/ATAPI             ja                 ja             ja
     Parallel Port         nee                ja             ja
     CD-RW                 nee                ja             ja
     Audio CD              ja                 ja             ja
     Data CD-ROM           ja                 ja             deels
     Multisession          deels              ja             nee
     TAO (track at once)   ja                 ja             ja
     DAO (disk at once)    nee                deels          ja
     packet writing        nee                nee            nee

cdwrite is onbeheerde software waarnaar alleen voor de volledigheid wordt gerefereerd. Gebruik in plaats daarvan cdrecord, aangezien het een breder bereik aan hardware ondersteunt en heel wat meer features heeft. Het belangrijkste voordeel van cdrdao is de mogelijkheid audio CD’s aan te maken zonder twee seconden stilte tussen de tracks (schrijven in disk-at-once (DAO) modus).

De tools geclassificeerd als "data-formattersörganiseren de data op de media ("plaatsen er een bestandssysteem op").

     Feature         mkisofs         mkhybrid        mkvcdfs
     -------------------------------------------------------
     ISO 9660        ja              ja              nee
     RockRidge       ja              ja              nee
     El Torito       ja              ja              nee
     HFS             nee             ja              nee
     Joliet          ja              ja              nee
     Multisession    ja              ja              nee
     CD-Extra        ja              ja              nee
     Video-CD        nee             nee             ja

Het opvallendste verschil tussen het ISO 9660 bestandssysteem in vergelijking met het ReiserFs of Extended-2 bestandssysteem is: je kunt bestanden niet wijzigen wanneer ze eenmaal zijn weggeschreven. Andere beperkingen van het ISO-9660-bestandssysteem zijn:

• slechts 8 niveaus aan subdirectory’s toegestaan (geteld vanaf de directory op het hoogste niveau van de CD)

• maximum lengte voor bestandsnamen: 32 tekens

• 650 MB capaciteit

RockRidge is een uitbreiding die het mogelijk maakt langere bestandsnamen en een diepere directoryhiërarchie voor het ISO-9660 bestandssysteem te gebruiken. Wanneer onder Linux een CD-ROM met Rock-Ridge extensies wordt ingelezen, worden alle bekende eigenschappen van bestanden zoals de eigenaar, groep, permissies, symbolische links getoond ("voelt aan als een Unix bestandssysteem"). Deze extensies zijn niet beschikbaar wanneer de CD-ROM onder DOS of de heterogene Windows-familie van besturingssystemen wordt ingelezen.

El Torito kan worden gebruikt om opstartbare CD-ROM’s aan te maken. Deze feature werkt alleen als de BIOS van je PC dit ondersteunt.

Globaal genomen, bestaat de eerste 1.44 (of 2.88 als dit wordt ondersteund) Mbyte van de CD-ROM uit een diskette-image die er door jou werd opgezet. Dit image wordt door de BIOS als een diskette behandeld en er wordt van geboot. (Als gevolg hiervan is je oorspronkelijke station A: (/dev/fd0) tijdens het booten vanaf deze virtuele diskette wellicht niet toegankelijk).

HFS laat Macintosh de CD-ROM inlezen alsof het zich op een HFS volume bevond (het bij MacOS behorende bestandssysteem).

Met Joliet heb je (onder andere) voor de nieuwere varianten van Windows (95, 98, NT) de beschikking over lange bestandsnamen. De auteur kent echter geen tool waarbij lange bestandsnamen onder DOS of Windows 3.11 zijn toegestaan.

Video-CD’s kunnen direct op DVD-devices worden afgespeeld.

In sectie 2.8 wordt een opsomming van de beschikbaarheid van de genoemde software gegeven.

1.7 Mailing Lists

Wanneer je wilt deelnemen aan het ontwikkelaarsteam (met de bedoeling ze actief te helpen), dan stuur je een e-mail naar cdwrite-request@other.debian.org en plaatst het woord subscribe in het berichtenvenster.

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 (älles 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 üname -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.Jekuntdesymbolischenaamcdromlatenverwijzennaardenieuwebestandsnaamvanhetdevice.Indelistinghieronderwordtgetoondhoejeditkuntbereikenmethetvoorbeeldscd0.

     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.

2.1.1 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 IDEdrives 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.

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

2.1.3 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ën "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>.

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

2.2.2 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/>

3 CD-R’s branden

"If to smoke you turn I shall not cease to fiddle while you burn." (Romeins keizer Nero over het branden van zijn eigen klassieke CD’s, AD64. Hij vatte het totaal verkeerd op en brandde Rome af.)

Het beschrijven van CD-ROM’s bestaat onder Linux uit twee stappen:

• het verpakken van de gewenste data (bestand, muziek of beiden) in bestanden met een speciaal formaat

• het schrijven van de data in de bestanden naar de CD-R met het utility cdrecord

In dit hoofdstuk worden de stappen in meer detail beschreven voor data en audio CD’s.

3.1 Beschrijven van CD-ROM’s (zuivere data)

Het verzamelen van de data om op een CD te zetten duurt gewoonlijk langer dan men verwacht. Overweeg dat ontbrekende bestanden niet kunnen worden toegevoegd zodra de CD is beschreven en gefixeerd. Dit geldt tevens voor een CD-RW, welke thans alleen in z’n geheel kan worden beschreven. Het gebruik van de multi-sessie feature is geen optie voor enkele bestanden, aangezien het veel ruimte consumeert voor een complete inhoudsopgave (TOC). UDF is nog niet gereed voor Linux.

Houd ook in gedachten dat een bepaalde hoeveelheid van de vrije ruimte op een CD wordt gebruikt voor het opslaan van de informatie van het ISO-9660-bestandssysteem (gewoonlijk een paar MB). 620 MB data zal altijd wel passen op een 650 MB CD-R.

3.1.1 Maak een image aan van de laatste CD-ROM

Voor enig opslagmedium (b.v. diskette, harddisk of CD) kan worden gebruikt, moet er een bestandssysteem op worden geplaatst (In DOS taal: worden geformatteerd). Het bestandssysteem is verantwoordelijk voor het organiseren en opnemen van de bestanden die op het medium moeten worden bewaard.

De gebruikelijke utility’s voor het aanmaken van bestandssystemen op harddisk- partities schrijven er een leeg bestandssysteem op, welke vervolgens wordt gemount en wordt gevuld met bestanden door de gebruikers. Een schrijfbare CD is slechts éénmaal beschrijfbaar, dus als we er een leeg bestandssysteem op weg zouden schrijven, zou het worden geformatteerd en voor eeuwig leeg blijven. Dit geldt tevens voor herschrijfbare media aangezien je nog geen willekeurige sectors kunt wijzigen; je moet de gehele inhoud verwijderen.

Dus wat we nodig hebben is een tool dat het bestandssysteem aanmaakt onderwijl we de bestanden naar de CD kopiëren. Deze tool wordt mkisofs genoemd. Een voorbeeld van het gebruik ervan gaat als volgt:

     mkisofs  -r   -o cd_image   privé_verzameling/
                   `---------'   `-----------------------'
                        |               |
               schrijf uitvoer naar   neem directory als invoer

De optie ’-r’ stelt de permissies in van alle bestanden in op voor het publiek leesbaar op de CD en activeert RockRidge-extensies. Je wilt deze optie waarschijnlijk wel gebruiken, tenzij je werkelijk weet wat je aan het doen bent (hint: zonder ’-r’krijgt het mountpoint de permissies van privé_verzameling!).

mkisofs zal proberen alle bestandsnamen in te delen in het 8.3 formaat dat wordt gebruikt door DOS om de grootst mogelijke compatibiliteit te garanderen. In het geval van naamconflicten (verschillende bestanden hebben dezelfde 8.3 naam), worden nummers gebruikt in de bestandsnamen en informatie over de gekozen bestandsnaam wordt afgedrukt via STDERR (gewoonlijk het scherm). Geen paniek: Onder Linux zul je deze rare 8.3 bestandsnamen nooit zien, omdat Linux gebruikt maakt van de Rock Ridge extensies die de oorspronkelijke bestandsinformatie bevatten (permissies, bestandsnaam, enz.).

Denk eraan de optie -J (MS Joliet extensies) te gebruiken of gebruik mkhybrid als je een Windowsvriendelijker CD-ROM wilt genereren. Voor HFS CD-ROMS die worden gebruikt op de Macintosh, kun je beter de manpage van mkisofs’ grotere zuster mkhybrid lezen voor details over de diverse opties.

Nu vraag je je wellicht af waarom de uitvoer van mkisofs niet direct naar het writer device wordt gestuurd. Hier zijn drie redenen voor:

• mkisofs weet niets over het besturen van CD-writers.

• Je wilt wellicht het image testen voordat je het brandt.

• Op langzame machines zou het niet betrouwbaar zijn (zie sectie 4).

Er is een methode om een CD-R in één keer te beschrijven, welke hieronder zal worden beschreven.

Men zou er ook over kunnen denken een extra partitie aan te maken en de image naar die partitie weg te schrijven in plaats van naar een bestand. Ik ben tegen een dergelijke strategie. Mocht je namelijk naar de verkeerde partitie schrijven door een typfout, dan kun je je volledige Linux systeem kwijtraken. Lees: wat mij overkwam... Bovendien is het een verspilling van diskruimte omdat de CD-image dient als tijdelijke data wat na het beschrijven van de CD kan worden verwijderd. Het gebruik van ruwe partities bespaart je echter de tijd om bestanden met een omvang van 650 MB te verwijderen.

3.1.2 Test het CD-image

Linux heeft de mogelijkheid bestanden te mounten alsof het diskpartities zijn. Deze feature is handig voor een controle of de directory lay-out en bestandstoegangspermissies overeenkomen met wat je wilt. Alhoewel media tegenwoordig erg goedkoop is, kost het schrijfproces nog steeds veel tijd, en je wilt wellicht wat tijd besparen door een snelle test uit te voeren.

Geef voor het mounten van het hierboven aangemaakte bestand cd_image op de directory /cdrom, de opdracht

     mount -t iso9660 -o ro,loop=/dev/loop0 cd_image /cdrom

Nu kun je de bestanden onder /cdrom inspecteren, ze verschijnen exact zo op een echte CD. Voor het unmounten van de CD-image geeft je op: umount /cdrom. (Waarschuwing: Onder Linux kernels van voor versie 2.0.31 kan het zijn dat het laatste bestand op /cdrom niet volledig leesbaar is. Gebruik alsjeblieft een recentere kernel zoals 2.0.36. De optie -pad van cdrecord is alleen van toepassing op audio CD’s en de optie -pad van mkisofs vereist een patch, wat net zoveel werk is als een upgrade naar een foutvrije Linux kernel.)

Noot:

Een aantal oude versies van mount kunnen niet omgaan met loopback devices. Als je een dergelijk oude versie van mount hebt, upgrade dan je Linux-systeem. Verscheidene mensen hebben reeds geopperd informatie in dit document te plaatsen over hoe je aan de nieuwste mount utility’s kunt komen. Ik weiger dit altijd. Als je Linux distributie met een oude mount wordt geleverd, rapporteer dit dan als een bug. Als je Linux distributie niet eenvoudig is te upgraden, rapporteer dit dan als een bug. Als ik alle informatie op zou nemen die nodig is om om bugs heen te werken die in slecht ontworpen Linux distributies aanwezig zijn, dan zou deze HOWTO heel wat groter en moeilijker te lezen zijn.

3.1.3 Schrijf de CD-image naar een CD

In deze sectie gaat het alleen over het beschrijven van CD’s in TAO modus, omdat het de meest gebruikte modus voor gegevens is. Kijk alsjblieft in het hoofdstuk over audio CD-R’s voor meer informatie over de verschillen tussen TAO en DAO. Als je de DAO modus gebruikt met de tool cdrdao, denk er dan aan een dummy audio track aan het einde van het TOC bestand toe te voegen (zie de README).

Niet veel meer te doen. Als je het nog niet hebt geprobeerd, is het nu een goed moment voor de opdracht

     cdrecord -scanbus

Dit vertelt je aan welk SCSI-device je CD-writer is gekoppeld. Alle andere methoden om de informatie te raden die zo fraai door cdrecord worden afgedrukt, zijn uit deze HOWTO verwijderd.

Laat me je waarschuwen dat CD-writers een constante gegevensstroom als invoer willen, voordat ik je de laatste opdracht laat zien. Dus het schrijfproces van de CD-image naar de CD moet niet worden onderbroken anders heeft dit een beschadigde CD tot gevolg. De gegevensstroom kan makkelijk worden onderbroken door een zeer groot bestand te verwijderen. Bijvoorbeeld: als je een oud CD-image met een omvang van 650 Mbyte verwijdert, dan moet de kernel informatie bijwerken over 650,000 blokken op de harddisk (in de veronderstelling dat je een blokomvang hebt van 1 Kbyte voor je bestandssysteem). Dat neemt wat tijd in beslag en het is zeer waarschijnlijk dat het de diskactiviteit lang genoeg voor de gegevensstroom zal vertragen dat het een paar seconden pauzeert. Het lezen van mail, browsen op het web of zelfs compileren van een kernel echter heeft op moderne machines geen effect op het schrijfproces.

Geen enkele writer kan zijn laser herpositioneren en verdergaan op de oorspronkelijke plek op de CD wanneer het wordt gestoord. Daarom zullen sterke vibraties of andere mechanische schokken de CD die je aan het beschrijven bent naar alle waarschijnlijkheid ruïneren.

Trek een zwart gewaad aan, vermenigvuldig de SCSI-id van de CD-writer met zijn SCSI-revisie en steek zoveel mogelijk kaarsen aan, zeg twee twee coupletten van de ASR-FAQ op (nieuwsgroep alt.sysadmin.recovery) wanneer je voldoende geestelijk bent voorbereid en typ tenslotte:

     shell> SCSI_BUS=0   # uit listing 1 "scsibus0:"
     shell> SCSI_ID=6    # uit listing 1 "TOSHIBA XM-3401"
     shell> SCSI_LUN=0
     shell> cdrecord -v speed=2 dev=$SCSI_BUS,$SCSI_ID,$SCSI_LUN \
                        -data  cd_image
     # hetzelfde als bovenstaand, maar korter:
     shell> cdrecord -v speed=2 dev=0,6,0  -data  cd_image

Voor een betere leesbaarheid, worden de drie omgevingsvariabelen met natuurlijke namen opgeslagen: SCSI_BUS, SCSI_ID, SCSI_LUN.

Wanneer je cdrecord gebruik om een CD-RW te overschrijven, dan moet je de optie "blank=..."toevoegen om de oude inhoud te verwijderen. Lees alsjeblieft de manpage om meer te leren over de diverse methoden om een CD-RW leeg te maken.

In tijden waarin iedereen behalve ik een 400 Mhz machine heeft, geven mensen de uitvoer van mkisofs direct door als invoer aan cdrecord:

     shell> IMG_SIZE=`mkisofs -R -q -print-size privé_verzameling/  2>&1 \
     | sed -e "s/.* = //"`
     shell> echo $IMG_SIZE
     shell> [ "0$IMG_SIZE" -ne 0 ] && mkisofs -r  privé_verzameling/  \

     |cdrecord  speed=2  dev=0,6,0
                 tsize=${IMG_SIZE}s  -data  -
     #       don't forget the s --^^-- lees data van STDIN

De eerste opdracht is een lege run om vast te stellen wat de omvang van het image is (je hebt hier mkisofs van de cdrecord distributie voor nodig). Je moet alle parameters opgeven die je ook bij de uiteindelijke uitvoering opgeeft (b.v. -J of -hfs). Misschien hoeft je writer niet te weten wat de omvang van het weg te schrijven image is, dus dan kun je deze droge uitvoering achterwege laten. De afgedrukte grootte moet als een tsize parameter aan cdrecord worden doorgegeven (het wordt opgeslagen in de omgevingsvariabele IMG_SIZE). De tweede opdracht is een reeks aan mkisofs en cdrecord, gevormd via een pipe.

3.2 Schrijven van audio CD’s

Het beschrijven van audio CD’s is zeer vergelijkbaar met de hierboven beschreven stappen voor data CD’s. Je kunt tussen twee technieken kiezen: DAO of TAO. TAO (track at once) is minder geschikt voor muziek, omdat je klikken tussen de individuele tracks zult horen. Toch wordt het als eerste beschreven, omdat het iets makkelijker is en DAO nog niet voor alle drives beschikbaar is.

Het belangrijkste verschil in vergelijking met het schrijven van data CD-R’s is het formaat van de images. ISO-9660 (of aan welk bestandssysteem je ook de voorkeur geeft) zou niet geschikt zijn, omdat geen enkele audio CD-speler met bestandssystemen om kan gaan. In plaats daarvan moeten de audiogegevens worden geschreven als "16 bit stereo samples in PCM codering op 44100 samples/seconde (44.1 kHz)".

Een utility om je geluidsbestanden naar een vereist formaat te converteren is sox. Het gebruik ervan is vrij eenvoudig:

     shell> sox  killing-my-software.wav  killing-my-software.cdr

Deze opdracht converteert het lied killing-my-software van het WAV-formaat naar het CDR audio-formaat. Zie de manpage van sox voor details over formaten en bestandsnaam extensies die sox herkent. Omdat de uitvoer van de handmatige conversie veel diskruimte vergt, werd het een ingebouwde feature van cdrecord voor de geluidsformaten WAV en AU. Zolang je geluidsbestanden de extensies .wav of .au hebbt (en de sample rate "stereo, 16 bit, 44.1 kHz"), kun je ze als audio tracks gebruiken zonder handmatige conversie toe te passen naar het CDR formaat. Cdrecord vereist echter dat de grootte van de geluidsgegevens een integer is welke deelbaar is door 2352 en groter is dan 705.600 bytes, waaraan voor een aantal WAV bestanden niet kan worden voldaan. Voor dergelijke bestand is het gebruik van sox nodig om de audio data tot aan 2352 bytes op te vullen.

3.2.1 Beschrijven van audio CD’s (TAO)

Een audio CD bestaat uit audio-tracks, die zijn georganiseerd als aparte images wanneer gebruik wordt gemaakt van de TAO modus. Dus als je tien tracks op je CD wilt, dan moet je tien images aanmaken.

Cdrecord schrijft CD images als audio tracks als de optie -audio is gespecificeerd. De andere opties zijn identiek aan degenen die werden gebruikt voor het beschrijven van data-CD’s (tenzij je zeer speciale wensen hebt). Deze drie voorbeelden doen allen hetzelfde, maar lezen de tracks van verschillende formaten geluidsbestanden:

     shell> cdrecord -v speed=2 dev=0,6,0  -audio  track1.cdr track2.cdr...
     shell> cdrecord -v speed=2 dev=0,6,0  -audio  track1.wav track2.wav...
     shell> cdrecord -v speed=2 dev=0,6,0  -audio  track1.au  track2.au...

Hiermee zal een audio-CD worden geproduceerd met 2 seconden pauze tussen de tracks. Een opmerkelijk formaat wat niet direct leesbaar is door cdrecord is MPEG Layer 3. Om deze bestanden in dit formaat om te zetten naar het CDR-formaat, kun je de opdracht "mpg123 –cdr - track1.mp3 > track1.cdr"gebruiken. De optie –cdr garandeert dat de track is gecodeerd in het vereiste formaat (zie boven). Oudere versies van mpg123 vereisten -s in plaats van de gewone - om naar stdout te schrijven. De andere richting (van WAV converteren naar MPEG) kan worden gedaan met LAME voor WAV-bestanden (extraheer de track met cdda2wav van de audio-CD en codeer het in MP3 met de hulp van LAME).

Voor het aanmaken van een CD-R van een boel MP3-bestanden, kun je gebruik maken van de volgende reeks opdrachten:

     for I in *.mp3
     do
         mpg123 --cdr - "$I" | cdrecord -audio -pad -nofix -
     done
     cdrecord -fix

Afhankelijk van de snelheid van je machine, moet je wellicht de schrijfsnelheid verlagen naar "speed=1"(cdrecord optie). Gebruik je "speed=4", dan moet je machine het MP3-bestand op viervoudige snelheid af kunnen spelen. mpg123 consumeert veel CPU-tijd! Probeer een lege run met -dummy (de laser blijft uitgeschakeld) als je twijfelt.

3.2.2 DAO

Wanneer je af wilt van de pauzes tussen de audio tracks, dan moet je de disk-at-once (DAO) opname gebruiken in tegenstelling tot de (individuele) track-at-once (TAO) opname die hiervoor werd beschreven. In cdrdao is ondersteuning voor DAO het verst gevorderd. Kijk op de homepage van cdrdao voor details.

Bestuur je de CD in DAO modus, dan gebruik je een monolithisch image (geluidsbestand) en bestuur je de informatie over de tracks met een configuratiebestand.

     CD_DA
     TRACK AUDIO
     FILE "live.wav" 0 5:0:0
     INDEX 3:0:0
     TRACK AUDIO
     FILE "live.wav" 5:0:0 5:0:0
     TRACK AUDIO
     FILE "live.wav" 10:0:0 5:0:0
     INDEX 2:0:0

3.3 CD-ROM’s in gemengde modi

Er valt niet veel te zeggen over dit onderwerp. Geef gewoon het type van de (opeenvolgende) images aan met de opties -data en -audio. Voorbeeld:

     cdrecord  -v dev=0,6,0  -data  cd_image  -audio  track*.cdr

4 Beste Winfried,...

Dit is de sectie die gewoonlijk bekend staat als "veelgestelde vragen met antwoorden". Als je een probleem ondervindt met je partner, kinderen of hond, stuur dit dan gewoon in, zolang het maar te maken heeft met het beschrijven van CD-R’s of op andere wijze amusant is.

4.1 Hoe gevoelig is het brandproces?

Test het. Gebruik de optie -dummy voor een lege uitvoering van cdrecord. Doe alles wat je anders ook zou doen en kijk of het brandproces het overleeft.

Als je cdrecord direct de uitvoer van mkisofs doorgeeft, dan zullen diskintensieve processen zoals het updaten van de database locate de maximum flow rate verlagen en wellicht de CD beschadigen. Je kunt maar beter van te voren controleren of dergelijke processen niet worden gestart via cron, at of anacron terwijl je CD-R’s op oudere machine’s brandt.

4.2 Heeft bestandsfragmentatie een slechte impact op de doorvoer?

De bestandsfragmentatie van bestanden is gewoonlijk zo laag, dat de impact ervan niet wordt opgemerkt. Je kunt echter makkelijk pathologische gevallen van fragmentatie construeren, welke de doorvoer van je harddisk verlagen tot onder de 100 kbytes/seconde. Dus doe dat niet. :-) Ja, bestanden op een harddisk kunnen met de jaren gefragmenteerd raken. Laat altijd 10% of 20% vrije ruimte over en er is niets aan de hand met betrekking tot het schrijven van CD-R’s.

Wanneer je niet zo zeker bent, bekijk dan de meldingen die tijdens het booten worden afgedrukt. Het percentage aan fragmentatie wordt gerapporteerd tijdens de controle van de bestandssystemen. Je kunt deze waarde controleren met de zeer gevaarlijke opdracht

     shell> e2fsck -n  /dev/sda5        # '-n' is van belang!
     [stuff deleted -- ignore any errors]
     /dev/sda5: 73/12288 files (12.3% non-contiguous)

In dit voorbeeld lijkt de fragmentatie zeer hoog, maar er bevinden zich slechts 73 kleine bestanden op het bestandssysteem. Dus de waarde is niet alarmerend.

Er is een experimenteel utility genaamd e2defrag om extended-2 bestandssystemen te defragmenteren. De huidige versie werkt niet betrouwbaar genoeg, zelfs niet voor gebruik in privé-omgevingen. Als je werkelijk je bestandssysteem wilt defragmenteren, dan kun je nog beter een backup maken (of nog beter: twee kopieën), oefen in het terugzetten van de gegevens, maak dan een nieuw bestandssysteem aan (waarmee het oude zal worden verwijderd) en zet de gegevens terug. Deze schets is thans de veiligste techniek.

4.3 Is het mogelijk een CD-image op een UMSDOS-bestandssysteem aan te maken?

Ja. Het enige bestandssysteem dat niet betrouwbaar en snel genoeg is voor het beschrijven van CD-ROM’s is het network filesystem (NFS). Ik gebruikte UMSDOS zelf om diskruimte tussen Linux en DOS/Win te delen op een PC (486/66) die bestemd was voor het beschrijven van CD-ROM’s.

4.4 Is er geen manier om de ISO-9660 beperkingen te omzeilen?

Ja. Je kunt elk bestandssysteem dat je wenst op de CD plaatsen. Maar andere besturingssystemen dan Linux kunnen niets met deze CD. Zo doe je het:

• Maak een leeg bestand met een omvang van 650MB.

          dd if=/dev/zero of="empty_file" bs=1024k count=650

• Maak een extended-2 bestandssysteem op dit bestand

          shell> /sbin/mke2fs  -b 2048  empty_file
          empty_file is not a block special device.
          Proceed anyway? (y,n) y

• Mount dit lege bestand via de loopback devices (je hebt een redelijk nieuwe mount hiervoor nodig; lees hierboven).

          mount -t ext2 -o loop=/dev/loop1 empty_file /mnt

• Kopieer bestanden naar /mnt/ en umount daarna.

• Gebruik cdrecord op empty_file (welke niet langer leeg is) alsof het een ISO-9660-image is.

Als je voor een dergelijke CD een regel aan /etc/fstab toe wilt voegen, deactiveer dan het controleren van het device bestand tijdens de systeemstart. Bijvoorbeeld:

     /dev/cdrom  /cdrom  ext2  defaults,ro  0 0

De eerste 0 betekent "niet opnemen in dumps"(backup), de tweede (=belangrijk) betekent "controleer niet op fouten bij het starten"(fsck zou falen bij het testen van de CD op fouten).

4.5 Hoe de tracks van audio CD’s in te lezen?

Er zijn verscheidene softwarepackages beschikbaar. De nieuwste is "cdpranoiaën het kan worden gedownload van

        <http://www.xiph.org/paranoia/>

Of je kunt de combinatie "cdda2wav"met "soxüitproberen, beschikbaar vanaf sunsite en mirrors:

        <ftp://sunsite.unc.edu/pub/Linux/apps/sound/cdrom/cdda2wav0.71.src.tar.gz>
     <ftp://sunsite.unc.edu/pub/Linux/apps/sound/convert/sox-11gamma-cb3.tar.gz>

Met cdda2wav kun je aan een specifieke interval (of een gehele track) van je audio-CD komen en dit converteren naar een .wav bestand. sox converteert de WAV bestanden terug naar het (audio CD) cdda-formaat zodat het naar de CD-R kan worden geschreven met cdrecord. Je hebt sox niet noodzakelijkerwijs nodig als je een recente versie gebruik van cdrecord, omdat het ingebouwde ondersteuning heeft voor .au en .wav bestanden.

4.6 Hoe na het booten SCSI devices te detecteren?

Het bestand drivers/scsi/scsi.c bevat de informatie

     /*
      * Usage: echo "scsi add-single-device 0 1 2 3" >/proc/scsi/scsi
      * with  "0 1 2 3" replaced by your "Host Channel Id Lun".
      * Consider this feature BETA.
      *     CAUTION: This is not for hot plugging your peripherals. As
      *     SCSI was not designed for this you could damage your

      *     hardware !
      * However perhaps it is legal to switch on an
      * already connected device. It is perhaps not
      * guaranteed this device doesn't corrupt an ongoing data transfer.
      */

Dit zou alleen moeten worden gebruikt als je SCSI-devices aan het einde van de keten toevoegt. Het invoegen van nieuwe SCSI-devices aan een bestaande keten verstoort de benaming van devices (directory /dev) en kan de complete inhoud van je harddisk vernietigen.

Een aantal kernelversies houdt helemaal niet van het opnieuw scannen van de SCSI-bus en het systeem kan vastlopen als je het bovenstaande probeert. Je bent gewaarschuwd.

4.7 Is het mogelijk een 1:1 kopie van een data CD te maken?

Ja. Maar wees je bewust van het feit dat eventuele fouten bij het lezen van het origineel (vanwege stof of krassen) zullen resulteren in een defecte kopie. Beide methoden zullen mislukken bij audio CD’s! Voor audio CD’s moet je cdrdao of cdda2wav gebruiken.

Eerste situatie: je hebt een CD-writer en een apart CD-ROM station. Door het uitvoeren van de opdracht

     cdrecord -v dev=0,6,0 speed=2 -isosize /dev/scd0

lees je de gegevensstroom in van het CD-ROM station aangesloten als /dev/scd0 en schrijf je het direct naar de CD-writer.

Tweede situatie: je hebt geen apart CD-ROM station. In dit geval moet je de CD-writer de CD-ROM eerst uit laten lezen:

     dd if=/dev/scd0 of=cdimage

Deze opdracht leest de inhoud van de CD-ROM van het device /dev/scd0 en schrijft het naar het bestand "cdimage". De inhoud van dit bestand is equivalent aan wat mkisofs produceert, dus je kunt verdergaan zoals eerder beschreven in dit document (wat wil zeggen dat je het bestand cdimage als invoer dient voor cdrecord). Als je een voortgangsmeter en ander fraais wilt zien, dan kun je ook gebruik maken van sdd van Jörg Schillings.

In geval je fouten tegenkomt, installeer je een recente versie van cdrecord waarbij een tool genaamd "readcd"(te vinden onder misc/) wordt meegeleverd. Het geeft je hetzelfde resultaat als dd, maar het leest sectoren op de CD-ROM verscheidene malen in in geval van fouten.

4.8 Kan Linux Joliet CD-ROM’s lezen? (verouderd antwoord)

Ja. Nieuwere kernels (2.0.36 en de aankomende 2.2) hebben ingebouwde ondersteuning voor het joliet formaat. Denk eraan dat je beide opties in /etc/fstab moet gebruiken: de trefwoorden iso9660 en joliet (de laatste is echt een extensie). Zie voor meer details <http://www-plateau.cs.berkeley.edu/people/

chaffee/joliet.html>.

4.9 Hoe lees/mount ik CD-ROM’s met de CD-writer?

Net als bij reguliere CD-ROM drives. In het geheel geen truuks. Je moet je scd devices (SCSI CD-ROM) gebruiken om CD-ROM’s voor lezen te mounten ook als je een ATAPI CD-ROM hebt (denk eraan dat je de ATAPI devices configureerde om te fungeren als SCSI). Voorbeeldregel in /etc/fstab:

     /dev/scd0  /cdrom  iso9660  ro,user,noauto  0  0

4.10 Hoe krijg je nog meer data op de CD-R?

Gebruik bzip2 in plaats van enig ander compressieprogramma zoals gzip of pkzip. Het zal je zo’n 30% diskruimte besparen voor grotere (>100kb) bestanden. Je kunt het downloaden vanaf

        <http://www.muraroa.demon.co.uk/>

In plaats van het schrijven van een echte audio-CD, kun je optioneel je WAV audio bestanden converteren naar MP3 audio bestanden en ze als reguliere bestanden opslaan op een ISO-9660 bestandssysteeem. Gewoonlijk geeft MPEG III je een compressie van 1:10. Natuurlijk zijn de meeste CD-spelers niet in staat bestanden te lezen... dit is de keerzijde. Aan de andere kant, waarom zou je de muziek voor je volgende feest niet afspelen vanaf de harddisk? 18 Gbytes is voldoende voor 3000-4000 titels. :-)

Een software MPEG III-encoder is beschikbaar vanaf

        <http://www.sulaco.org/mp3/>

Een MPEG III-speler is beschikbaar vanaf

        <http://www.mpg123.org/>

Voor opgenomen spraak kun je wellicht proberen de grootte te beperken door gebruik te maken van shorten of "GSM lossy speech compression":

        <ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/>   <http://kbs.cs.tu-berlin.de/
     ~jutta/toast.html>

4.11 Hoe maak je opstartbare CD-ROM’s?

Je hebt hiervoor een 1.44 MB opstartbare diskette nodig. Maak een exacte image van deze diskette met behulp van de opdracht:

     dd if=/dev/fd0 of=boot.img bs=18k

Plaats deze diskette-image in de directory met de verzameling bestanden (of in een subdirectory daarvan, zoals je wilt). Vertel mkisofs over dit bestand met de optie ’-b’ en gebruik ook optie ’-c’. Lees voor details het bestand README.eltorito in de mkisofs-distributie.

Een interessante toepassing voor een aangepaste opstartbare CD is als een virus veilig DOS- of Windowssysteem. Het bespaart je het geld voor de harddisks (als je een netwerk hebt en samba gebruikt om de gegevens van gebruikers op een fileserver te plaatsen). Het Duitse computermagazine c’t heeft een artikel over dit onderwerp in uitgave 11/99, pagina 206 ( <http://www.heise.de/>).

Een aantal details over de opstartbare RedHat CD-ROM zijn beschikbaar vanaf <http://members.

bellatlantic.net/~smithrod/rhjol-technical.html>.

4.12 Hoe maak je CD-ROM’s schrijfbaar zoals harddisks?

Er is voor Linux een overlay filesystem beschikbaar, welke wordt gemount over de CD-ROM en alle schrijfbewerkingen onderschept. Nieuwe en gewijzigde bestanden worden elders opgeslaten, maar voor de gebruiker lijkt het alsof de CD-ROM wordt aangepast. Zie voor meer informatie <http://home.att.net/

~artnaseef/ovlfs/ovlfs.html>.

Wanneer dat niet volstaat voor wat je nodig hebt: wacht totdat het UDF-bestandssysteem door Linux wordt ondersteund of help bij de ontwikkeling ervan (zie <http://trylinux.com/projects/udf/>. Thans wordt alleen het lezen van CD-media ondersteund door een beperking in de CD-ROM drivers van de Linux kernel.

4.13 Is het mogelijk verscheidene writers tegelijk te gebruiken?

Ja. Er is gemeld dat het met op z’n minst 3 writers werkt op volledige snelheid (6x) op een PC met 233 Mhz en een enkele SCSI-bus draaiend onder kernel 2.2.12. Je hebt een recente versie van de Linux kernel (2.2.12 of hoger) nodig.

4.14 Hoe zit het met Solaris, *BSD, AIX, HP-UX, enz.? Wordt mijn Unixvariant ondersteund?

Slechts hoofdstuk 2 is Linux-specifiek. Je kunt hoofdstuk 3 en 4 toepassen zelfs als je een andere familie besturingssystemen dan Linux draait. Bekijk alsjeblieft de bestanden README.NetBSD, README.aix, README.hpux, README.next, README.solaris, README.sunos, README.vms of README.xxxBSD uit de cdrecord-distributie.

Waarschijnlijk wel. Compileer cdrecord voor je platform en geef de opdracht "cdrecord -scanbus". Lees het README.* bestand voor je Unix distributie wat met de broncode van cdrecord wordt meegeleverd. Echter niet alle Unix-varianten kunnen de RockRidge, Joliet en HFS extensies lezen op je nieuw geschreven CD-R.

4.15 Waar kan de lokale configuratie permanent worden opgeslagen?

Je hebt twee opties. Of je gebruikt het ingebouwde configuratiebestand van cdrecord, of je gebruikt een shellwrapper zoals in onderstaand voorbeeld. Dit shellscript lees een configuratiebestand in, waarin regel voor regel een opsomming is gegeven van de opties en parameters aan cdrecord. De namen zijn exact hetzelfde als op de opdrachtregel, maar dan zonder het voorafgaande koppelteken. Commentaar is toegestaan. Bijvoorbeeld:

     # verbose
     v
     # stel de snelheid van de writer in
     speed=2
     # de device-coördinaten in de vorm BUS,ID,LUN
     dev=0,6,0

De configuratiebestanden voor de wrapper horen in /etc/cdrecord/ en er moet naar worden gerefereerd op de opdrachtregel. Bijvoorbeeld: als je wilt verwijzen naar het configuratiebestand /etc/cdrecord/mywriter.cfg, dan kun je de opdracht "cdrecord.sh mywriter.cfg -audio track1..."geven. Alles na mywrite.cfg wordt aan cdrecord doorgegeven.

     #! /bin/bash

4. Beste Winfried,... 24

CFGDIR="/etc/cdrecord"
CFG="$1"
shift
ARGS_LEFT="$@"
if [ ! -f "$CFGDIR/$CFG" ]
then
echo "Configuratiebestand $CFGDIR/$CFG niet gevonden. Sluit af."
exit 1
fi
while read LINE
do
case $LINE in
    \#*|"") continue;;
esac
old_IFS="$IFS"
IFS="$IFS="
set -- $LINE
IFS="$old_IFS"
O_NAME="$1"
O_VALUE=""
while shift
do
    case $1 in
        "") continue;;
    esac
    O_VALUE="$1"
done
if [ -z "$O_VALUE" ]
then
    O_CDRECORD="$O_CDRECORD -$O_NAME "
    continue
fi
O_CDRECORD="$O_CDRECORD $O_NAME=$O_VALUE "
done < "$CFGDIR/$CFG"
set -x    #DEBUG
exec cdrecord $O_CDRECORD $ARGS_LEFT
echo "Execution of cdrecord failed."

4.16 Hoe kan de CD-info worden opgehaald?

Ergens na de eerste 32 k op de CD, is een blok met informatie over de CD te vinden. Je kunt de informatie met het volgende shellscript extraheren:

#! /bin/bash
RD=/dev/cdrom
for i in 32768,7   32776,32 32808,32 32958,128 33086,128 33214,128 \
     33342,128 33470,32 33581,16 33598,16  33615,16  33632,16

     do
         old_IFS="$IFS"
         IFS=","
         set -- $i
         IFS="$old_IFS"
         OFFSET=$1
         LENGTH=$2
         echo "*`dd if=$RD bs=1 skip=$OFFSET count=$LENGTH   2> /dev/null`#"
     done

4.17 Hoe zit het met herschrijven

Wanneer je CD-RW media overschrijft, dan geef je de parameter blank=fast op aan cdrecord. Dat is alles. Zie de manpage van cdrecord voor details over deze parameter.

4.18 Hoe een multi-sessie CD aan te maken?

Allereerst moet het image voor een multi-sessie CD worden geformatteerd met het ISO-9660 bestandssysteem met RockRidge-extensies. En je moet de optie -multi aan cdrecord opgeven zolang je nog sessies toe wilt kunnen voegen. Dus op z’n minst moet je bij de eerste sessie, de optie -multi specificeren.

Een aantal CD-writers hebben geen ondersteuning voor CD-ROM XA mode 2 of voor session-at-once (SAO), dus moet je de switch -data aan cdrecord opgeven op de opdrachtregel.

De images voor de tweede en daaropvolgende sessies zijn iets gecompliceerder te genereren. Mkisofs moet weten waar de vrije ruimte op de CD-R begint. Die informatie kan worden vergaard door gebruik te maken van de optie -msinfo van cdrecord (zie voor een voorbeeld hieronder).

     shell> NEXT_TRACK=`cdrecord -msinfo dev=0,6,0`
     shell> echo $NEXT_TRACK
     shell> mkisofs -R -o cd_image2 -C $NEXT_TRACK -M /dev/scd5
              private_collection/ \

Lees voor meer informatie alsjeblieft het bestand README.multi welke met cdrecord wordt gedistribueerd.

4.19 Moet ik de SCSI-adapter gebruiken die met de writer wordt geleverd?

Gemeld via e-mail: In de meeste CD-writer docs staat geschreven gebruik te maken van een aparte SCSI-bus als je overgaat van een CD-ROM naar een CD-writer en ik heb dit zelf gezien in het volgende scenario:

Adaptec 2940UW SCSI-kaart, een 24x SCSI CD-ROM en een 4x4 SCSI CD-writer. Toen ik de CD-writer kreeg, werd het geleverd met een eigen ISA SCSI-kaart welk slechts één device kon afhandelen. Ik besloot dit om te gooien en mijn betere adaptec kaart voor alles te gebruiken. Ik bemerkte dat er nogal veel buffer underruns optraden als ik op 4x snelheid opnam, maar zodra ik had geprobeerd de ISA SCSI kaart aan te sluiten, ik geen problemen had. Ik ken 2 andere mensen (beiden gebruiken een adaptec 2940 kaart) die exact dezelfde symptomen ervaarde, gewoonlijk bij het schrijven van een CD-ROM naar een CD-recorder. Ik ervaarde dit probleem echter nooit als ik van een harddisk naar een CD-writer op dezelfde bus schreef.

4.20 Hoe branden over het netwerk?

Gewoonlijk is een bestandstransport met FTP snel genoeg om zelfs over een 10 Mbit ethernet een CDrecorder op viervoudige (4x) snelheid van invoer te voorzien. Je kunt via een fifo de ftp-client aan cdrecord koppelen. Maak eerst een fifo genaamd cdimage:

     mkfifo cdimage
     ftp other.host.org
     get cdimg cdimage

Behandel cdimage als een regulier bestand, d.w.z. roep de volgende opdracht aan:

     cdrecord dev=0,1,0 speed=2 cdimage

Je ftp-client zal bemerken wanneer cdrecord van het bestand wil lezen en zal vanaf de ftp-host beginnen met het transporteren van de gegevens.

4.21 Ik hoor een kraak of klikgeluid aan het einde van elke track.

Je moet de disk-at-one modus (DAO) gebruiken om van het kraken af te komen.

4.22 Hoe kan dit zodanig worden ingesteld dat een gewone gebruiker CD’s kan branden in plaats van altijd root?

Je kunt de setuid-bit toevoegen aan het uitvoerbare bestand cdrecord. Dit is echter wellicht een beveiligingsrisico. Het slechts instellen van de permissies op de device bestanden helpt niet aangezien cdrecord bevoorrechte opdrachten uitvoert via de SCSI generic interfaces.

     which cdrecord
     chown root.root /usr/bin/cdrecord
     chmod 4111 /usr/bin/cdrecord

4.23 Waar haal ik de Ĳellow Bookën Orange Book"standaards vandaan?

Je krijgt de gedrukte specificaties bij Philips en ze zijn duur.

4.24 Ik ben aan het zoeken geweest naar informatie over het branden van Video-CD’s onder Linux.

Hier vind je utility’s voor de aanmaak van MPEG video’s en Video-CD’s: <http://www.mainconcept.de/>

<http://www.johanni.de/munich-vision/vcd/>

Politiek correcte mensen noemen de Berkeley-tools en andere YUV-strategiën. Het gebruik ervan is gecompliceerd, vergt veel tijd en harddiskruimte en geeft je geen audio-track. Ik raad aan gebruik te maken van conceptuele toepassingen op hoger niveau zoals de hierboven genoemde.

4.25 Wat is makkelijker in te stellen, IDE of SCSI?

SCSI CD-writers zijn iets eenvoudiger in te stellen met betrekking tot CD-writing onder Linux. En er wordt van vermeld dat ze voorzien zijn van een beter foutenherstel. Of dat de hogere prijs compenseert kan over het algemeen niet worden beantwoord.

4.26 Hoe kan ik een CD overbranden met {cdrecord,cdrdao}?

Het overbranden van een CD-R is niets speciaals. Het is op eigen risico dat de data op de CD-ROM past, maar dat is alles. Er zijn onder Linux geen 650 Mbytes-limieten in de software.

4.27 Wat doet cdrecord als het geen invoer meer krijgt vanuit de pipe?

Het zal stoppen met schrijven. Dus kunt je favoriete backuptool koppelen met cdrecord door gebruik te maken van een pipe, zoals in "bru -size=640m -f - | cdrecord dev=0,1,0 speed=2 -". Je moet speciale aandacht schenken aan het backuputility als de backup meerdere CD-R’s beslaat.

4.28 Is er een equivalent met ignore=hdX voor de ide-scsi emulatie?

Ik zou geen manier weten, maar iedereen is welkom deze feature toe te voegen aan de Linux kernelsource.

4.29 Hoevaak kun je een CD-RW hergebruiken voor hij fouten gaat vertonen?

Goede vraag.

4.30 Welk formaat moet ik kiezen voor een platformafhankelijke CD-ROM?

Een CD-ROM welke moet kunnen worden ingelezen door alle systemen kan alleen gebruik maken van het ISO 9660 formaat. Dat betekent stomme 8+3 bestandsnamen van het oude MS-DOS en zonder enige HFS (Macintosh), Joliet (Microsoft) of RockRidge (nieuwere Unices) extensies. Er bestaat geen extensie voor langere bestandsnamen, welke kan worden ingelezen door alle besturingssystemen.

4.31 Is multi-sessie voor audio tracks mogelijk?

Audio CD-players zijn alleen in staat om te gaan met tracks die zijn opgeslagen in de eerste sessie. Met andere woorden: je kunt geen audio-tracks toevoegen in opeenvolgende sessies. Het schrijven van data tracks in de tweede sessie verbergt ze echter effectief van audio CD-spelers. Op deze wijze kun je voorkomen dat je een stille track op je gemengde modus CD (audio en data gemengd) hebt.

4.32 Welke hardwarebronnen heb ik nodig? Is een oude Pentium genoeg?

Een antwoord hangt af van je wensen. Als je reden hebt een nieuwe computer te kopen, is hier het antwoord van de internationale associatie van computerfabrikanten: Wat je ook van plan bent, je hebt een processor nodig van 800 Mhz. Omdat het niet in je bestaande moederbord past, heb je ook een nieuw moederbord nodig. De makkelijkste oplossing is gewoon een typisch compleet aanbod zoals te zien in advertenties op TV te kopen. Negeer alsjeblieft de rest van deze sectie.

Nu het geval als je gewoon een rationeel antwoord wilt: Ik beschreef succesvol verscheidene CD-ROM’s met behulp van een "486’r"van 66 Mhz. Alhoewel MS dit niet meer aanmerkt als PC’s, maar aanbeveelt daar een CE versie op te draaien (gezien op CeBIT), draait Linux zelfs prima op de voorgangers van de Pentium en is zelfs in staat er CD’s op te beschrijven. Je kunt er makkelijk achterkomen of de kracht van je hardware voldoende is voor het beschrijven van CD-ROM’s door het uit te testen. Voeg gewoon de opdrachtregel -dummy toe wanneer je cdrecord uitvoert en de laser zal uitblijven. Bekijk het schrijfproces.

5 Probleemoplossing

Denk eraan dat je beschadigde CD-ROM’s nog altijd als onderzetters kunt gebruiken. :-)

5.1 Het werkt niet: onder Linux

Controleer alsjeblieft eerst of de writer werkt onder de software welke is meegeleverd (=onder een andere besturingssysteem). Concreet:

• Herkent de controller de writer als een SCSI-device?

• Herkent de driversoftware de writer?

• Is het mogelijk een CD te maken met software die werd meegeleverd?

Als het "zelfs niet werkt"met de meegeleverde software dan heb je te maken met een hardwareconflict of beschadigde hardware. Als het wel werkt en je gebruikt loadlin om Linux te booten, dan is het een probleem met loadlin. Loadlin veroorzaakt een warme boot met de meeste hardware reeds geïnitialiseerd en dat kan de Linux kernel is verwarring brengen.

5.2 Foutmelding: No read access for ’dev=0,6,0’.

Onder Linux zijn een aantal versies van de C-library incompatibel (bevatten fouten), dus een applicatie die is gelinkt met de ene versie zal niet werken met een andere. Een voorbeeld van een foutmelding teweeggebracht door voorgecompileerde binary’s is het volgende:

     [root@Blue /dev]# cdrecord -eject dev=0,6,0
     cdrecord: No such file or directory. No read access for 'dev=0,6,0'.

De oplossing is de installatie van een nieuwere C-library.

5.3 Het werkt niet: onder DOS enzo

Probeer Linux eens. De installatie en configuratie van SCSI-drivers voor DOS is een hel. Linux is te gecompliceerd? Ha!

5.4 SCSI foutmeldingen tijdens het branden

Naar alle waarschijnlijkheid worden deze foutmeldingen veroorzaakt door

• het ontbreken van de dis-/reconnect feature op de SCSI-bus

• onvoldoende gekoelde hardware

• gebrekkige hardware (zou moeten worden gedetecteerd door 5.1)

Onder diverse omstandigheden verbreken/herstellen SCSI-devices (elektronisch) de verbinding met de SCSIbus. Als deze mogelijkheid niet beschikbaar is (controleer de controller en kernelparameters) komen een aantal writers in de problemen tijdens het branden of fixeren van de CD-R.

Vooral de NCR 53c7,8xx SCSI-driver heeft deze feature standaard gedeactiveerd, dus wellicht dat je dit eerst na wilt kijken:

     NCR53c7,8xx SCSI support                  [N/y/m/?] y
        always negotiate synchronous transfers [N/y/?] (NEW) n
        allow FAST-SCSI [10MHz]                [N/y/?] (NEW) y
        allow DISCONNECT                       [N/y/?] (NEW) y

5.5 Medium errors

Als cdrecord medium errors meldt in de vorm van "Sense Key: ... Medium Error, Segment ...", dan is het medium niet leeg. Probeer over te schakelen van blank=fast naar de meer betrouwbare blank=all als je CD-RW’s gebruikt. Gebruik je alleen CD-R, zorg dan dat de CD-R nog nooit eerder een CD-writer heeft gezien voordat je discs uitprobeert van een andere fabrikant.

5.6 Nieuw geschreven CD’s zijn niet leesbaar op sommige spelers.

Een aantal mensen meldde problemen bij het afspelen van hun zelfbeschreven CD’s. Zeer oude audio-spelers of apparaten voor in de auto kunnen problemen hebben met CD-R’s, alhoewel dit heel zeldzaam is. Zeer frequent zijn problemen met CD-RW’s, omdat ze het laserlicht niet zo goed reflecteren als CD-R’s en door de fabriek geperste "silver"discs.

5.7 Mijn scanner werkt niet meer na het laden van de ide-scsi module

Door het invoegen van de SCSI-hostadaptor emulatie, wijzigt de benaming van SCSI-devices. Als je scanneer voorheen /dev/sg0 was, kan het nu /dev/sg1 of /dev/sg2 zijn. Vooraanstaande kernelontwikkelaars dachten niet na, en ontkende in het verleden oplossingen zoals devfs. Maar dat is een heel ander verhaal. Het eerste dat je zou moeten proberen is de link naar /dev/scanner in te stellen zodat het verwijst naar het werkelijke generic SCSI-device. Voorbeelden:

     cd /dev
     ls -l scanner     # toon de huidige instelling
     ln -sf sg2 scanner
     # test the scanner
     ln -sf sg1 scanner
     # test the scanner
     # and so on

Ontwikkelaars van toepassingen zouden eens zorgvuldig ondersteuning voor dit gevaarlijke en gevoelig voor fouten bevattende benoemingsschema moeten overdenken. Overweeg op z’n minst het gebruik van tussenoplossingen zoals de SCSI-coördinaten gebruikt door cdrecord.

6 Krediet

Veel dank aan de lezers van deze HOWTO, die actief een bijdrage leverden aan de inhoud. Aangezien ik zelf een aantal jaren geen toegang had tot een CD-writer, zijn verslagen over daadwerkelijke setups en ervaringen altijd van grote waarde voor me geweest.

Doug Alcorn <doug@lathi.net> hielp bij het verbeteren van de afhandeling door nieuwere kernels Kalle Andersson <kalle@sslug.dk>

Hoe audio’s te schrijven direct vanuit MP3. Alan Brown <alan@manawatu.net.nz> Rick Cochran <rick@msc.cornell.edu>

hint over het standaard verbreken/herstellen van de verbinding in de ncr driver Robert Doolittle <bob.doolittle@sun.com>

goede argumenten voor het laten vervallen van cdwrite uit de HOWTO Markus Dickebohm <m.dickebohm@uni-koeln.de> Thomas Duffy <tduffy@sgi.com>

belangrijke opschoning van syntax en spelfouten Dave Forrest <dforrest@virginia.edu>

adapter spellingsproblemen gecorrigeerd Jos van Geffen <jos@tnj.phys.tue.nl>

merkte het probleem in 4.9 op. Bernhard Gubanka <beg@ipp-garching.mpg.de>

merkte op dat een recente versie van mount nodig was om het loopback device te gebruiken Stephen Harris <sweh@mpn.com>

gaf een hint over het beschrijven van audio-CD’s Janne Himanka <shem@oyt.oulu.fi>

verwijzing naar de kernelpatch om Joliet CD-ROM’s te lezen Stephan Noy <stnoy@mi.uni-koeln.de>

informatie en ervaring over het beschrijven van audio CD’s Don H. Olive <don@andromeda.campbellsvil.edu>

URL van de mkhybrid tool Jesper Pedersen <jews@imada.ou.dk> Pierre Pfister <pp@uplift.fr>

hielp met de beschrijving van 1:1 kopieën Daniel A. Quist <dquist@cs.nmt.edu>

informatie over IDE CD-R en nieuwere kernelversies Martti.Rahkila@hut.fi

Meldde een probleem met voorgeïnitialiseerde writers wanneer via loadlin werd geboot. Dale Scheetz <dwarf@polaris.net> Joerg Schilling <schilling@fokus.gmd.de>

veel informatie over cdrecord Martin Schulze <joey@Infodrom.North.DE>

gaf informatie over de cdwrite-mailinglist Gerald C Snyder <gcsnyd@loop.com>

testte het beschrijven van een ext2 CD-ROM (zie 4.4) Art Stone <stone@math.ubc.ca>

had het idee niet-ISO-9660 bestandssystemen op een CD te plaatsen The Sheepy One <kero@escape.com>

deed de suggestie beschadigde CD-ROM’s als onderzetter voor drankjes te gebruiken Erwin Zoer <ezoer@wxs.nl> Ik zou bovendien de volgende mensen willen bedanken voor het melden van spelfouten: Bartosz Maruszewski <B.Maruszewski@zsmeie.torun.pl>, Alessandro Rubini <rubini@prosa.it>, Ian Stirling <ian@opus131.com>, Brian H. Toby. Einde van de Linux CD-Writing HOWTO. (Je kunt hier stoppen met lezen.)