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:
- finden Sie heraus, was der Laufwerksbuchstabe sein sollte ... Ich würde hier für das Beispiel /dev/sdb sagen.
- Werfen Sie den "wäre"-Laufwerksbuchstaben doppelt aus, um das Gerät effektiv wieder einzuschalten.
- Gewinne!
Das funktioniert, weil... Magie.
# determine 'would be drive letter'
lsblk
# do magic
eject /dev/sdb; sleep 1; eject -t /dev/sdb