Wie kann ich einen USB-Stick nach dem Abmelden von Nautilus neu mounten, ohne ihn zu trennen?
25
Ich finde, um einen USB-Stick neu zu mounten, muss ich ihn physisch trennen und dann wieder anschließen. Wie kann ich das ohne solch anstrengende körperliche Handlungen tun?
Das USB-Gerät ist logisch getrennt (es sollte eine Meldung zu Ihren Kernel-Protokollen angezeigt werden). Es wird keinen /devEintrag mehr geben und IIRC wird auch nicht angezeigt lsusb. Ich weiß nicht, ob es eine Möglichkeit gibt, die Verbindung wiederherzustellen.
Nach meiner Erfahrung in Ubuntu verschwindet das Gerät tatsächlich vom System, wenn Sie einen USB-Stick aus Nautilus "auswerfen". Ich bin mir nicht sicher, warum das so ist, aber weder Nautilus noch die Befehlszeile können es zurückbekommen. Ich denke, die Logik ist, dass Sie einen USB-Stick nach dem Auswerfen nicht mehr zurückhaben wollen, sondern ihn trennen werden.
Die Art und Weise, wie ich das umgehe (wenn nötig), ist die Verwendung von umountanstelle von Nautilus. Sie können auch einfach aufrufen sync, um die Dateisystempuffer auf die Festplatte zu kopieren.
Also im Grunde genommen entweder a) Nautilus aus dem Quellcode ohne diesen Patch neu erstellen (und auf dem neuesten Stand halten, wenn Sie Ihr System aktualisieren ...) oder b) einen anderen Dateimanager verwenden (zumindest beim Abmelden ^^).
Überprüfen /dev/disk/by-idSie, ob das Gerät wirklich weg ist. Ich wette, es ist nicht und kann von dort mit einem mountBefehl wieder montiert werden .
LawrenceC
1
@ultrasawblade /dev/disk/by-identhält symbolische Links zu Gerätedateien in /dev, zum Beispiel /dev/disk/by-id/usb-Kingston_DT_100_G2_001CC0C60DBDFC90D32923CE-0:0 -> ../../sdb. Wenn das Gerät udisks --ejectnicht mehr verwendet wird (was hier vermutlich passiert), ist der Symlink veraltet und kann nicht zum erneuten Mounten verwendet werden.
PointedEars
16
Das ist das Verhalten, das ich auf meinem Ubuntu Lucid-System habe:
Wenn ich meinen USB-Stick mit zwei Partitionen einstecke, meldet das System Folgendes:
Also haben nur Partitionen /dev/disk/by-uuid; während sowohl Festplatte als auch Partitionen (unterschiedlich) haben /dev/disk/by-id.
Wenn ich nun in Lucid mit der linken Maustaste auf einen der Partitionseinträge im Disk Mounter-Applet auf dem Gnome2-Desktop klicke, werden nur zwei Einträge angezeigt: "Öffnen" oder "Auswerfen" (wie im Abschnitt [Gelöst] beschrieben) Ein USB-Laufwerk mit Nautilus im Luchs (aus der Antwort von @Thomas , die sich auf ein 16_hide_unmount.patch bezieht ). Außerdem werden palimpsesthier zwei Partitionen für die Festplatte angezeigt.
Wenn ich auf eine der Partitionen klicke, verschwinden beide. An dieser Stelle wird palimpsestdie Festplatte, aber keine Partitionen angezeigt und stattdessen die Meldung "Kein Medium gefunden". ebenfalls:
$ ls /dev/sdb*
/dev/sdb
$ udisks --show-info /dev/sdb | grep -A2 'partition table\|by-id'
by-id: /dev/disk/by-id/usb-takeMS_USB_Mini_AA07013000010057-0:0
by-path: /dev/disk/by-path/pci-0000:00:1d.7-usb-0:2:1.0-scsi-0:0:0:0
detected at: Mon 29 Apr 2013 02:16:50 PM CEST
$ udisks --show-info /dev/sdb1 | grep -A2 'partition table\|by-id'
$
$ udevadm info --query=all --name=/dev/sdb | grep DEVPATH
E: DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0/host13/target13:0:0/13:0:0:0/block/sdb
$ udevadm info --query=all --name=/dev/sdb1 | grep DEVPATH
device node not found
$ sudo partprobe /dev/sdb
Error: Error opening /dev/sdb: No medium found
Wie im Kommentar von @ultrasawblade erwähnt , ist zwar die Festplatte vorhanden, aber nicht die Partitionen - obwohl ich denke, ich würde die Partitionen als Geräte benötigen , um mount.
Auch das gleiche Verhalten wie Linksklick + "Auswerfen" in der Desktop-GUI kann ich im Terminal mit bekommen sudo eject /dev/sdb. Beachten Sie, dass Sie auch eine palimpsestder beiden Partitionen öffnen können , indem Sie von dort aus auf jede der beiden Partitionen klicken und auf "Unmount Volume" klicken. Zu diesem Zeitpunkt werden die Symbole für die Partitionen weiterhin im Disk Mounter-Applet angezeigt, werden jedoch als nicht gemountet gekennzeichnet. und dann kann man es tun sudo udisks --detach /dev/sdb: Dadurch werden die Symbole aus dem Disk Mounter-Applet ausgeblendet - aber auch das /dev/sdbGerät ist nicht mehr auf dem System vorhanden (es lsusbwird jedoch weiterhin das Gerät angezeigt)!
Nachdem udevadm monitor --environmentich einiges nach der Antwort gesucht hatte (probierte Dinge während des Ein- und Aussteckens, mit dem Replizieren aller Aktionen über udevadm trigger, um zu sehen, was der BLKRRPARTioctl macht), ohne Erfolg - stieß ich schließlich auf How To Remount A USB Stick Without Removing And Reinserting - Ubuntu / Debian , das die Antwort hat:
sudo eject -t /dev/sdb
Nachdem dieser Befehl ausgeführt wurde, werden die beiden Partitionen erneut im Disk Mounter-Applet angezeigt, ohne dass der USB-Stick abgezogen oder wieder eingesteckt werden muss. Das ist alles der Fremde, denn wenn Sie lesen man eject:
-t With this option the drive is given a CD-ROM tray close command.
Not all devices support this command.
... Sie würden nie erwarten, dass es für USB-Flash- / USB-Sticks geeignet ist! (Und ich habe sogar versucht, in sys-utils / eject.c nachzuschauen , und ich kann nichts Offensichtliches erkennen. :))
$ sudo sh -c 'echo suspend > /sys/bus/usb/devices/1-2/power/level'
$ sudo sh -c 'echo auto > /sys/bus/usb/devices/1-2/power/level'
Dies führte dazu, dass die Symbole der Partitionen im Disk Mounter-Applet wieder direkt als gemountet angezeigt wurden. Um die richtige Adresse zu finden, versuchen Sie, während der Datenträger eingehängt ist:
$ udevadm info --attribute-walk --name=/dev/sdb | grep "looking\|busnum\|devnum" | grep -B1 'busnum\|devnum'
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1/1-2':
ATTRS{busnum}=="1"
ATTRS{devnum}=="13"
looking at parent device '/devices/pci0000:00/0000:00:1d.7/usb1':
ATTRS{busnum}=="1"
ATTRS{devnum}=="1"
# the first (.../usb1/1-2) should be the right one, check bus/devnum:
$ lsusb -s 1:13
Bus 001 Device 013: ID 090c:1000 Feiya Technology Corp. Flash Drive
# looks good; check for symlinks in `sys/bus/usb/devices` as per "parent device" .../usb1/1-2
$ ls -la /sys/bus/usb/devices/ | grep "usb1/1-2"
lrwxrwxrwx 1 root root 0 2013-04-29 17:17 1-2 -> ../../../devices/pci0000:00/0000:00:1d.7/usb1/1-2
lrwxrwxrwx 1 root root 0 2013-04-29 17:21 1-2:1.0 -> ../../../devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0
# so it should be /sys/bus/usb/devices/1-2; check if it has power/level:
$ ls /sys/bus/usb/devices/1-2/power/level
/sys/bus/usb/devices/1-2/power/level
/dev
Eintrag mehr geben und IIRC wird auch nicht angezeigtlsusb
. Ich weiß nicht, ob es eine Möglichkeit gibt, die Verbindung wiederherzustellen.Antworten:
Nach meiner Erfahrung in Ubuntu verschwindet das Gerät tatsächlich vom System, wenn Sie einen USB-Stick aus Nautilus "auswerfen". Ich bin mir nicht sicher, warum das so ist, aber weder Nautilus noch die Befehlszeile können es zurückbekommen. Ich denke, die Logik ist, dass Sie einen USB-Stick nach dem Auswerfen nicht mehr zurückhaben wollen, sondern ihn trennen werden.
Die Art und Weise, wie ich das umgehe (wenn nötig), ist die Verwendung von
umount
anstelle von Nautilus. Sie können auch einfach aufrufensync
, um die Dateisystempuffer auf die Festplatte zu kopieren.Habe gerade einen Thread mit weiteren Informationen gefunden: http://ubuntuforums.org/showthread.php?t=1477247
Also im Grunde genommen entweder a) Nautilus aus dem Quellcode ohne diesen Patch neu erstellen (und auf dem neuesten Stand halten, wenn Sie Ihr System aktualisieren ...) oder b) einen anderen Dateimanager verwenden (zumindest beim Abmelden ^^).
quelle
/dev/disk/by-id
Sie, ob das Gerät wirklich weg ist. Ich wette, es ist nicht und kann von dort mit einemmount
Befehl wieder montiert werden ./dev/disk/by-id
enthält symbolische Links zu Gerätedateien in/dev
, zum Beispiel/dev/disk/by-id/usb-Kingston_DT_100_G2_001CC0C60DBDFC90D32923CE-0:0 -> ../../sdb
. Wenn das Gerätudisks --eject
nicht mehr verwendet wird (was hier vermutlich passiert), ist der Symlink veraltet und kann nicht zum erneuten Mounten verwendet werden.Das ist das Verhalten, das ich auf meinem Ubuntu Lucid-System habe:
Wenn ich meinen USB-Stick mit zwei Partitionen einstecke, meldet das System Folgendes:
Also haben nur Partitionen
/dev/disk/by-uuid
; während sowohl Festplatte als auch Partitionen (unterschiedlich) haben/dev/disk/by-id
.Wenn ich nun in Lucid mit der linken Maustaste auf einen der Partitionseinträge im Disk Mounter-Applet auf dem Gnome2-Desktop klicke, werden nur zwei Einträge angezeigt: "Öffnen" oder "Auswerfen" (wie im Abschnitt [Gelöst] beschrieben) Ein USB-Laufwerk mit Nautilus im Luchs (aus der Antwort von @Thomas , die sich auf ein 16_hide_unmount.patch bezieht ). Außerdem werden
palimpsest
hier zwei Partitionen für die Festplatte angezeigt.Wenn ich auf eine der Partitionen klicke, verschwinden beide. An dieser Stelle wird
palimpsest
die Festplatte, aber keine Partitionen angezeigt und stattdessen die Meldung "Kein Medium gefunden". ebenfalls:Wie im Kommentar von @ultrasawblade erwähnt , ist zwar die Festplatte vorhanden, aber nicht die Partitionen - obwohl ich denke, ich würde die Partitionen als Geräte benötigen , um
mount
.Auch das gleiche Verhalten wie Linksklick + "Auswerfen" in der Desktop-GUI kann ich im Terminal mit bekommen
sudo eject /dev/sdb
. Beachten Sie, dass Sie auch einepalimpsest
der beiden Partitionen öffnen können , indem Sie von dort aus auf jede der beiden Partitionen klicken und auf "Unmount Volume" klicken. Zu diesem Zeitpunkt werden die Symbole für die Partitionen weiterhin im Disk Mounter-Applet angezeigt, werden jedoch als nicht gemountet gekennzeichnet. und dann kann man es tunsudo udisks --detach /dev/sdb
: Dadurch werden die Symbole aus dem Disk Mounter-Applet ausgeblendet - aber auch das/dev/sdb
Gerät ist nicht mehr auf dem System vorhanden (eslsusb
wird jedoch weiterhin das Gerät angezeigt)!Nachdem
udevadm monitor --environment
ich einiges nach der Antwort gesucht hatte (probierte Dinge während des Ein- und Aussteckens, mit dem Replizieren aller Aktionen überudevadm trigger
, um zu sehen, was derBLKRRPART
ioctl macht), ohne Erfolg - stieß ich schließlich auf How To Remount A USB Stick Without Removing And Reinserting - Ubuntu / Debian , das die Antwort hat:Nachdem dieser Befehl ausgeführt wurde, werden die beiden Partitionen erneut im Disk Mounter-Applet angezeigt, ohne dass der USB-Stick abgezogen oder wieder eingesteckt werden muss. Das ist alles der Fremde, denn wenn Sie lesen
man eject
:... Sie würden nie erwarten, dass es für USB-Flash- / USB-Sticks geeignet ist! (Und ich habe sogar versucht, in sys-utils / eject.c nachzuschauen , und ich kann nichts Offensichtliches erkennen.
:)
)Wenn
sudo udisks --detach /dev/sdb
es zuvor ausgeführt wurde, ist es natürlich/dev/sdb
nicht vorhanden, alsoeject -t /dev/sdb
scheitert es miteject: unable to find or open device for: '/dev/sdb'
. In diesem Fall wird der USB- Aus- und Wiedereinschaltzyklus wie in # 7457 beschrieben fortgesetzt. Wie wird ein logisch getrenntes USB-Gerät wieder angeschlossen? hat mir geholfen, mich zu erholen:Dies führte dazu, dass die Symbole der Partitionen im Disk Mounter-Applet wieder direkt als gemountet angezeigt wurden. Um die richtige Adresse zu finden, versuchen Sie, während der Datenträger eingehängt ist:
quelle
eject -t /dev/<DEVICE>
.Zumindest auf Debian-basierten Systemen sollte dies möglich sein:
Das funktioniert, weil ... Magie.
quelle