Jak ponownie zamontować pamięć USB po odmontowaniu z Nautilus bez odłączania?
25
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?
Urządzenie USB jest logicznie odłączone (powinien pojawić się komunikat o tym, że twoje dzienniki jądra). Nie będzie już żadnego /devwpisu, a IIRC nie pojawi się w lsusbżadnym z nich. Nie wiem, czy jest jakiś sposób na ponowne połączenie.
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 umountzamiast Nautilusa. Możesz także po prostu zadzwonić, syncaby opróżnić bufory systemu plików na dysk.
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 ^^).
Sprawdź /dev/disk/by-idi sprawdź, czy urządzenie naprawdę zniknęło. Założę się, że tak nie jest i można stamtąd ponownie zamontować mountkomendę.
LawrenceC,
1
@ultrasawblade /dev/disk/by-idzawiera 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 -> ../../sdbudisks --eject
PointedEars,
16
Takie zachowanie mam w moim systemie Ubuntu Lucid:
Po podłączeniu dysku flash USB / pendrive, który ma dwie partycje, system zgłasza:
Kiedy kliknę przycisk Wysuń na jednej z partycji - obie znikną; w tym momencie palimpsestpokazuje 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/sdburządzenie nie będzie już obecne w systemie (jednak lsusbnadal będzie wyświetlać urządzenie)!
Po dość długim poszukiwaniu odpowiedzi (wypróbowałem rzeczy udevadm monitor --environmentpodczas podłączania i odłączania, z replikacją wszystkich działań przez udevadm trigger, do sprawdzania, co BLKRRPARTrobi 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/sdbzostał wcześniej uruchomiony, to /dev/sdbnie będzie istniał, więc eject -t /dev/sdbzawiedzie 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
/dev
wpisu, a IIRC nie pojawi się wlsusb
żadnym z nich. Nie wiem, czy jest jakiś sposób na ponowne połączenie.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 ^^).
źródło
/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:
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ż: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 (jednaklsusb
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ń przezudevadm trigger
, do sprawdzania, coBLKRRPART
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ź: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
:... 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ęceject -t /dev/sdb
zawiedzieeject: 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ć: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:
źródło
eject -t /dev/<DEVICE>
.Na systemach opartych na Debianie powinieneś być w stanie to zrobić:
To działa, ponieważ ... magia.
źródło