Bind Mount / Symlink - Ziel-"Baum" beim Entfernen der Quelle beibehalten?

Ich versuche, etwas ziemlich Seltsames zu erreichen, also haben Sie Geduld mit mir.

Ich habe meinem alten Droid Mini eine externe SD-Karte hinzugefügt (im Grunde nur für ein Experiment, um zu sehen, ob ich die Speicherkapazität erweitern könnte oder nicht). Es läuft derzeit mit Lineage OS 13.

Das Problem ist, dass der externe SD-Adapter sehr stromhungrig ist und der Kernel dieser Version (3.4.42) Autosuspend nicht richtig unterstützt.

Ich kann das Gerät in den Energiesparmodus zwingen, indem ich das SCSI-Gerät vom USB-Gerät entbinde, aber offensichtlich verschwindet es, wenn ich das tue.

Ich habe gelesen, dass Bind-Mounts die Verzeichnisstruktur des Quellordners beibehalten können, selbst wenn er entfernt wird, aber ich kann das anscheinend nicht zum Laufen bringen (siehe hier - "Es ist möglich, /some/where zu unmounten, in diesem Fall / sonst/wo bleibt montiert." )

Die Idee ist, zu warten, bis das USB-Gerät in den Leerlauf geht, und es dann manuell zu unterbrechen, indem es die Bindung aufhebt, bis es wieder benötigt wird. Wenn ich das Gerät jedoch entbinde, verschwindet AUCH die "Stat" -Datei, die ich zur Überwachung des Leerlaufs verwende. Kann ich damit nicht überprüfen, ob Aktivität angefordert wird?

Meine (vielleicht dumme) Idee war also, die externe Karte an ein "virtuelles" USB-Gerät zu binden, das nicht verschwindet, wenn die Quelle entfernt wird, und es bei Bedarf wieder anschließt.

Kleine Schritte, aber irgendwelche Ideen, wie ich vorgehen könnte, um ein "falsches" Laufwerk für den Betrieb des Systems zu erhalten? Bind-Mounts scheinen hier nicht ganz das Richtige zu tun.

Danke, r

das hört sich echt verrückt an...
Ja, aber das Dumme daran ist, dass das Telefon meines Freundes mit einem ETWAS neueren Kernel problemlos automatisch suspendiert wird. Ich schätze, diese Funktion wurde auf seinen Kernel zurückportiert.
Warten Sie ein paar Minuten, bis ich eine Antwort verfasst habe

Antworten (1)

Das klingt wirklich verrückt...

Auf den ersten Blick vermute ich, dass Sie zwar das Quellverzeichnis eines Bind-Mounts aushängen können, das zugrunde liegende Gerät jedoch angeschlossen bleiben müssen , damit ein Bind-Mount funktioniert.

Ich habe meine Vermutung in Experimenten auf meinem OnePlus 6 (Android Linux 4.9.65) und meinem Ubuntu 18.04 (echtes Linux 4.15.0) bestätigt und das Ergebnis ist dasselbe.

Unter Ubuntu habe ich ein USB-Flash-Laufwerk (ext4-Dateisystem) eingefügt und es an gemountet /mnt/usb, und ich binde gemountet /mnt/usb/dataan/mnt/bind

  • Ich habe die Bereitstellung aufgehoben /mnt/usb, während das Flash-Laufwerk angeschlossen blieb, und ich kann /mnt/bindohne Fehler darauf zugreifen. Alle Änderungen werden /mnt/bindwidergespiegelt <drive root>/data(später überprüft).
  • Dann habe ich das Flash-Laufwerk getrennt und versucht, darauf zuzugreifen /mnt/bind, und habe diese Nachricht erhalten:

    ls: reading directory '/mnt/bind': Input/output error
    

Auf meinem OnePlus 6 habe ich einen USB-Stick über OTG (exFAT-Dateisystem) eingesteckt. Ich habe das Gerät /dev/block/vold/public:8:97auf gemountet /data/devund per Bind-Mount /data/dev/Androidauf /data/bind.

  • Ich habe die Bereitstellung aufgehoben /data/dev, während das OTG angeschlossen blieb, und alle Daten bleiben erhalten /data/bindund sind fehlerfrei zugänglich.
  • Dann habe ich die "OTG-Funktion" in der App "Einstellungen" deaktiviert, der Android-Mount-Punkt /mnt/media_rw/xxxx-xxxxist verschwunden, aber ich kann immer noch auf meinen Bind-Mount zugreifen.
  • Als nächstes habe ich das OTG-Laufwerk getrennt und versucht, darauf zuzugreifen, /data/bindund habe Folgendes erhalten:

    ls: reading directory `/data/bind`: I/O error
    

    Eine Randnotiz ist, dass der Zugriff im Gegensatz zu Ubuntu /data/bindetwa eine halbe Minute lang verfügbar war, aber Verzeichnisse, die ich zuvor nicht besucht hatte, waren nicht mehr zugänglich, nur die Verzeichnisse, die ich vor dem Trennen des Laufwerks besucht hatte, waren noch zugänglich.

Das ist es. Das Fazit steht im obersten Absatz.

Das macht Sinn. Dieser Gedanke kam mir tatsächlich auch, aber dann wurde mir klar, dass ich das Gerät nicht wirklich physisch trenne. Ich löse es von /sys/bus/USB/....irgendwas, indem ich die Geräte-ID in die Bind/Unbind-Dateien schreibe, also hatte ich gehofft, dass das funktionieren würde. Ich muss noch ein paar Experimente machen.
@flyingfishfinger Wenn meine Antwort sinnvoll ist, würde es Ihnen etwas ausmachen, sie als akzeptiert zu markieren? :P
Lass mich morgen ein paar Permutationen davon ausprobieren und ich melde mich bei dir :)
@flyingfishfinger Gut. Taten sagen mehr als Worte.
Was ist der Unterschied zwischen Auswerfen, Lösen und Aushängen? Wenn ich Ihren Schritten ungefähr folge, kann ich immer noch auf /bind und /dev zugreifen, nachdem ich das Laufwerk über die Einstellungen ausgeworfen habe (der Eintrag /mnt/media_rw/ ist wie bei Ihnen verschwunden). Dies scheint jedoch nicht gleichbedeutend mit dem Aufheben der Bindung des USB-Speichertreibers zu sein, da, wenn ich das tue, sowohl /bind als auch /data leer sind.
@flyingfishfinger Dann weiß ich es nicht. Ich weiß nur, dass das Gerät physisch verbunden bleiben muss