GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie kann ich einen USB-Stick nach dem Abmelden von Nautilus erneut mounten, ohne ihn zu trennen?

Dies ist das Verhalten, das ich auf meinem Ubuntu Lucid-System habe:

Wenn ich meinen USB-Stick/Stick mit zwei Partitionen anschließe, meldet das System:

$ ls /dev/sdb*
/dev/sdb  /dev/sdb1  /dev/sdb2

$ 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
--
  partition table:
    scheme:                    mbr
    count:                     2

$ udisks --show-info /dev/sdb1 | grep -A2 'partition table\|by-id'
    by-id:                     /dev/disk/by-id/usb-takeMS_USB_Mini_AA07013000010057-0:0-part1
    by-id:                     /dev/disk/by-uuid/581E-EE0B
    by-path:                   /dev/disk/by-path/pci-0000:00:1d.7-usb-0:2:1.0-scsi-0:0:0:0-part1
  detected at:                 Mon 29 Apr 2013 04:24:25 PM CEST

$ udisks --show-info /dev/sdb2 | grep -A2 'partition table\|by-id'
    by-id:                     /dev/disk/by-id/usb-takeMS_USB_Mini_AA07013000010057-0:0-part2
    by-id:                     /dev/disk/by-uuid/4A0E-A166
    by-path:                   /dev/disk/by-path/pci-0000:00:1d.7-usb-0:2:1.0-scsi-0:0:0:0-part2
  detected at:                 Mon 29 Apr 2013 04:24:25 PM CEST

$ 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
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/sdb1
$ udevadm info --query=all --name=/dev/sdb2 | 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/sdb2
$ sudo partprobe /dev/sdb
$

Also haben nur Partitionen /dev/disk/by-uuid; während sowohl Festplatte als auch Partitionen (unterschiedliche) /dev/disk/by-id haben .

Wenn ich jetzt mit der linken Maustaste auf einen der Partitionseinträge im Disk Mounter-Applet im Gnome2-Desktop in Lucid klicke, erhalte ich nur zwei Einträge:„Öffnen“ oder „Auswerfen“ (wie in [GELÖST] Wie funktioniert das erneute Mounten erwähnt ein USB-Laufwerk mit Nautilus in Lynx?, aus der Antwort von @Thomas, die sich auf einen 16_hide_unmount.patch bezieht). Auch palimpsest hier zeigt zwei Partitionen für die Festplatte.

Wenn ich auf einer der Partitionen auf Eject klicke, verschwinden beide; an dieser Stelle palimpsest zeigt die Festplatte, aber keine Partitionen und stattdessen eine "Kein Medium gefunden"-Meldung; auch:

$ 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

Also, wie im Kommentar von @ultrasawblade erwähnt, ist die Festplatte tatsächlich da, aber nicht die Partitionen - obwohl ich denke, dass ich die Partitionen als Geräte brauchen würde , um mount .

Außerdem kann ich das gleiche Verhalten wie Linksklick + "Auswerfen" in der Desktop-GUI im Terminal mit sudo eject /dev/sdb erreichen . Beachten Sie, dass man auch palimpsest öffnen kann , klicken Sie von dort aus auf jede der beiden Partitionen und dann auf „Unmount Volume“ – an diesem Punkt bleiben die Symbole für die Partitionen noch im Disk Mounter-Applet angezeigt, aber als nicht gemountet vermerkt werden; und dann kann man sudo udisks --detach /dev/sdb machen :Dadurch verschwinden die Symbole aus dem Disk Mounter-Applet - aber auch /dev/sdb Gerät wird nicht mehr auf dem System vorhanden sein (jedoch lsusb wird das Gerät trotzdem anzeigen)!

Nachdem ich ziemlich lange nach der Antwort gesucht habe (versuchte Sachen aus udevadm monitor --environment beim Ein- und Ausstecken, wobei alle Aktionen über udevadm trigger repliziert werden , um nachzusehen, was der BLKRRPART ist ioctl tut), ohne Erfolg - ich bin schließlich auf How To Remount A USB Stick Without Remove And Reserting - Ubuntu/Debian gestoßen, das die Antwort hat:

sudo eject -t /dev/sdb

Nachdem dieser Befehl ausgeführt wurde, erscheinen die beiden Partitionen wieder im Disk Mounter-Applet – ohne den USB-Stick zu entfernen/wieder anzuschließen!! Das ist umso seltsamer, denn wenn Sie man eject lesen :

   -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 auf USB-Flash-/Thumb-Laufwerke anwendbar ist! (Und ich habe sogar versucht, in sys-utils/eject.c nachzusehen, und ich kann nichts Offensichtliches :) sehen )

Natürlich, wenn sudo udisks --detach /dev/sdb zuvor ausgeführt wurde, dann /dev/sdb wird nicht existieren, also eject -t /dev/sdb schlägt mit eject: unable to find or open device for: '/dev/sdb' fehl . In diesem Fall wird das USB-Gerät wie in #7457 beschrieben aus- und wieder eingeschaltet. So verbinden Sie ein logisch getrenntes USB-Gerät erneut. hat mir geholfen, mich zu erholen:

$ 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'

Dadurch wurden die Symbole der Partitionen im Disk Mounter-Applet wieder direkt als gemountet angezeigt; Um die richtige Adresse zu finden, versuchen Sie es, während die Festplatte gemountet 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

Nach meiner Erfahrung in Ubuntu verschwindet das Gerät tatsächlich aus dem 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, sobald Sie einen USB-Stick auswerfen, ihn nicht zurückhaben wollen, sondern ihn trennen werden.

Die Art und Weise, wie ich dies umgehe (falls erforderlich), ist die Verwendung von umount statt Nautilus. Sie können auch einfach sync anrufen um die Dateisystempuffer auf die Festplatte zu leeren.

Ich habe gerade einen Thread gefunden, der mehr Informationen enthält:http://ubuntuforums.org/showthread.php?t=1477247

Also im Grunde entweder a) nautilus ohne diesen Patch neu erstellen (und auf dem neuesten Stand halten, wenn Sie Ihr System aktualisieren ...) oder b) einen anderen Dateimanager verwenden (zumindest beim Unmounten ^^).


Zumindest auf Debian-basierten Systemen sollten Sie dazu in der Lage sein:

  1. finden Sie heraus, was der Laufwerksbuchstabe sein sollte ... Ich würde hier für das Beispiel /dev/sdb sagen.
  2. Werfen Sie den "wäre"-Laufwerksbuchstaben doppelt aus, um das Gerät effektiv wieder einzuschalten.
  3. Gewinne!

Das funktioniert, weil... Magie.

# determine 'would be drive letter'
lsblk
# do magic
eject /dev/sdb; sleep 1; eject -t /dev/sdb

Linux
  1. So booten Sie von einem USB-Laufwerk in VirtualBox unter Linux

  2. So erstellen Sie einen bootfähigen Linux-USB-Stick über die Linux-Befehlszeile

  3. So erstellen Sie einen bootfähigen Linux-USB-Stick unter Windows

  4. Wie kann ich ohne Live-CD oder USB-Laufwerk von 14.10 auf 14.04 zurückstufen?

  5. Wie kopiere ich Text von meinem xterm ohne Maus?

So installieren Sie RHEL 8 von USB

So installieren Sie Ubuntu von USB

So erstellen Sie unter Linux ein ISO von einem bootfähigen USB-Laufwerk

So booten Sie von einem USB-Laufwerk in Virtualbox unter Linux

Wie schreibe ich ein ISO-Image von der Linux-Befehlszeile auf einen USB-Speicherstick?

Wie rufe ich einen bestimmten Befehl aus dem Befehlsverlauf ab, ohne ihn auszuführen?