Uważam, że aby ponownie zamontować pamięć USB, muszę ją fizycznie odłączyć, a następnie podłączyć ponownie. Jak mogę to zrobić bez tak męczącego wysiłku fizycznego?
Uważam, że aby ponownie zamontować pamięć USB, muszę ją fizycznie odłączyć, a następnie podłączyć ponownie. Jak mogę to zrobić bez tak męczącego wysiłku fizycznego?
Odpowiedzi:
Z mojego doświadczenia w Ubuntu, kiedy „wysuwasz” pamięć USB z Nautilus, urządzenie faktycznie znika z systemu. Nie jestem pewien, dlaczego tak jest, ale ani Nautilus, ani wiersz poleceń nie mogą go odzyskać. Myślę, że logika jest taka, że kiedy wyjmiesz pamięć USB, nie chcesz jej z powrotem, ale zamierzasz ją odłączyć.
Sposób na obejście tego (w razie potrzeby) polega na użyciu umount
zamiast Nautilusa. Możesz także po prostu zadzwonić, sync
aby opróżnić bufory systemu plików na dysk.
Właśnie znalazłem wątek, który zawiera więcej informacji: http://ubuntuforums.org/showthread.php?t=1477247
Więc w zasadzie albo: a) Odbuduj nautilusa ze źródła bez tej łatki (i aktualizuj go podczas aktualizacji systemu ...) lub b) użyj innego menedżera plików (przynajmniej podczas odmontowywania ^^).
/dev/disk/by-id
i sprawdź, czy urządzenie naprawdę zniknęło. Założę się, że tak nie jest i można stamtąd ponownie zamontować mount
komendę.
/dev/disk/by-id
zawiera na przykład dowiązania symboliczne do plików urządzeń . Kiedy urządzenie zniknie (co, jak zakładam, dzieje się tutaj), dowiązanie symboliczne jest nieaktualne i nie można go użyć do ponownego montażu. /dev
/dev/disk/by-id/usb-Kingston_DT_100_G2_001CC0C60DBDFC90D32923CE-0:0 -> ../../sdb
udisks --eject
Takie zachowanie mam w moim systemie Ubuntu Lucid:
Po podłączeniu dysku flash USB / pendrive, który ma dwie partycje, system zgłasza:
$ 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
$
Tak więc tylko partycje mają /dev/disk/by-uuid
; podczas gdy zarówno dysk, jak i partycje mają (różne) /dev/disk/by-id
.
Teraz, jeśli kliknę lewym przyciskiem myszy dowolne pozycje partycji w aplecie Disk Mounter na pulpicie Gnome2 w Lucid, otrzymam tylko dwa wpisy: „Otwórz” lub „Wysuń” (jak wspomniano w [ROZWIĄZANY] Jak zamontować ponownie dysk USB z nautilusem w rysiu ? z odpowiedzi @ Thomas , odnoszący się do 16_hide_unmount.patch ). Tutaj również palimpsest
pokazano dwie partycje dysku.
Kiedy kliknę przycisk Wysuń na jednej z partycji - obie znikną; w tym momencie palimpsest
pokazuje dysk, ale nie ma partycji, a zamiast tego pojawia się komunikat „Nie znaleziono nośnika”; również:
$ 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
Tak więc, jak wspomniano w komentarzu @ultrasawblade , rzeczywiście dysk tam jest, ale nie ma partycji - chociaż myślę, że potrzebowałbym partycji jako urządzeń , aby to zrobić mount
.
Również takie samo zachowanie jak kliknięcie lewym przyciskiem + „Wysuń” w graficznym graficznym interfejsie użytkownika, z którym mogę się połączyć sudo eject /dev/sdb
. Zauważ, że można również otworzyć palimpsest
, a następnie kliknąć każdą z dwóch partycji i kliknąć „Odinstaluj wolumin” - w tym momencie ikony partycji będą nadal wyświetlane w aplecie Disk Mounter, ale będą oznaczone jako odmontowane; i wtedy można zrobić sudo udisks --detach /dev/sdb
: powoduje to zniknięcie ikon z apletu Disk Mounter - ale także /dev/sdb
urządzenie nie będzie już obecne w systemie (jednak lsusb
nadal będzie wyświetlać urządzenie)!
Po dość długim poszukiwaniu odpowiedzi (wypróbowałem rzeczy udevadm monitor --environment
podczas podłączania i odłączania, z replikacją wszystkich działań przez udevadm trigger
, do sprawdzania, co BLKRRPART
robi ioctl), bez powodzenia - w końcu natknąłem się na jak ponownie zamontować pamięć USB bez wyjmowania i ponownego wkładania - Ubuntu / Debian , który ma odpowiedź:
sudo eject -t /dev/sdb
Po uruchomieniu tego polecenia - dwie partycje pojawiają się ponownie w aplecie Disk Mounter - bez odłączania / ponownego podłączania klucza USB !! To wszystko jest dziwniejsze, ponieważ jeśli czytasz man eject
:
-t With this option the drive is given a CD-ROM tray close command.
Not all devices support this command.
... nigdy nie spodziewałbyś się, że ma to zastosowanie do pamięci USB Flash / Thumb! (Próbowałem nawet zajrzeć do sys-utils / eject.c i nie widzę niczego oczywistego :)
)
Oczywiście, jeśli sudo udisks --detach /dev/sdb
został wcześniej uruchomiony, to /dev/sdb
nie będzie istniał, więc eject -t /dev/sdb
zawiedzie eject: unable to find or open device for: '/dev/sdb'
. W takim przypadku cykl zasilania USB opisany w # 7457 Jak ponownie podłączyć logicznie odłączone urządzenie USB? pomógł mi odzyskać:
$ 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'
To sprawiło, że ikony partycji ponownie pokazały się w aplecie Disk Mounter, bezpośrednio jako zamontowane; aby znaleźć właściwy adres, spróbuj, gdy dysk jest zamontowany:
$ 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
eject -t /dev/<DEVICE>
.
Na systemach opartych na Debianie powinieneś być w stanie to zrobić:
To działa, ponieważ ... magia.
# determine 'would be drive letter'
lsblk
# do magic
eject /dev/sdb; sleep 1; eject -t /dev/sdb
/dev
wpisu, a IIRC nie pojawi się wlsusb
żadnym z nich. Nie wiem, czy jest jakiś sposób na ponowne połączenie.