DSBMC/DSBMD

Denkt dran, dass Blurays meist UDF2-Dateisysteme haben und FreeBSDs Unterstützung da ... sagen wir mal ausbaufähig ist.
 
Denkt dran, dass Blurays meist UDF2-Dateisysteme haben und FreeBSDs Unterstützung da ... sagen wir mal ausbaufähig ist.


Das hatte ich auch schon überlegt !

Abspielen funktioniert !
 
angezeigt und beim anklicken brav im Audioplayer abgespielt
Bei dsbmc hat es dafür eine Konfiguration, in der man das Verhalten festlegen kann. Mit dsbmc-cli weiß ich das nicht und ich bin auch sicher, dass ich kein automatisches Mounten oder Abspielen irgendwelcher Medien haben möchte.

Ich will nochmal auf die Rolle von dsbmc/d aus meinem Verständnis eingehen.
Das ist ein Mountmanager.
Der Dämon lauscht auf Ereignisse, der Client kann die verwerten.
Im Ergebnis bekommt man automatisiertes Mounten.
hald ist nicht gleich zu setzen mit dsbmd. Es hat den Berührungspunkt, dass es auch etwas mit automatisiertem Mounten zu tun hat oder haben kann. Aber HAL war für viel mehr vorgesehen und sollte eine Systemübergreifende Abstraktion der Hardware und Systemereignisse ermöglichen. Dazu nutzt es Meldungen aus dbus und übersetzt diese mit einem eigenen Policity-Kit, der auch von auto-mount-clients ausgewertet werden kann.
dbus wiederum ist nur einer von vielen Diensten.
Nun sind viele Programme in der Freien Welt mit Blick auf GNU/Linux und Entwicklungen hier abgestimmt. GNU/Linux führte HAL flächendeckend ein und zwang damit quasi alle, dabei mitzumachen. Es gibt auch heute noch einige Programme (k3b etwa), die nur mit HAL zufriedenstellend laufen. Immer mehr Software wird in Zukunft systemd genügen, viele Programme wollen heute aber auch einen proc, weil es hier sehr viele Informationen in einem Linux-System gibt und so weiter.
Das hat FreeBSD (leider) nicht in der Hand.
Die Entwicklungen laufen an FreeBSD vorbei und unsere Maintainer haben genug Schwierigkeiten, das irgendwie für FreeBSD hin zu biegen.
dsbmd/c ist nur FreeBSD-zentrisch und nur ein Mountmanager, kein Dienst, der auch nur den Anspruch erhebt, mit allen möglichen weiteren Programmen zusammen zu arbeiten. Alle möglichen weiteren Programme könnten ihn nutzen, aber lasst uns Realisten bleiben: niemand wird sich für einen FreeBSD-Dienst interessieren und auch nur eine Zeile Code umschreiben.
Bleibt mal lieber auf dem Boden und schraubt eure Erwartungen nicht höher, als es angebracht ist.

Und seht bitte nach, was tatsächlich ist und achtet nicht nur auf irgendwelche grafischen Effekte, um den Zustand auszuwerten.
 
Ich dachte den dsbmc bräuchte ich nicht mehr !

Wie bereits erwähnt, wissen andere Programme außer dsbmc(-cli) nichts von dsbmd. Wenn ein Medium ein- oder ausgehängt wurde, wird dies ja von den meisten Dateimanagern erkannt, jedoch nicht, wer oder was die jeweilige Aktion ausgeführt hat. Um etwa das Einlegen einer DVD zu erkennen, müssten die Dateimanager selbst das System befragen, was dann nichts mit dsbmd zu tun hätte, oder sie müssten mit dsbmd in Verbindung stehen, was sie nicht tun.

Du kannst auch ohne dsbmc Aktionen für das Einlegen von z.B. CDs und DVD definieren:
Code:
dsbmc-cli -a -L add sh -c 'case %t in audiocd) vlc cdda://%d;; dvd) vlc dvd://%d;; esac' \;&

Die bekannte Option -a sorgt für Automount. Die Option -L lässt dsbmc-cli auf das nachfolgende Ereignis (add) lauschen und führt dann die nachfolgende Aktion aus. %t wird von dsbmc-cli durch den Medientyp und %d durch den Gerätename ersetzt. Diesen Einzeiler kannst Du dann in Deine autostart.sh eintragen.


Das Ding popt immer auf sobald ein Medium eingelegt wird , wäre
schön wenn man das Verhalten selbst aktivieren bzw. deaktivieren
könnte !
Du kannst nur das automatische Abspielen deaktivieren, aber nicht, dass es aufpoppt.
 
Alle möglichen weiteren Programme könnten ihn nutzen, aber lasst uns Realisten bleiben: niemand wird sich für einen FreeBSD-Dienst interessieren und auch nur eine Zeile Code umschreiben.
Bleibt mal lieber auf dem Boden und schraubt eure Erwartungen nicht höher, als es angebracht ist.

Sehe ich auch so. Deswegen hatte ich mich auch gleich für ein unabhängiges Design mit dsbmc entschieden, denn mir war schon zu beginn klar, dass ich mich weder darauf verlassen könnte, dass irgendeine Drittanbieter-Software dsbmd nutzen würde, noch, dass das wahrscheinlich ist. So könnte mein Lieblingsdateimanager jede Woche ein neues Linux Subsystem benutzen, und ich könnte es einfach ignorieren, solange er seinen Dienst als Dateimanager (Verschieben, Löschen, Kopieren, etc.) erfüllt.

Es wäre natürlich auch möglich, einen Daemon zu schreiben, der an dsbmd lauscht und für die Programme, die ihn nutzen, so tut, als wäre er Linux Subsystem X. Ich werde aber meine Zeit damit nicht verbringen.
 
Denkt dran, dass Blurays meist UDF2-Dateisysteme haben und FreeBSDs Unterstützung da ... sagen wir mal ausbaufähig ist.


Das hatte ich auch schon überlegt !

Abspielen funktioniert !

Die Erkennung von Blurays habe ich auch noch nicht implementiert. Kam mir bei meinem altmodischen Computer auch noch nicht in den Sinn.
 
Das von @bluescreen und @cabriofahrer berichtete Problem, dass das Symbol per Dateimanager ausgeworfener DVDs/CDs nicht verschwindet, ist gelöst. Ich war erstaunt zu sehen, dass DVDs ausgeworfen, jedoch nicht ausgehängt wurden, was meiner bisherigen Erfahrung und dessen, was ich für vernünftig erachte, widerspricht. Darüber hinaus stellte ich fest, dass das Abfragen der Medien- und Sektorgröße des Laufwerks, welches dsbmd zur Ermittlung des Medienstatus (eingelegt/nicht vorhanden) benutzt, bei einem eingehängten Medium, das aber nicht mehr im System existiert, ein positives Ergebnis zurück liefert. Der Test auf das Vorhandensein eines Mediums wurde somit erweitert, und in dem Fall, dass dasselbe eingehängt aber ausgeworfen worden ist, hängt dsbmd dieses aus und entfernt anschließend den Mountpoint.

Die aktuelle Version findet Ihr hier.

Bauanleitung:
Code:
% fetch http://freeshell.de/~mk/download/dsbmd-0.5pre-1.tgz
% tar xf dsbmd-0.5pre-1.tgz && cd dsbmd-0.5pre-1 && make
# make install && service dsbmd restart

Ich wünsche Euch allen ein schönes Wochenende.
 
Danke @marcel für Deinen unermüdlichen Einsatz. Du reagierst zeitnah auf noch auftretende Probleme, das ist nicht selbstverständlich, aber vorbildlich. Das kann nicht genug gewertschätzt und gewürdigt werden. Du bist eine Bereicherung für die Community.:) Ich habe mir mal den Sourcecode angeschaut, da steckt wirklich viel Arbeit drin. Und die Professionalität läßt vermuten, das das Programieren nicht nur ein Hobby, sondern auch Dein Beruf ist.
 
Sehr gerne, Du hast es verdient.:) Überhaupt finde ich, das viel zu wenig gelobt wird ..... denn es gibt viele Helfer und Mitarbeiter einschließlich unserer Moderatoren, die ins Gelingen verliebt sind und dem gesamten BSD Projekten eine Seele einhauchen. Sorry, bin fast phylosophisch geworden.
 
Hallo @holgerw ,

es könnte sein, dass DSBMD das Dateisystem nicht erkennt. Könntest Du bitte mal folgendes tun?:

Code:
% fetch http://freeshell.de/~mk/download/testfs.c
% cc -o testfs testfs.c
% ./testfs -f /dev/mmcsd0s1

Die Ausgabe würde mich interessieren.

Hallo,

hier von meinem frisch installierten FreeBSD auf dem ThinkPad:
Code:
[holger@eichhorn /usr/home/holger]$ ./testfs -f /dev/mmcsd0s1
224: sector[0x11] == 0
238: Magic value 'RRaA' found
FAT successfully identified
[holger@eichhorn /usr/home/holger]$

Komisch ist übrigens folgendes:
In der /etc/devfs.conf habe ich u.a.
Code:
own     mmcsd0  root:operator
perm    mmcsd0  0666

Als root kann ich die sd-Karte manuell an der Konsole mounten, aber wenn ich als User mounten möchte, kommt:
Code:
mount -t msdosfs /dev/mmcsd0s1 /home/holger/mnt
mount_msdosfs: /dev/mmcsd0s1: Operation not permitted

Aber auch wenn ich dsbmc mit Root Rechten starte, erscheint das Device mit dem Kartenleser nicht im Fenster.

Brauchst Du noch weitere Informationen?

Viele Grüße
Holger
 
Hallo @holgerw ,

danke für die Rückmeldung. Für den Fall, dass es noch nicht geschehen ist, könntest Du Dir bitte die neuste Version von dsbmd installieren?

Code:
% fetch http://freeshell.de/~mk/download/dsbmd-0.5pre-1.tgz
% tar xf dsbmd-0.5pre-1.tgz && cd dsbmd-0.5pre-1 && make
# make install
# cp /usr/local/etc/dsbmd.conf /usr/local/etc/dsbmd.conf.old
# cp /usr/local/etc/dsbmd.conf.sample /usr/local/etc/dsbmd.conf
# service dsbmd restart

Und falls nicht gesetzt:
Code:
# sysctl vfs.usermount=1
# echo 'vfs.usermount=1' >> /etc/sysctl.conf

Damit sollte sowohl die SD erkannt und auch als User einzuhängen sein.
 
Hatte bis jetzt leider keine Zeit, mich nochmal wegen der Kamera zurückzumelden. Doch wenn ich jetzt eingebe

Code:
$ fetch http://freeshell.de/~mk/download/testfs.c
fetch: testfs.c: open(): Permission denied

Was ist da los?
 
Hatte bis jetzt leider keine Zeit, mich nochmal wegen der Kamera zurückzumelden. Doch wenn ich jetzt eingebe

Code:
$ fetch http://freeshell.de/~mk/download/testfs.c
fetch: testfs.c: open(): Permission denied

Was ist da los?

Entweder warst Du in einem Verzeichnis, auf das Du kein Schreibrecht hast, oder die alte Version von testfs.c lag im aktuellen Verzeichnis, aber Dir fehlte die Berechtigung, die Datei zu überschreiben, etwa weil sie nicht dem aktuellen Benutzer gehört.

Du kannst natürlich auch gleich die neue Version von dsbmd testen (https://www.bsdforen.de/threads/dsbmc-dsbmd.33647/page-4#post-296111). Ich bin zuversichtlich, dass damit auch Deine Kamera erkannt wird.
 
Hallo Holger, versuch mal, in die /etc/devfs.rules einzutragen:
Code:
add path 'mmcsd*' mode 0660 group operator
Konnte ich nicht testen, aber vielleicht hilft es.
 
Code:
% fetch http://freeshell.de/~mk/download/dsbmd-0.5pre-1.tgz
% tar xf dsbmd-0.5pre-1.tgz && cd dsbmd-0.5pre-1 && make
# make install && service dsbmd restart

Also ich komme hier nicht weiter, jetzt funktioniert gar nichts mehr:

Code:
# make install
install -s -m 555 dsbmd /usr/local/libexec
install -m 555 rc.d/dsbmd /usr/local/etc/rc.d
install -m 0644 dsbmd.conf /usr/local/etc/dsbmd.conf.sample
if [ ! -f /usr/local/etc/dsbmd.conf ]; then  install -m 0644 dsbmd.conf /usr/local/etc;  fi
mkdir: /usr/local/share/doc/dsbmd: File exists
*** Error code 1 (ignored)
install -m 0644 README /usr/local/share/doc/dsbmd

Und

Code:
$ dsbmc-cli -a &
$ dsbmc-cli: Error: uconnect(/var/run/dsbmd.socket)
 
Also ich komme hier nicht weiter, jetzt funktioniert gar nichts mehr:

Code:
# make install
install -s -m 555 dsbmd /usr/local/libexec
install -m 555 rc.d/dsbmd /usr/local/etc/rc.d
install -m 0644 dsbmd.conf /usr/local/etc/dsbmd.conf.sample
if [ ! -f /usr/local/etc/dsbmd.conf ]; then install -m 0644 dsbmd.conf /usr/local/etc; fi
mkdir: /usr/local/share/doc/dsbmd: File exists
*** Error code 1 (ignored)
install -m 0644 README /usr/local/share/doc/dsbmd

Ist doch alles so, wie es soll.

$ dsbmc-cli -a & $ dsbmc-cli: Error: uconnect(/var/run/dsbmd.socket)

Wahrscheinlich läuft dsbmd nicht, also:

Code:
# service start dsbmd
 
Was beim ersten Mal los war, weiß ich nicht, aber es hatte selbst nach einem Neustart nicht funktioniert, obwohl der entsprechende Eintrag in der /etc/rc.conf vorhanden war. Dsbmd war also sicher am Laufen. Habe den Rechner jetzt nocheinmal eingeschaltet. Zwar startet dsbmc-cli -a jetzt ohne Fehlermeldung, doch es tut sich absolut nichts, weder Stick noch CD werden gemountet, auch das Eingeben von "dsbmc" bringt nichts, es erscheint kein Fenster.

Hier die Prozesse als root und als user:

Code:
# ps -x
PID TT  STAT    TIME COMMAND
   0  -  DLs  0:00.19 [kernel]
   1  -  ILs  0:00.00 /sbin/init --
   2  -  DL   0:00.00 [crypto]
   3  -  DL   0:00.00 [crypto returns]
   4  -  DL   0:00.25 [cam]
   5  -  IL   0:00.00 [fw0_probe]
   6  -  DL   0:00.00 [fdc0]
   7  -  DL   0:00.00 [sctp_iterator]
   8  -  DL   0:00.01 [rand_harvestq]
   9  -  DL   0:00.00 [soaiod1]
  10  -  DL   0:00.00 [audit]
  11  -  RL   7:06.07 [idle]
  12  -  WL   0:00.82 [intr]
  13  -  DL   0:00.23 [geom]
  14  -  DL   0:00.06 [usb]
  15  -  DL   0:00.00 [acpi_thermal]
  16  -  DL   0:00.00 [acpi_cooling0]
  17  -  DL   0:00.00 [soaiod2]
  18  -  DL   0:00.00 [soaiod3]
  19  -  DL   0:00.00 [soaiod4]
  20  -  DL   0:00.01 [pagedaemon]
  21  -  DL   0:00.00 [vmdaemon]
  22  -  DL   0:00.00 [pagezero]
  23  -  DL   0:00.01 [bufdaemon]
  24  -  DL   0:00.00 [bufspacedaemon]
  25  -  DL   0:00.03 [syncer]
  26  -  DL   0:00.00 [vnlru]
202  -  Is   0:00.00 adjkerntz -i
437  -  Is   0:00.00 dhclient: nfe0 [priv] (dhclient)
514  -  Is   0:00.11 /usr/sbin/moused -p /dev/ums0 -t auto -I /var/run/moused.
527  -  Ss   0:00.04 /sbin/devd
600  -  Ss   0:00.02 /usr/sbin/syslogd -s
801  -  Ss   0:00.03 /usr/sbin/ntpd -c /etc/ntp.conf -p /var/run/ntpd.pid -f /
848  -  S    0:00.13 /usr/local/libexec/dsbmd
852  -  Is   0:00.04 /usr/local/sbin/cupsd -C /usr/local/etc/cups/cupsd.conf -
881  -  Is   0:00.00 /usr/sbin/sshd
884  -  Ss   0:00.00 sendmail: accepting connections (sendmail)
891  -  Is   0:00.00 /usr/sbin/cron -s
1018  -  I    0:00.03 /usr/local/sbin/console-kit-daemon --no-daemon
1020  -  S    0:00.02 /usr/local/libexec/upowerd
949 v0  Is   0:00.01 login [pam] (login)
959 v0  S    0:03.99 X :0 (Xorg)
950 v1  Is+  0:00.00 /usr/libexec/getty Pc ttyv1
951 v2  Is+  0:00.00 /usr/libexec/getty Pc ttyv2
952 v3  Is+  0:00.00 /usr/libexec/getty Pc ttyv3
953 v4  Is+  0:00.00 /usr/libexec/getty Pc ttyv4
954 v5  Is+  0:00.00 /usr/libexec/getty Pc ttyv5
955 v6  Is+  0:00.00 /usr/libexec/getty Pc ttyv6
956 v7  Is+  0:00.00 /usr/libexec/getty Pc ttyv7
1054  1  S    0:00.01 su
1055  1  S    0:00.00 su (sh)
1056  1  R+   0:00.00 ps -x
# service dsbmd start
dsbmd already running?  (pid=848).
#

Code:
$ dsbmc-cli -a &
$ ps -x
PID TT  STAT    TIME COMMAND
967  -  Is   0:00.13 /usr/local/bin/dbus-daemon --fork --print-pid 5 --print-a
969  -  I    0:00.02 /usr/local/libexec/at-spi-bus-launcher
970  -  I    0:00.05 /usr/local/bin/dbus-daemon --config-file=/usr/local/share
972  -  S    0:00.07 /usr/local/libexec/at-spi2-registryd --use-gnome-session
974  -  I    0:00.02 /usr/local/libexec/dconf-service
981  -  I    0:00.03 /usr/local/libexec/gvfsd
983  -  I    0:00.03 /usr/local/libexec/gvfsd-fuse /home/werner/.gvfs -f -o bi
987  -  I    0:00.01 /usr/local/libexec/gvfs-hal-volume-monitor
996  -  S    0:01.10 /usr/local/libexec/wnck-applet
998  -  I    0:00.01 /usr/local/libexec/gvfs-gphoto2-volume-monitor
999  -  Ss   0:00.63 /usr/local/bin/python2.7 /usr/local/bin/hp-systray -x
1001  -  S    0:00.23 /usr/local/libexec/clock-applet
1003  -  S    0:00.16 /usr/local/libexec/notification-area-applet
1024  -  S    0:00.05 /usr/local/libexec/gvfsd-trash --spawner :1.11 /org/gtk/g
1027  -  I    0:00.03 /usr/local/libexec/gvfsd-metadata
1029  -  I    0:00.06 /usr/local/bin/python2.7 /usr/local/bin/hp-systray -x
1030  -  S    0:00.03 /usr/local/bin/python2.7 /usr/local/bin/hp-systray -x
1063  -  S    0:00.06 /usr/local/libexec/gvfsd-computer --spawner :1.11 /org/gt
957 v0  I    0:00.00 -sh (sh)
958 v0  I+   0:00.00 xinit mate-session
961 v0  I    0:00.04 xterm -geometry +1+1 -n login mate-session
963  0  Ss+  0:00.31 mate-session
966  0  I+   0:00.00 dbus-launch --exit-with-session mate-session
976  0  I+   0:00.02 gnome-keyring-daemon --start
977  0  S+   0:01.07 /usr/local/libexec/mate-settings-daemon
978  0  S+   0:00.84 marco
979  0  S+   0:01.16 mate-panel
985  0  I+   0:00.01 libgtop-server (libgtop_server2)
994  0  S+   0:02.10 caja
1010  0  S+   0:00.14 mate-screensaver
1012  0  S+   0:00.18 mate-power-manager
1015  0  S+   0:00.57 mate-volume-control-applet
1044  0  S+   1:15.81 seamonkey
1049  0  S+   0:01.35 mate-terminal
1050  1  Is   0:00.02 sh
1059  2  Ss   0:00.03 sh
1094  2  S    0:00.00 dsbmc-cli -a
1095  2  R+   0:00.00 ps -x
$

Code:
$ sysctl vfs.usermount
vfs.usermount: 1

Es tut sich wie gesagt nichts. Sicher, dass mit dem neuen Code alles in Ordnung ist und die Installation korrekt verlaufen ist?
 
Versuche es mal bitte hiermit:

Code:
% fetch http://freeshell.de/~mk/download/dsbmd-0.5pre-2.tgz
% tar xf dsbmd-0.5pre-2.tgz && cd dsbmd-0.5pre-2 && make
# make install && service dsbmd restart
 
Ich korrigiere:
Code:
% fetch http://freeshell.de/~mk/download/dsbmd-0.5pre-3.tgz
% tar xf dsbmd-0.5pre-3.tgz && cd dsbmd-0.5pre-3 && make
# make install && service dsbmd restart
 
Ich korrigiere:
Code:
% fetch http://freeshell.de/~mk/download/dsbmd-0.5pre-3.tgz
% tar xf dsbmd-0.5pre-3.tgz && cd dsbmd-0.5pre-3 && make
# make install && service dsbmd restart
Habe das mal eben eingespielt und nur kurz getestet:
Code:
usermount = true
funktionierte bei msdosfs wie erwartet und ich konnte einen eingebundenen Datenträger aus dem Dateimanager-Menü (pcmanfm) heraus unmounten.
Ich konnte allerdings einen NTFS-Datenträger gar nicht mehr mit dsmbc einbinden. Wie ich sehe, gibt es da in der dsbmd.conf neue Befehle für den User-Mount. Ich habe mir das aber nicht weiter angesehen und nun erst mal auf
Code:
usermount = false
gestellt und damit funktioniert das wieder wie gehabt.
 
Du kannst entweder /usr/local/etc/dsbmd.conf.sample nach /usr/local/etc/dsbmd.conf
ja, das habe ich gemacht. meine Änderung in der alten conf war ja nur, dass ich msdosfs_locale = de_DE.UTF-8 gesetzt hatte und das war einfacher wieder zu ändern, als die neue conf komplett durch zu sehen.

Vielleicht habe ich später mehr Zeit und scheue nochmal genauer rein.
 
Hallo !

Habe hier die "*pre3 Version" über den Port drübergebügelt !

Hatte zuerst auch Probleme das sich nichts tat !

Habe dann manuell :

rm -f /usr/local/etc/dsbmd.conf

und dann

cp /home/*/dsbmd-0.5pre-3/dsbmd.conf /usr/local/etc

Dann lief wieder alles !

Gruss
 
ja, das habe ich gemacht. meine Änderung in der alten conf war ja nur, dass ich msdosfs_locale = de_DE.UTF-8 gesetzt hatte und das war einfacher wieder zu ändern, als die neue conf komplett durch zu sehen.

Vielleicht habe ich später mehr Zeit und scheue nochmal genauer rein.

Danke, @pit234a . Ich habe den Fehler schon ermittelt. Werde mich später mit einer neuen Version zurückmelden.

@bluescreen :
Funktioniert das Auswerfen einer CD/DVD per Dateimanager jetzt zufriedenstellend?
 
Zurück
Oben