Bruk av CD-ROM/CD-R på pckjemi111

av Hans Peter Verne, November 2000.

(Best Viewed With Any Browser) (PNG now!)


Innledning

Dette er en veiledning i å bruke CD'er under Linux, både i å lese vanlige CD'er, spille musikk-CD'er, og å brenne egne plater. Maskinen pckjemi111 er brukt som eksempel, men det skulle ikke være så veldig annerledes med andre maskiner som er satt opp tilsvarende.

Oppskriftene gitt her kan virke ganske omstendelige. Enklere metoder kunne trolig brukes, men med metoden gitt her er brukeren forhåpentligvis bedre i stand til å løse problemene selv hvis noe skjærer seg. Nøl likevel ikke med å kontakte meg hvis noe er uklart eller man står fast.

Generelt

pckjemi111 er utstyrt med en plextor SCSI CD-R-enhet (typebetegnelse PX-R820-Ti). Denne kan brukes til å «brenne» spesielle CD-plater (CD-R), men den kan også lese vanlige (eller egenbrente) CD'er. Under Linux er hardware-enheter gjerne assosiert med et filnavn som brukes når enheten skal aksesseres. Filnavnet for CD-enheten er /dev/scd0, som skal tolkes som «første SCSI-cd». Det er også en softlink /dev/cdrom som refererer til scd0. Mange programmer vil automatisk bruke /dev/cdrom, og dette navnet er også litt lettere å huske.

CD-brenneren har også et navn til: /dev/sg1. Dette skal tolkes som «andre generiske SCSI-enhet». Dette navnet brukes også av og til. (Den første SCSI-enhet er harddisken, /dev/sg0. I Unix teller man fra 0.) Av og til kalles disse også /dev/sga, /dev/sgb, osv.

Hvis man stokker om på SCSI-ID'ene (eller hekter på en enhet med lavere ID) vil disse device-navnene kunne forandre seg. Du kan finne ut hvilken rekkefølge de forskjellige SCSI-enhetene ligger i med kommandoen cdrecord -scanbus.

En data-CD kan vanligvis ta opp til 650 Megabytes (MB) med data. Mer presist kan den bestå av 333000 sektorer, som hver tar 2048 bytes, altså 681984000 bytes. Dette tilsvarer da 681984000/(1024*1024) = 650.39MB. Det finnes også CD'er som tar 700MB, men disse er gjerne dyrere. En CD kan eventuelt ha plass til 74 minutter lyd.

[frontpanelet på CD-brenneren]

Kommandoen eject kan brukes til å åpne CD-skuffen, eller man kan bruke knappen nederst til høyere på enhetens frontpanel. Begge deler forutsetter at CD-enheten ikke er i bruk, dvs. at en disk ikke er montert eller lignende.

På frontpanelet står det «8/20», som betyr at h.h.v. skrive- og lesehastigheten er 8 og 20 ganger «standard» CD-hastighet, som er ca. 150 kilobyte per sekund (kB/s). En CD tar som nevnt ca. 650000kB, så det vil da ta ca. 650000/(8*150) = 542 sekunder = 9 minutter å brenne en full CD. Sånn omtrent, legg til et minutt eller to i praksis.

Ikke alle CD-R-plater er laget for å kunne brennes i hastighet 8. Det er gjerne notert på etiketten hvilke hastigheter man kan bruke, eller man kan prøve seg fram (på bekostning av noen ødelagte plater...). Se også beskrivelsen nedenfor av speed-opsjonene til cdrecord og cdrdao.

Et SCSI-system er avhengig av at kabelen er riktig terminert. Jeg har opplevd problemer på pckjemi111 som jeg tror henger sammen med mangelfull terminering og/eller for lange kabler. Jeg vil derfor (inntil videre) anbefalle følgende før bruk av CD-brenneren på pckjemi11:

    Hvis scanneren (ARCUS) er tilkoblet:
  1. Skru av maskinen
  2. Ta av terminatoren fra enden av SCSI-kabelen.
  3. Ta ut SCSI-kabelen fra scanneren, ie. den som går fra maskinen og inn i scanneren
  4. Fest terminatoren på den løse enden av kabelen som kommer fra maskinen (ie. der hvor scanneren satt). Systemet skal nå se omtrent slik ut:

  5. Skru på maskinen, boot Linux.
Når man er ferdig med å brenne kan scanneren settes inn i SCSI-kjeden igjen. Husk å skru av maskinen før du kobler fra SCSI-kontaktene, og husk terminatoren i enden.

Mange av de filene man leser fra (eller skal skrive til) en CD kan bli ganske store. Noen er satt opp med en begrensning i hvor store filer man kan lage, så hvis du får en feilmelding av typen Filesize limit exceeded el.l. er det dette som er årsaken. I de skallene (xterm'ene) man skal kjøre mkisofs, cdparanoia m.m. bør man derfor gi en av kommandoen

  limit filesize unlimited         (tcsh)
  ulimit -f unlimited              (bash)
Denne veiledningen forutsetter at du har /usr/bin før /kjemi/bin i din PATH-variabel. Noen av programmene ligger begge steder, og f.eks. /kjemi/bin/cdrecord vil ikke virke helt ifølge denne oppskriften.

Tilgangen til CD-brenneren er bestemt av tilgangen til device-filene /dev/scd0 og /dev/sg1 (eller /dev/sgb). I praksis må begge disse være skrive- og lesbare for å bruke CD-brenneren som beskrevet her. På pckjemi111 er dette ordnet ved at device-filene tilhører gruppen ged, og at gruppen har disse rettighetene. Brukeren må altså være med i gruppa ged for å bruke cdparanoia, cdrdao, osv. Kommandoen ypmatch kan fortelle deg hvem som er med i en gruppe.

Noen programmer kan også være såkalt setuid root, dvs. at de har rootprivilegier når de kjører.

Lesing av data-CD'er

Alle filene på CD'en skal nå være tilgjengelig under /cdrom, man kan kopiere filer herfra til hjemmeområdet sitt el.l. Når man er ferdig må man avmontere CD'en: Man må passe på å ikke være i filområdet /cdrom, eller ha noen filer på CD'en åpne, ellers vil man ikke få avmontert den.

Vanligvis kan bare «superbruker» (av-)montere CD'er, men pckjemi111 er satt opp så alle brukere kan gjøre dette. Det er fordi fila /etc/fstab (file system table) inneholder linja

  /dev/cdrom      /cdrom        iso9660 ro,user,noauto 
Merk «user» over. ro betyr read-only, mens noauto betyr at CD'en ikke monteres automatisk ved oppstart.

Spilling av musikk-CD'er.

Det er ikke noe lydkort i pckjemi111, så for å få noen glede av dette må man ha hodetelefoner som kan plugges rett inn i CD-spilleren. Det finnes forøvrig et utall programmer som kan spille CD'er, men om disse er installert er et annet spørsmål...

Brenning av CD'er

Data-CD'er

[bilde av CD-R eske] CD-brenning er en todelt prosess: Først skal alle dataene samles i en stor fil, et såkalt ISO-9660 image eller bare isoimage. Deretter skal denne fila brennes til CD.
  1. Alle filene (og filområder) som skal brennes må samles under ett filområde. Dette kan være et filområde på hjemmeområdet ditt, eller du kan lage et område på /work eller /work2 og kopiere filene dine dit. I den følgende diskusjon antar jeg du har laget området /work/kakeoppskrifter og kopiert filene dine dit.

  2. Bruk kommandoen
      du -ms /work/kakeoppskrifter
    for å sjekke hvor mye plass du bruker (i MB). En CD tar som nevnt ca. 650MB, så du bør være under dette.

  3. Isoimage'et tar omtrent like stor plass, så sjekk hvor du kan gjøre av det:
      df -m /work
    Tallet under «Available» skal altså være minst like stort som det du fikk fra du -m. Prøv med /work2 eller kanskje /tmp hvis ikke /work er stort nok. I det følgende antar jeg at /work kan brukes. Du bør ikke bruke en nettverks-disk til dette, altså ikke hjemmeområdet ditt eller f.eks. /kjemi/tmp.

  4. Gi kommandoen
      mkisofs -a -r -T -L -J -o /work/kake.iso /work/kakeoppskrifter
           
    for å lage isoimage'et. Dette vil ta litt tid. Du kan bruke mkisofs --help for en rask oversikt over hva de forskjellige opsjonene gjør. Kanskje vil du også ha med -V navn for å gi CD'en et navn.

  5. Legg en blank CD-R-plate i brenneren, og prøve-brenn det ferdige isoimage'et med kommandoen
      cdrecord  -dummy -v  dev=/dev/sg1 /work/kake.iso
    Du vil kanskje ha med opsjonen speed=4 (f.eks.), hvis CD-platen ikke er laget for høyere hastigheter.

    Dette er som sagt en prøve-brenning, dvs. at maskinen vil gjøre alt som skal gjøres under en virkelig brenning, bortsett fra at brenne-laseren er avskrudd. Dette gir en indikasjon på om SCSI-forbindelsen virker som den skal, og er absolutt å anbefalle. Hvis alt går bra kan du brenne CD'en ordentlig med kommandoen over, men uten -dummy.

  6. Når brenningen er ferdig bør du sjekke at alle filene er på plass. Monter CD'en, og kjør f.eks.
      diff -r /work/kakeoppskrifter  /cdrom | grep -v TRANS.TBL
    Vi filtrerer bort meldinger om fila TRANS.TBL med grep -v. All annen utput vil trolig angi at noe gikk galt med brenningen.

  7. Rydd opp etter deg, dvs. slett /work/kakeoppskrifter og /work/kake.iso. Det er ikke garantert at filer på /work og /work2 blir liggende over lengere tid.

Musikk-CD'er

Programmet cdrecord kan også brenne lyd-filer på WAV-format til CD, så man kan høre på den hjemme i stua. Bruk kommandoen
  cdrecord -v -pad -audio fil1.wav fil2.wav fil3.wav ... 
for å brenne filene til disk. Husk også dev=/dev/sg1, og eventuelt speed=4 el.l.

Hvis man vil lese musikk-spor fra en CD kan man bruke programmet cdparanoia. Man kan lese en eller flere spor fra CD'en til én fil, eller man kan legge hvert spor på hver sin fil:

  mkdir /work/meg
  cd /work/meg
  cdparanoia  2  spor2.wav     # les spor 2 til fila spor2.wav
  cdparanoia  --batch          # les alle sporene til track*.cdda.wav
Se ellers man cdparanoia for mer info.
Lese-problemer
cdparanoia er ganske pirkete når den leser en CD. En feilfri CD'en uten riper mm. vil vanligvis leses i løpet av en 15-30 minutter, men er det mange feil vil programmet prøve å lese sporet mange ganger for å korrigere feilen. Det er imidlertid langt fra sikkert at sporet blir lest feilfritt, og dette kan gi diverse hørbare utslag. Dessuten tar lesingen lengere tid, kanskje flere timer, endog flere døgn!

Mens cdparanoia leser et spor skriver den en slags status-linje på skjermen, den kan se f.eks. slik ut:

 (== PROGRESS == [    --- + !!!  V  e       >   | 016454 00 ] == :-)   ==) 
Tegnet > flytter seg mot høyere, og markerer fremdriften. Tegnene fra [ og utover (-+!Ve) er problemer av forskjellig art. Det alvorligste er V, og får du noen slike er det ganske sannsynlig at sporet har hørbare defekter.

Får du problemer er dette noen forslag til hva du kan gjøre:

  1. Tørke forsiktig av undersiden av CD'en med en tørr, lofri klut. Tørk radielt, ie. fra sentrum og utover. En platebutikk vil neppe anbefalle deg å vaske plata med såpe og vann, men hvis du gjør det må du passe på at du tørker den godt.
  2. Prøv en annen CD-ROM-leser. F.eks. har jeg oppnådd bedre resultater på marlon og isengard.
  3. Lag et analogt opptak. Da overlater du feilkorreksjonen til hardware'en i CD-spilleren, på bekostning av støy i de analoge delene. Du må ha et lydkort, og koble CD-spilleren til det. På marlene kan du pt. bruke den øverste CD-spilleren og programmet cdsound-recorder.
Kontakt meg gjerne hvis du får problemer.
MP3
Musikk-filer kan man ofte finne på nettet i MP3-format. Dette formatet kan dekodes til WAV med kommandoen
  /kjemi/hacks/bin/mpg2wav  fil.mp3  /work/fil.wav
Dette forutsetter at mp3-fila var laget fra et CD-spor (44100 Hz, etc), men det er de fleste mp3-filer på nettet. Hvis du selv vil lage mp3-filer kan du prøve /kjemi/bin/gogo.

Disse WAV-filene kan så brennes til en ny CD med cdrecord, som angitt over.

«Disk-At-Once»
En ulempe med metoden over er at det blir 2 sekunders pause mellom hvert lydspor. F.eks. på CD'er med konsertopptak kan dette bli sjenerende. Derfor kan man bruke programmet cdrdao for brenne CD'er i såkalt disk-at-once modus (DAO). Legg CD'en du vil kopiere i CD-skuffen og gi kommandoen
  mkdir /work/mydir         # Viktig: lag ditt eget filområde ... 
  cd /work/mydir            # .. og flytt dit.
  cdrdao read-cd  --driver plextor --datafile navn.cdr navn.toc
cdrdao leser device-fila /dev/cdrecorder, som er en link til /dev/sg1. Du må selv finne på passende navn. Dette lager én stor data-fil, samt en «table of contents»-fil (toc). Pga. en bug i cdrdao blir data-fila ofte laget med root som eier, så det er viktig å legge den i et filområde du selv eier, ellers får du ikke slettet fila etterpå. Så må du legge en blank CD i brenneren, og gi kommandoen
  cdrdao simulate navn.toc
Hvis dette gikk bra (ingen skumle feilmeldinger) kan du bytte ut simulate med write, og brenne ordentlig. Hvis du ikke vil brenne i full hastighet kan du bruke f.eks. --speed 4 for å brenne i 4x.

Man kan også brenne i DAO-modus med individuelle WAV-filer. Se man cdrdao for mer detaljer om dette.

DOA-lesing gir deg færre muligheter for å oppdage og rette opp spor med lese-feil, så jeg vil ikke anbefalle denne metoden med mindre man først kan verifisere (med cdparanoia) at alle sporene kan leses uten problemer.

Diverse

CD-brenneren må få en kontinuerlig tilførsel av data, hvis den blir avbrutt er plata ødelagt. Av den grunn bør man være forsiktig med å blokkere SCSI-bussen med f.eks. å bruke scanneren mens man brenner.

En CD kan i utgangspunktet kun brennes én gang. Det er mulig å brenne med såkalt «multi-session» modus, hvor du da kan legge flere spor etter hverandre. Du mister dog en del kapasitet på CD'en, og det er endel plunder forbundet med dette. Jeg har liten erfaring med multi-session, de som vil eksperimentere kan kikke i manualen til cdrecord oa.

Til sist skal nevnes at xcdroast også kan brukes til å brenne CD'er. Dette programmet har grafisk grensesnitt og er kanskje enklere å bruke, men jeg har ikke prøvd det. Fila /usr/doc/xcdroast/README.html forteller mer om dette.

Noen referanser er

Ellers får man kikke i manualene for de programmene som er angitt her for å finne flere finesser, f.eks. hvordan man kan brenne både et isoimage og WAV-filer på samme CD.
homepage .....

Email address: download gif image to read address.