PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mit Samba eine Audio-CD zur Verfügung stellen



LarsThorwald
08.01.09, 00:19
Hallo zusammen,

ist es möglich, über Samba eine Audio CD, die sich im CD Laufwerk befindet, freizugeben? Wie ich lesen mußte, können Audio CDs mount xyz bzw. über die fstab nicht eingebunden werden.

Gruß
Lars

3qualizer
08.01.09, 07:35
Audio CD's haben kein Dateisystem. Allerdings könntest du ein Pseudo-Dateisystem benutzen das die Tracks als Dateien darstellt und den Mount-Point kannst du dann wieder in Samba einrichten.

LarsThorwald
08.01.09, 10:38
Audio CD's haben kein Dateisystem. Allerdings könntest du ein Pseudo-Dateisystem benutzen das die Tracks als Dateien darstellt und den Mount-Point kannst du dann wieder in Samba einrichten.

Moin,

wie kann ich denn ein Pseudo-Dateisystem angeben? Ich habe es mit iso9660 probiert. Leider ohne Erfolg.

Gruß
Lars

3qualizer
08.01.09, 11:03
iso9660 ist auch das "normale" Dateisystem für Daten-CD's. Es gibt wohl mehrere in Frage kommende Dateisysteme, siehe Filesystems-Howto (http://tldp.org/HOWTO/Filesystems-HOWTO-8.html#ss8.8).

LarsThorwald
08.01.09, 12:32
iso9660 ist auch das "normale" Dateisystem für Daten-CD's. Es gibt wohl mehrere in Frage kommende Dateisysteme, siehe Filesystems-Howto (http://tldp.org/HOWTO/Filesystems-HOWTO-8.html#ss8.8).

Danke für den Link,

ich habe mir CDFS (2.6.27) herunter geladen (der dort angegebene Link funktioniert nicht, aber google ;)). Beim installieren erhalte ich aber jetzt folgende Fehlermeldung:

Tux:/mnt/HDD2/FTP/Lars/cdfs/cdfs-2.6.27 # ls -l
total 164
-rwxr--r-- 1 lars users 178 Dec 8 14:21 CHANGES
-rwxr--r-- 1 lars users 17982 Dec 8 14:21 COPYING
-rwxr--r-- 1 lars users 3796 Dec 8 14:21 INSTALL
-rwxr--r-- 1 lars users 387 Dec 8 14:21 Makefile
-rwxr--r-- 1 lars users 6183 Dec 8 14:21 audio.c
-rwxr--r-- 1 lars users 5196 Dec 8 14:21 cdXA.c
-rwxr--r-- 1 lars users 5441 Dec 8 14:21 cddata.c
-rwxr--r-- 1 lars users 5930 Dec 8 17:29 cdfs.h
-rwxr--r-- 1 lars users 15202 Dec 8 14:21 cdfs.html
-rwxr--r-- 1 lars users 5893 Dec 8 14:23 daemon.c
-rwxr--r-- 1 lars users 617 Dec 8 14:21 discid.c
-rwxr--r-- 1 lars users 7044 Dec 8 14:21 hfs.c
-rwxr--r-- 1 lars users 5436 Dec 8 14:21 iso.c
-rwxr--r-- 1 lars users 640 Dec 8 14:21 patch.cdfs
-rwxr--r-- 1 lars users 12789 Dec 8 14:21 proc.c
-rwxr--r-- 1 lars users 22041 Dec 8 14:24 root.c
-rwxr--r-- 1 lars users 6940 Dec 8 14:21 toc.c
-rwxr--r-- 1 lars users 2175 Dec 8 14:21 utils.c
Tux:/mnt/HDD2/FTP/Lars/cdfs/cdfs-2.6.27 # make install
make -C /lib/modules/2.6.27.7-9-pae/build SUBDIRS=/mnt/HDD2/FTP/Lars/cdfs/cdfs-2.6.27 modules_install
make[1]: Entering directory `/usr/src/linux-2.6.27.7-9-obj/i386/pae'
make[1]: *** No rule to make target `modules_install'. Stop.
make[1]: Leaving directory `/usr/src/linux-2.6.27.7-9-obj/i386/pae'
make: *** [install] Error 2

Wo liegt hier der Fehler? Ein ./configure kennt er nicht. Das Verzeichnis "/usr/src/linux-2.6.27.7-9-obj/i386/pae" existiert auf meinem Rechner!

Danke vorab für die Bemühung :)

Gruß
Lars

3qualizer
08.01.09, 12:40
Vielleicht kannst und solltest du dir das kompilieren sparen und es gibt bereits fertige Pakete bei SuSE (cdfs, cddafs, cdda-fs oder ähnlich). Hab leider keins da zum nachsehen ;)

LarsThorwald
08.01.09, 13:30
Vielleicht kannst und solltest du dir das kompilieren sparen und es gibt bereits fertige Pakete bei SuSE (cdfs, cddafs, cdda-fs oder ähnlich). Hab leider keins da zum nachsehen ;)

Im Yast fand ich es jetzt unter cdda. cdfs konnte ich vorab nicht finden. Er installierte mir jetzt auch die Library. Nur mit dem einbinden funktioniert es nicht.
Suse spuckt zur dieser Library keine Hilfe aus und laut Internet soll man wie folgt das ganze mounten:

mount -t cdfs -o ro /dev/cdrom /mnt/cdfs

Ich erhalte aber dann die Fehlermeldung, dass das Dateisystem unbekannt sei. Einen passenden Eintrag im Run Leveleditor fand ich nicht dazu.

Gruß
Lars

3qualizer
09.01.09, 07:29
Ich hab mir jetzt ein openSUSE 11.1 installiert (um mal wieder über den Tellerrand zu schauen, natürlich per VMware) ^^

Falls du libcdio_cdda0 meinst, das ist etwas anderes.

Die cdfs Datei die du heruntergeladen hast enthält eine Anleitung zur Installation (INSTALL).

Nachdem ich die Kernel-Sourcen und die GCC installiert habe kahm ich auch etwas weiter. Allerdings scheint es bei 2.6.23 eine Änderung gegeben zu haben so das das kompilieren nicht klappt:


> make
make -C /lib/modules/2.6.27.7-9-pae/build SUBDIRS=/home/three/cdfs-2.6.27 modules
make[1]: Entering directory `/usr/src/linux-2.6.27.7-9-obj/i386/pae'
make -C ../../../linux-2.6.27.7-9 O=/usr/src/linux-2.6.27.7-9-obj/i386/pae/. modules
CC [M] /home/three/cdfs-2.6.27/root.o
CC [M] /home/three/cdfs-2.6.27/audio.o
CC [M] /home/three/cdfs-2.6.27/cdXA.o
CC [M] /home/three/cdfs-2.6.27/cddata.o
/home/three/cdfs-2.6.27/cddata.c:85: error: unknown field ‘sendfile’ specified in initializer
/home/three/cdfs-2.6.27/cddata.c:85: error: ‘generic_file_sendfile’ undeclared here (not in a function)
make[4]: *** [/home/three/cdfs-2.6.27/cddata.o] Fehler 1
make[3]: *** [_module_/home/three/cdfs-2.6.27] Fehler 2
make[2]: *** [sub-make] Fehler 2
make[1]: *** [all] Fehler 2
make[1]: Leaving directory `/usr/src/linux-2.6.27.7-9-obj/i386/pae'
make: *** [all] Fehler 2

Nachdem ich den Mini-Patch vom Arch Linux Forum (http://bbs.archlinux.org/viewtopic.php?id=38894) angewandt habe hat das kompilieren geklappt:


--- cddata.c
+++ cddata.c
@@ -82,7 +82,7 @@
.mmap = generic_file_mmap
#else
.mmap = generic_file_readonly_mmap,
- .sendfile = generic_file_sendfile
+ .splice_read = generic_file_splice_read
#endif
};


Anschliessend noch ein "make install" und ein "depmod -a" sowie ein "modprobe cdfs" und schon konnte ich eine Audio-CD mounten :)


$ make install
make -C /lib/modules/2.6.27.7-9-pae/build SUBDIRS=/home/three/cdfs-2.6.27 modules_install
make[1]: Entering directory `/usr/src/linux-2.6.27.7-9-obj/i386/pae'
make -C ../../../linux-2.6.27.7-9 O=/usr/src/linux-2.6.27.7-9-obj/i386/pae/. modules_install
INSTALL /home/three/cdfs-2.6.27/cdfs.ko
DEPMOD 2.6.27.7-9-pae
make[1]: Leaving directory `/usr/src/linux-2.6.27.7-9-obj/i386/pae'

$ depmod -a

$ modprobe cdfs

$ mount -t cdfs -o ro /dev/cdrom /mnt/test

$ ll /mnt/test
total 0
-r--r--r-- 1 root root 7681676 Jan 9 06:14 track-01.wav
-r--r--r-- 1 root root 58694204 Jan 9 06:14 track-02.wav
[...]

LarsThorwald
09.01.09, 11:02
Super,
werde ich heute Nachmittag ausprobieren. Vielen Dank für deine Bemühungen!

Gruß
Lars

LarsThorwald
10.01.09, 11:51
--- cddata.c
+++ cddata.c
@@ -82,7 +82,7 @@
.mmap = generic_file_mmap
#else
.mmap = generic_file_readonly_mmap,
- .sendfile = generic_file_sendfile
+ .splice_read = generic_file_splice_read
#endif
};


Moin,
leider erhalte ich beim "make" immer noch die gleiche Fehlermeldung wie Du. Wo hast denn genau diesen Codeschnipsel in der Datei cddata.c eingefügt?

Bei mir sieht diese Datei jetzt wie folgt aus:


struct file_operations cdfs_cddata_file_operations = {
.read = do_sync_read,
.aio_read = generic_file_aio_read,
#ifdef OLD_KERNEL
@@ -82,7 +82,7 @@
.mmap = generic_file_mmap
#else
/*.mmap = generic_file_readonly_mmap,
.sendfile = generic_file_sendfile*/
.mmap = generic_file_readonly_mmap,
- .sendfile = generic_file_sendfile
+ .splice_read = generic_file_splice_read

#endif
};


Liege ich damit richtig?

Gruß
Lars

3qualizer
10.01.09, 12:20
Hehe, nein. Das was ich da gepostet hab ist ein Patch:

--- ist die Ausnangsdatei
+++ die daraus resultierende Datei (in dem Fall die gleiche)
@@ ist die Positions- und Längenangabe
Die Zeilen mit Leerzeichen am Anfang bleiben gleich
Minus bedeutet die Zeile kommt weg
Plus kommt dazu.

Will heissen die Zeile

.sendfile = generic_file_sendfile
wird ersetzt durch

.splice_read = generic_file_splice_read
Sry, benutze diff/patch so oft das ich daran gewöhnt bin ;)

Die Stelle sieht dann also so aus:

struct file_operations cdfs_cddata_file_operations = {
.read = do_sync_read,
.aio_read = generic_file_aio_read,
#ifdef OLD_KERNEL
.mmap = generic_file_mmap
#else
.mmap = generic_file_readonly_mmap,
.splice_read = generic_file_splice_read
#endif
};

drcux
10.01.09, 12:20
[code]
Liege ich damit richtig?


Nein:

- = zeile entfernen
+ = zeile hinzufügen

Aqualung
10.01.09, 16:54
Vielleicht wäre hier vlc das geeignetere Werkzeug.

LarsThorwald
10.01.09, 17:14
Danke für eure Hilfe. Jetzt funktioniert es :)


Hätte da noch eine Kleine Verständnisfrage... ;)

Sorgt depmode -a dafür, das alle Abhängigkeiten in der modules.dep neu geschrieben werden, sprich das die Abhängigkeiten des jetzt neuen Moduls cdfs zur Laufzeit in die modules.dep plaziert werden?

@Aqualung
Video Lan Connect wäre in meinem Fall unbrauchbar, da ich meine ganzen CDs über das Samba-Laufwerk auf meine HDD rippen möchte. Ich bin kein DJ Freund ;)

3qualizer
10.01.09, 18:56
Ja, depmod schreibt die Liste der Modul-Abhängigkeiten, siehe man depmod ;)