Moin
Das Konzept funktioniert seit 2-3 Tagen perfekt, genau meinen Anforderungen entsprechend. Es funktioniert gleichermaßen unter Debian Jessie und auch unter Raspian Jessie. Was tut es?
- Alle USB-Speichermeiden werden tadellos bei fehlender Vorgabe unter ihrem Kernelnamen nach /media/sd?? gemountet.
- Es werden keine Phantasie-MountPoints vom Automounter angelegt
- Ein Re-Direct auf einen "anderen" vorgebenen MountPoint funktioniert
- Ein Sub-Job kann nach dem Mount gestartet werden.
Bei usbmount start/add wird der Subjob nach dem Mount mit folgender Syntax gestartet: subjob start {arg1} {arg2} {arg3}
Bei usbmount stop/remove wird der Subjob vor dem Umount mit folgender Syntax gestartet: subjob stop {arg1} {arg2} {arg3}
Dadurch ist die Unterstützung eines Crypt-Devices möglich, welches beim Einstecken des Key-Sticks "geöffnet" wird, und beim Abziehen "geschlossen" wird, siehe udev-Rules "Mini-USB-Stick".
- Beim Abziehen/Entfernen des Mediums werden angelegte Verzeichnisse wieder entfernt (aufräumen in /media)
- Aktivitäten und Probleme können im Journal nachgesehen werden
- Unterstützte (bisher getestete) Filesysteme; ext4, ntfs, vfat, exfat
- Das Konzept ist durch einfaches Kopieren von 3 Files (Bash-Script, systemd-Service-Unit und udev-Rule) auf weitere PC-Systeme portierbar, kein Anpassen der fstab (statisches Customizing) notwendig
Warum ich das bisher nicht gepostet habe...?... tja, wegen der Dokumentation
Es ist ziemlich flexibel und deckt alle Anwendungsfälle ab. Dabei ist es vom Umfang eher klein, im Gegensatz allerdings zur Beschreibung der möglichen Anwendungsfälle. So einfach, wie es eigentlich ist, allein wegen der Komplexität und Vielfalt der Möglichkeiten ist es eher untauglich für '
alle'.
1. Verschiedene Anwendungsbeispiele für manuellen Start vom Terminal... direkt via Bash-Script, geeignet für 'normale' Filesysteme
Code: Alles auswählen
usbmount start /dev/sdb1
usbmount stop /dev/sdb1
usbmount add /dev/sdb1
usbmount remove /dev/sdb1
usbmount add /dev/sdb1 /home/specialdir
usbmount stop /dev/sdb1
usbmount start /dev/sdb1 /home/specialdir /usr/local/bin/counter 15 3 test
usbmount remove /dev/sdb1
Syntax Call-Parameter = analog systemd-Service-Unit
Parameter: Keine Blanks, getrennt durch Komma, komplett in Anführungszeichen
device=/dev/sdb1 , mountto=/home/thomas/special , run=/usr/local/bin/counter , arg1=5 , arg2=3 , arg3=test
usbmount start 'device=/dev/sdb1'
usbmount stop /dev/sdb1
usbmount start 'device=/dev/sdb1,mountto=/home/thomas/special'
usbmount stop /dev/sdb1
usbmount add 'device=/dev/sdb1,mountto=/home/thomas/special,run=/usr/local/bin/counter,arg1=5,arg2=3,arg3=test'
usbmount remove /dev/sdb1
2. Anwendungsbeispiele für Start via systemd vom terminal oder über udev-Event! Für normale Filesysteme und FUSE-FS und für zu startende Long-Time-Jobs
Code: Alles auswählen
Parameter: Keine Blanks, getrennt durch Komma, komplett in Anführungszeichen
device=/dev/sdb1 , mountto=/home/thomas/special , run=/usr/local/bin/counter , arg1=30
Code: Alles auswählen
systemctl start usbmount@'device=/dev/sdb1'.service
systemctl stop usbmount@'device=/dev/sdb1'.service
systemctl start usbmount@'device=/dev/sdb1,mountto=/home/thomas/special'.service
systemctl stop usbmount@'device=/dev/sdb1,mountto=/home/thomas/special'.service
systemctl start usbmount@'device=/dev/sdb1,mountto=/home/thomas/special,run=/usr/local/bin/counter,arg1=60'.service
systemctl stop usbmount@'device=/dev/sdb1,mountto=/home/thomas/special,run=/usr/local/bin/counter,arg1=60'.service
systemctl start usbmount@'device=/dev/sdb1,run=/usr/local/bin/counter,arg1=10,arg2=TestParm'.service
systemctl stop usbmount@'device=/dev/sdb1,run=/usr/local/bin/counter,arg1=10,arg2=TestParm'.service
3. Beispiele für Start via udev-Eventhandler
Code: Alles auswählen
# 2-GB-TransMemory-USB-Stick (Hier Partition 1 berücksichtigen!!!)
KERNEL=="sd?1", SUBSYSTEMS=="usb", ENV{ID_SERIAL_SHORT}=="12345", ACTION=="add", RUN+="/bin/systemctl start usbmount@'device=/dev/%k,mountto=/home/thomas/specialdir'.service"
KERNEL=="sd?1", SUBSYSTEMS=="usb", ENV{ID_SERIAL_SHORT}=="12345", ACTION=="remove", RUN+="/bin/systemctl stop usbmount@'device=/dev/%k,mountto=/home/thomas/specialdir'.service"
KERNEL=="sd?1", SUBSYSTEMS=="usb", ENV{ID_SERIAL_SHORT}=="12345", GOTO="rules_end"
# Funktioniert für ext4, vfat ebenfalls
#KERNEL=="sd?1", SUBSYSTEMS=="usb", ENV{ID_SERIAL_SHORT}=="12345", ACTION=="add", RUN+="/bin/bash /usr/local/bin/usbmount add /dev/%k /home/thomas/specialdir"
#KERNEL=="sd?1", SUBSYSTEMS=="usb", ENV{ID_SERIAL_SHORT}=="12345", ACTION=="remove", RUN+="/bin/bash /usr/local/bin/usbmount remove /dev/%k"
#KERNEL=="sd?1", SUBSYSTEMS=="usb", ENV{ID_SERIAL_SHORT}=="12345", GOTO="rules_end"
# 8-GB-RAG-Stick, Partition 1 = 7 GB FAT32, Partition 2 = 1 GB EXT4 (Partition 1 = Default-Handler, hier nur Partition 2 berücksichtigen!!!)
KERNEL=="sd?2", SUBSYSTEMS=="usb", ENV{ID_SERIAL_SHORT}=="1a2b3c", ACTION=="add", RUN+="/bin/systemctl start usbmount@'device=/dev/%k,mountto=/home/thomas/specialdir,run=/usr/local/bin/counter,arg1=60'.service"
KERNEL=="sd?2", SUBSYSTEMS=="usb", ENV{ID_SERIAL_SHORT}=="1a2b3c", ACTION=="remove", RUN+="/bin/systemctl stop usbmount@'device=/dev/%k,mountto=/home/thomas/specialdir,run=/usr/local/bin/counter,arg1=60'.service"
KERNEL=="sd?2", SUBSYSTEMS=="usb", ENV{ID_SERIAL_SHORT}=="1a2b3c", GOTO="rules_end"
# Mini-USB-Stick (Uncrypt /dev/sda2, jedoch nur auf Dell-Notebook)
KERNEL=="sd?1", SUBSYSTEMS=="block", ENV{ID_SERIAL_SHORT}=="4711", ACTION=="add", RUN+="/bin/systemctl start usbmount@'device=/dev/%k,mountto=/home/thomas/specialdir,run=/usr/local/bin/uncrypt,arg1=/dev/sda2,arg2=DellNotebook'.service"
KERNEL=="sd?1", SUBSYSTEMS=="block", ENV{ID_SERIAL_SHORT}=="4711", ACTION=="remove", RUN+="/bin/systemctl stop usbmount@'device=/dev/%k,mountto=/home/thomas/specialdir,run=/usr/local/bin/uncrypt,arg1=/dev/sda2,arg2=DellNotebook'.service"
KERNEL=="sd?1", SUBSYSTEMS=="block", ENV{ID_SERIAL_SHORT}=="4711", GOTO="rules_end"
# Failed! Wird gemäß UDEV-Man-Page gekillt (nach ca. 20 Sek.)
#KERNEL=="sd?2", SUBSYSTEMS=="usb", ENV{ID_SERIAL_SHORT}=="1a2b3c", ACTION=="add", RUN+="/bin/bash /usr/local/bin/usbmount add /dev/%k /home/thomas/specialdir '/usr/local/bin/counter' 60"
#KERNEL=="sd?2", SUBSYSTEMS=="usb", ENV{ID_SERIAL_SHORT}=="1a2b3c", ACTION=="remove", RUN+="/bin/bash /usr/local/bin/usbmount remove /dev/%k"
#KERNEL=="sd?2", SUBSYSTEMS=="usb", ENV{ID_SERIAL_SHORT}=="1a2b3c", GOTO="rules_end"
# Default-Handler
KERNEL=="sd??", SUBSYSTEMS=="usb", ACTION=="add", RUN+="/bin/systemctl start usbmount@'device=/dev/%k'.service"
KERNEL=="sd??", SUBSYSTEMS=="usb", ACTION=="remove", RUN+="/bin/systemctl stop usbmount@'device=/dev/%k'.service"
LABEL="rules_end"