Es ist nicht klar, welcher der derzeit "offiziell" unterstützte Ansatz ist.
Offiziell von wem unterstützt? Wenn beispielsweise GNOME Automount-Funktionen auf Basis von udisks enthält, können Sie sicher sein, dass sie von GNOME selbst offiziell unterstützt werden.
Ich interessiere mich mehr für das zweite (dh für ein beliebiges USB-Speichergerät), da ich zum ersten Mal die Einträge hinzufügen kann /etc/fstab
.
Dafür gibt es keine "Standardmethode". Im besten Fall hat sich die Mehrheit der vorhandenen Systeme dazu entschlossen, Automatisierung hinzuzufügen udisks2
. Für sich alleine macht udisks gar nichts, aber es ist das "Backend", das von vielen grafischen Desktop-Umgebungen verwendet wird (zumindest verwenden GNOME und Xfce es; ich bin nur zu 80% sicher, was KDE und Aufklärung angeht).
(Ihre Option 3 wäre also "udisks2 + automount by udiskie"), und Option 4 wäre "udisks2 + automount nach Desktop-Umgebung".)
Zu den udev-Regeln: Egal ob es um das Anhängen von Dateisystemen oder das Starten von Diensten geht, die kurze Antwort lautet "Don't do it" (aus verschiedenen Gründen). aber die lange Antwort lautet: "Tu es nicht direkt, aber du kannst init bitten, es zu tun". Es wäre also nicht schrecklich, systemd-mount
vor einer udev-Regel zu laufen, die dann einfach die mount-Anforderung an init übergibt, genau wie eine .mount-Einheit ...
Erwarten Sie jedoch, dass dies einen systemd Fehler / Warze / Missfeature auslöst: Da udev meldet, dass das Gerät erst nach der Verarbeitung der Regeln betriebsbereit ist, kann es passieren, dass init das Laufwerk automatisch aus dem Laufwerk ausmustert, weil es der Meinung ist, das Gerät sei noch nicht da.
Stattdessen würde udevil besser funktionieren, da es nichts über Regeln ausführt, sondern nur auf "Device Ready" -Ereignisse reagiert, die von udev gesendet werden.
fstab-Einträge sind auf statische Geräte ausgerichtet. Sie können jedoch missbräuchlich für verschiedene USB-Sticks verwendet werden /dev/disk/by-path/...
, die dem physischen Pfad eines Geräts entsprechen (z. B. PCI-Steckplatz 3, USB-Port 1, Partition 1 ...). Auf diese Weise können Sie einen fstab-Eintrag schreiben, der passt zu jeder Festplatte, die am selben USB-Port angeschlossen ist.
Der autofs- Kernel- Automounter ist ähnlich wie udisks nur das Backend, auf dem verschiedene Automounts von Userspace implementiert werden können. Sobald ein autofs-Mount eingerichtet ist, werden alle Zugriffsversuche an den entsprechenden Daemon gemeldet. Die gebräuchlichsten Implementierungen sind die traditionellen ( kartenbasierten ) autofs
und kürzlich systemd
die .automount-Einheiten.
Die "dynamische" USB-Gerätelogik müsste also immer noch im Userspace implementiert werden. In beiden Fällen ist dies mehr Arbeit als nur das Verwenden von udisks.
Bei plain systemd besteht die einzige Möglichkeit darin, auf dem oben genannten fstab "by-path" -Hack aufzubauen. Nachdem Sie einen Fstab-Eintrag für den gewünschten USB-Anschluss geschrieben haben, können Sie ihn mit markieren x-systemd.automount,x-systemd.idle-timeout=300
, um den autofs Automounter zu verwenden. (Oder erstellen Sie für das gleiche Ergebnis selbstverständlich eigenständige .mount + .automount-Einheiten.)
Wenn Sie Automounts für alle USB-Festplatten an allen Ports dynamisch generieren möchten, kann systemd dies nicht ohne Scripts von Drittanbietern.
Ich weiß nicht, ob Sie autofsd
das tun können, was Sie möchten, aber ich erinnere mich daran, dass es einige Arten dynamischer Karten (für Benutzerverzeichnisse) unterstützt. Möglicherweise würde der program
Map-Typ (und ein Skript, das alle verbundenen Festplatten aufführt) funktionieren.