Inhalt

6. Antworten auf häufig gestellte Fragen

6.1 Wie kann ein normaler Benutzer CD-ROMs mounten und unmounten?

Die meisten mount Versionen unterstützen die user Option. Wenn man einen Eintrag in /etc/fstab einfügt, wie

/dev/sbpcd  /mnt/cdrom   iso9660     user,noauto,ro

dann kann ein normaler Benutzer das Laufwerk mit folgenden Befehlen mounten und unmounten:

$ mount /mnt/cdrom
$ umount /mnt/cdrom

Per Voreinstellung werden die Discs mit einigen Optionen gemountet, die helfen, die Sicherheit des Systems zu erzwingen; z.B. können Programme nicht ausgeführt werden und Gerätedateien werden ignoriert. Sollte das zu restriktiv sein, können zusätzliche Optionen angegeben werden; z.B. erlaubt die Option exec das Ausführen von Programmen auf der CD-ROM. Sehen Sie in der Manual Page zu mount(8) für weitere Informationen.

Eine weitere Möglichkeit ist, das usermount Paket zu verwenden, mit dem normale Benutzer Wechselmedien wie Disketten und CD-ROMs mounten dürfen, aber der Zugriff auf andere Geräte wie Festplattenpartitionen eingeschränkt ist. Es kann von den geläufigen Archiv Sites bezogen werden.

Auf der Archiv Site ftp.cdrom.com steht die Quelldatei mount.c, die nur das Mounten von CD-ROMs für normale Benutzer erlaubt. Das Programm läuft setuid root.

6.2 Warum bekomme ich »device is busy« wenn ich eine CD-ROM unmounte?

Die Disc kann man nicht unmounten, wenn noch Prozesse auf das Laufwerk zugreifen oder ihr Arbeitsverzeichnis auf das gemountete Dateisystem gesetzt haben. Wenn man den Prozess, der die Disc verwendet, nicht identifizieren kann, kann man das fuser Kommando wie folgt verwenden:

$ umount /cdrom
umount: /dev/hdd: device is busy
$ fuser -v /cdrom
                     USER       PID ACCESS COMMAND
/mnt/cdrom           tranter    133 ..c..  bash

Auf einigen Systemen muß man der Benutzer root sein, um mit dem fuser Befehl die Prozesse von anderen Benutzern sehen zu können.

6.3 Wie kann ich mit NFS eine CD-ROM für andere Rechner freigeben?

Man muß dazu einen Eintrag in der Datei /etc/exports anlegen. Anwender auf anderen Rechnern sind dann in der Lage, das Gerät zu mounten. Sehen Sie in der Manual Page zu exports(5) für Details.

6.4 Kann ich Linux von einer CD-ROM booten?

Wenn man Linux zum ersten Mal installiert, verwendet man üblicherweise eine Boot Diskette. Manche Distributionen erlauben es, direkt unter DOS einen Kernel auf CD-ROM zu booten.

Mit der richtigen CD-ROM, ROM BIOS und ATAPI CD-ROM Laufwerk ist es möglich, direkt von CD zu booten. Die neueste Version von mkisofs unterstützt die Erstellung solcher CDs mittels des El Torito Standards für bootfähige CDs.

6.5 Wie kann ich Audio CDs digital auslesen?

Heiko Eissfeldt (heiko@colossus.escape.de) und Olaf Kindel haben ein Utility geschrieben, das Audio CDs ausließt und als Sounddateien im .wav Format abspeichert. Das Paket heißt cdda2wav.tar.gz und findet sich unter metalab.unc.edu.

Ein weiteres Utility um digitale Audio Daten zu lesen ist cdparanoia, erhältlich unter:

http://www.mit.edu/afs/sipb/user/xiphmont/cdparanoia

Da sich CD-ROM Laufwerke sehr schnell ändern, ist es schwer, diejenigen Modelle aufzuführen, die das digitale Auslesen von Audio Daten unterstützen. Am besten ist es, sich die neueste Version von cdda2wav oder cdparanoia zu besorgen, und die Dokumentation zu lesen.

Für weitere Informationen zu diesem Thema, Sehen Sie die Web Site

http://www.tardis.ed.ac.uk/~psyche/cdda/
und die im Abschnitt Referenzen aufgeführte FAQ alt.cd-rom.

6.6 Warum arbeitet der Befehl find nicht richtig?

Auf ISO-9660 formatierten Discs ohne die Rock Ridge Extensions muß man die Option -noleaf zum find Kommando angeben. Sehen Sie in der Manual Page zu find(1) für Details.

Nach meiner Erfahrung verwenden praktisch alle aktuellen Linux CDs die Rock Ridge Extensions, deshalb sollte das Problem sehr selten auftreten

6.7 Unterstützt Linux CD-ROM Brenner?

Das Paket X-CD-Roast für Linux ist ein graphisches Front-End für die Verwendung von CD-Brennern. Das Paket findet sich unter

metalab.unc.edu:/pub/Linux/utils/disk-management/xcdroast-0.95.tar.gz .

Sehen Sie auch im CD-Writing HOWTO.

6.8 Fehlermeldung »mount: Read-only file system«, beim Mounten der CD-ROM

CD-ROMs sind schreibgeschützte Medien. Mit einigen frühen Kerneln konnte man eine CD read/write mounten; Versuche zu schreiben, wurden einfach ignoriert. Seit Version 1.1.33 wurde dies korrigiert, und CD-ROMs müssen schreibgeschützt gemountet werden; d.h. mit der Option -r.

6.9 Warum öffnet sich das Laufwerk, wenn ich das System herunterfahre?

Der Treiber sbpcd unterstützt das automatische Auswerfen der CD, wenn sie ungemountet wird. In einigen älteren Kernelversionen war dies das Standardverhalten. Wenn das System heruntergefahren wird, wird eine gemountete CD ungemountet, und dadurch ausgeworfen.

Dieses Feature dient der Bequemlichkeit beim Wechseln der Disc. Wenn die Schublade beim Mounten der CD offen steht, wird sie auch automatisch eingezogen.

Ich habe herausgefunden, daß das mit einigen Programmen zu Problemen führt (z.B. cdplay und workbone). Seit dem Kernel 1.1.60 kann man dieses Feature per Software kontrollieren. In der sbpcd Dokumentation findet sich ein Beispielprogramm (oder verwende das Programm eject). Man kann das Standardverhalten auch in der Kernel Quelldatei sbpcd.h einstellen.

6.10 Ich habe eine »spezielle« CD, die sich nicht mounten läßt

Die »spezielle« CD ist wahrscheinlich eine XA Disc, so wie alle PhotoCDs. Die meisten Linux Kerneltreiber für CD-ROMs unterstützen keine XA Discs, aber vielleicht findet sich ein Patch auf einer der Archiv Sites, mit dem sich die Unterstützung hinzufügen läßt.

Der Treiber sbpcd unterstützt XA. Wenn man diesen Treiber verwendet, kann man mittels der folgenden Prozedur herausfinden, ob es sich um eine XA Disc handelt: Editieren Sie die Datei sbpcd.c, und schalten Sie die Anzeige der »Table of Contents« ein (DBG_TOC). Übersetzen, installieren und booten Sie den neuen Kernel. Während jedes mount-Vorgangs wird das Inhaltsverzeichnis entweder auf der Console oder in eine Log Datei ausgegeben. Wenn der erste Wert im Header des Inhaltsverzeichnisses die »20« ist, dann handelt es sich um eine XA Disc. Das Byte ist »00« für normale CDs. Wenn das Inhaltsverzeichnis unterschiedliche Tracks anzeigt, ist dies auch ein Hinweis auf eine XA Disc.

(Dank an Eberhard Moenkeberg für die obige Information)

Andere Möglichkeiten für nicht lesbare CDs sind:

  1. Die Disc verwendet kein ISO-9660 Dateisystem; z.B. verwenden manche SunOS oder HFS.
  2. Es handelt sich um eine Audio CD.
  3. Die CD ist beschädigt.
  4. Man hat die CD verkehrt herum eingelegt :-).

6.11 Laufen CD-Wechsler unter Linux?

Einige Anwender haben Erfolg mit SCSI Mehrfach CD-ROM-Wechslern gemeldet. Sie müssen sehr wahrscheinlich die Kernel Konfigurationsoption »Probe all LUNs on each SCSI device« einschalten; das ist nicht notwendig, wenn der CD-Wechsler schon unter Linux bekannt ist. Sehen Sie unter /usr/src/linux/drivers/scsi.c.

Wenigstens sollte man den Wert für SCSI Timeout im Kernel Treiber erhöhen. Ein Symptom dafür ist eine Fehlermeldung wie »wrong fs type, bad option, bad superblock on /dev/sr5, or too many mounted file systems«, wenn man zum ersten mal versucht, eine CD zu mounten, aber sofort beim zweiten mal Erfolg hat. Um den Timeout zu erhöhen, erhöht man den Wert von IOCTL_TIMEOUT am Anfang von /usr/src/linux/drivers/scsi/sr_ioctl.c und übersetzt den Kernel neu. Ein Wert von 10000 statt dem vorgegebenen 3000 soll mit einem NEC Multispin 4Xc funktionieren.

Es kann nötig sein, zusätzliche Block-Gerätedateien anzulegen, um auf alle LUNs zugreifen zu können. Für jede LUN wird eine Gerätedatei benötigt. Für einen siebenfach Wechsler muß man also /dev/sr0 bis /dev/sr6 oder mehr, wenn man weitere SCSI CD-ROM Laufwerke hat, anlegen. Um die Gerätedateien anzulegen, führt man als root

mknod /dev/sr? b 11 ?
mit der jeweiligen Zahl für ? aus.

Es wird berichtet, daß der Nakamichi MBR-7 7 CD-Wechsler, der NEC Multispin 4Xc und der Pioneer 12 CD-Wechsler funktionieren.

Es sind auch EIDE/ATAPI Mehrfach CD-Wechsler erhältlich. Der Kernel hat mit der Funktion CDROM_SELECT_DISC ioctl Unterstützung für einige Laufwerke. Der IDE-CD Kerneltreiber beinhaltet den Quellcode für ein Programm, um den Wechsler-Slot auszuwählen, oder man kann diverse Utilities wie das oben genannte eject Programm verwenden.

6.12 Ich erhalte »/cdrom: Permission denied« Fehlermeldungen

Manche CDs haben im Wurzelverzeichnis die Zugriffsrechte so gesetzt, daß nur der Benutzer root sie lesen kann. Das ist ein Fehler vom Hersteller, und ein echtes Ärgernis. Ein weiter verbreitetes Problem ist, daß bestimmte Dateien oder Verzeichnisse nicht von jedem gelesen werden können. Manche Leute haben ihren Kernel gepatcht, um das Problem zu umgehen.

Sehen Sie auch die Frage zu versteckten Dateien weiter unten.

6.13 Wie kann ich die IDE CD Kernel Fehlermeldungen interpretieren?

Was bedeutet es, wenn ich vom IDE CD-ROM Treiber eine Fehlermeldung in der Art »hdxx: code: xx key:x asc: xx ascq: x« bekomme?

Hierbei handelt es sich um eine Status-/Fehlermeldung vom IDE CD-ROM Laufwerk. Standardmäßig gibt der IDECD Treiber die puren Informationen aus, statt Kernel Speicher mit Fehlermeldungen zu verschwenden. Man kann die Vorbelegung ändern, indem man VERBOSE_IDE_CD_ERRORS in der Datei /usr/src/linux/drivers/block/ide-cd.c auf 1 setzt und den Kernel neu übersetzt.

6.14 Wie kann ich die Geschwindigkeit meines CD-ROM Laufwerks ermitteln?

Hier ist eine Möglichkeit. Dieser Befehl misst, wie lange es dauert, um 1500K Daten von der CD zu lesen:

$ time -p dd if=/dev/cdrom of=/dev/null bs=1k count=1500
1500+0 records in
1500+0 records out
real 5.24
user 0.03
sys 5.07

Die Transferrate von Laufwerken mit einfacher Geschwindigkeit beträgt 150 Kilobytes pro Sekunde, was ca. 10 Sekunden dauern sollte. Bei doppelter Geschwindigkeit würde es fünf Sekunden dauern, bei vierfacher 2,5 usw..

Die »real« Zeit sollte der beste Wert sein - im Beispiel würde es ein Laufwerk mit doppelter Geschwindigkeit kennzeichnen. Man kann die Datenmenge erhöhen, um einen genaueren Wert zu erhalten. Falls Sie sich gerade fragen sollten, die Daten werden nicht gecachet. Am besten führt man den Befehl einige Male aus, und nimmt den Mittelwert.

Ich habe auch ein kleines Programm in C geschrieben, das die Transferrate von CD-ROMs misst und anzeigt; auf Anfrage kann ich es Ihnen zusenden.

6.15 Mein CD-ROM Laufwerk geht nicht mehr, seit ich Linux installiert habe

Normalerweise ist das Symptom, daß die Boot Diskette, mit der Linux zuerst installiert wurde, das CD-ROM Laufwerk erkannte, aber nicht mehr, nachdem Linux auf die Festplatte oder Diskette installiert und neu gebootet wurde.

Die häufigste Ursache für dieses Problem ist, daß bei manchen Distributionen der Kernel, der auf die Festplatte (oder die Diskette) installiert wird, nicht der selbe ist, wie auf der Boot Diskette. Man sucht sich eine Boot Diskette aus, die zur CD-ROM Hardware passt, während der installierte Kernel ein »generischer« Kernel ist, der keine CD-ROM Unterstützung hat. Man kann das prüfen, indem man den Anweisungen im Abschnitt Problembehebung weiter oben im Dokument folgt; z.B. indem man die Datei /proc/devices/überprüft.

Die Lösung ist, den Kernel neu zu übersetzen, und sicherzustellen, daß die Treiber für das CD-ROM Laufwerk und anderes benötigte (z.B. SCSI Controller, ISO-9660 Dateisystem) eingebunden sind. Sehen Sie im Kernel HOWTO, wenn Sie nicht wissen, wie das geht.

Wenn man Kommandozeilen Optionen an die Boot Diskette übergeben hat (z.B. »hdc=cdrom«), muß man diese auch in die Konfigurationsdatei des Boot Programms eintragen (normalerweise /etc/lilo.conf).

6.16 Es sind »versteckte« Dateien auf einer CD, die ich nicht lesen kann

Manche CDs besitzen Dateien mit gesetztem »hidden« Bit. Normalerweise sind diese Dateien nicht sichtbar. Wenn man die Disc mit der Option "unhide" mountet, sollte man Zugriff auf diese Dateien haben; das scheint sonst nirgends dokumentiert zu sein.

6.17 Wo ist die CD-ROM API dokumentiert?

Wenn man seine eigenen Anwendungen schreiben will, wie etwa einen CD Spieler, muß man das Application Programming Interface (API) von Linux kennen.

Am Anfang verwendeten die Kernel CD-ROM Treiber ihre eigenen ioctl() Funktionen, um die speziellen Features der einzelnen Laufwerke zu unterstützen. Die Header Dateien wie /usr/include/linux/sbpcd.h beschreiben diese. Weil viele der Treiber auf anderen Treibern basieren, haben die Schnittstellen, obwohl sie nicht identisch sind, viel gemeinsam.

Vor kurzem gab es eine Initiative, geführt von David van Leeuwen (david@tm.tno.nl), um die API für CD-ROM Treiber zu standardisieren, den gemeinsamen Code an eine Stelle zu verfrachten, und sicherzustellen, daß alle Treiber das selbe Verhalten zeigen. Dies ist in der Datei /usr/src/linux/Documentation/cdrom/cdrom-standard.tex dokumentiert. Verschiedene Kernel Treiber unterstützen das. Seit dem Kernel 2.0 sind alle CD-ROM Treiber zu dieser API konform.

Das Buch des Autors, Linux Multimedia Guide, geht ziemlich ins Detail, wie man CD-ROM Laufwerke programmiert, speziell in Bezug auf Audio Funktionen. Sehen Sie am Ende des Abschnittes Referenzen.

6.18 Warum sehe ich keine langen Dateinamen auf dieser Windows CD-ROM?

Wenn man eine CD hat, die unter Windows lange Dateinamen hat, aber nicht unter Linux, ist sie möglicherweise mit Microsofts proprietärem Joliet Dateisystem formatiert. Sehen Sie die nächste Frage für eine Lösung.

6.19 Wird Microsofts Joliet Dateisystem unterstützt?

Microsoft hat eine Erweiterung zum ISO CD-ROM Format geschaffen, die Joliet heißt. Sie erlaubt die Kodierung von langen Dateinamen im 16-Bit UNICODE Format.

Der Linux Kernel seit der Version 2.0.34 unterstützt die Dateisystem Erweiterung Joliet von Microsoft. Man muß die Unterstützung im Kernel aktivieren.

Wenn man lange Dateinamen mit landesspezifischen Zeichen auf einer Joliet CD-ROM korrekt am Bildschirm sehen möchte, muß man die Unterstützung für die entsprechenden NLS ISO8859 Zeichensätze im Kernel aktivieren.

6.20 Unterstützt Linux »erweiterte« CDs?

Manche Audio CDs sind durch zusätzliche Daten »erweitert«. Typischerweise stellt man fest, daß diese CDs sowohl die normalen Audio Tracks haben, als auch einen Daten Track, den man als ISO-9660 Dateisystem mounten kann.

Eine erweiterte CD, die ich untersucht habe, hatte Microsoft Windows und Apple Macintosh Applikationen (die natürlich nicht direkt unter Linux laufen, obwohl ich teilweisen Erfolg hatte, indem ich die Windows Anwendungen mit Hilfe von WINE dem Windows Emulator laufen lies). Es existierten einige GIF Bilder, die man mit einem Standard Viewer wie xv betrachten konnte, und einige Animationen im Apple QuickTime Format, die man mit xanim anzeigen lassen kann. Es handelte sich um eine Multisession Disc, die manche sehr alte CD-ROM Laufwerke nicht lesen können. Auf der Disc war eine readme.txt Datei, mit einem erweiterten CD FAQ.

6.21 Unterstützt Linux DVD-ROM?

SCSI und ATAPI konforme DVD-ROM Laufwerke sollten unter Linux arbeiten, um ISO-9660 formatierte Discs zu lesen. In anderen Worten arbeiten sie als ein (wahrscheinlich sehr großes) CD-ROM Laufwerk.

Viele DVD-ROM Discs verwenden das UDF Dateisystem. Im Moment ist dieses noch in der Entwicklung. Kernel Patches sind unter

http://trylinux.com/projects/udf/
erhältlich.

Wie auch immer, ich weiß nichts von irgendeiner Unterstützung für das Abspielen von MPEG-2 kodierten DVD Videos, weder softwaremäßig, noch in Verbindung mit einem DVD Decoder. Offenbar kann das Standard Dokument für das Kodierungsformat nur mit hohen Kosten und einem Non-Disclosure Agreement erstanden werden. Ein weiterer Punkt ist, daß die MPEG Dekodierung normalerweise proprietäre Hardware verwendet, über die die Hersteller keine Programmier-Informationen herausgeben wollen. Diese Faktoren schließen es womöglich aus, daß für Linux frei verfügbare DVD Video Software entwickelt wird.

6.22 Unterstützt Linux CD-RW?

SCSI und ATAPI konforme CD-RW Laufwerke sollten unter Linux für Discs, die mit einem ISO-9660 Dateisystem formatiert sind, funktionieren. Das schließt die Fähigkeit zu Schreiben ein.

Viele CD-RW Discs verwenden das UDF Dateisystem, daß momentan noch in der Entwicklung ist. Kernel Patches sind unter

http://trylinux.com/projects/udf/
erhältlich.


Inhalt