Как перемонтировать USB-флешку после отсоединения от Nautilus, не отключая ее?
25
Я обнаружил, что для того, чтобы заново смонтировать USB-накопитель, я должен физически отключить его, а затем снова подключить. Как я могу сделать это без таких утомительных физических действий?
USB-устройство логически отключено (должно появиться сообщение об этом в журналах вашего ядра). У него больше не будет /devзаписи, и IIRC также не появится lsusb. Я не знаю, есть ли способ восстановить это.
Из моего опыта работы с Ubuntu, когда вы «извлекаете» USB-флешку из Nautilus, устройство фактически исчезает из системы. Я не уверен, почему это так, но ни Наутилус, ни командная строка не могут его вернуть. Я предполагаю, что логика заключается в том, что когда вы извлекаете USB-флешку, вы не хотите ее возвращать, но собираетесь ее отключить.
Я работаю над этим (когда это необходимо), используя umountвместо Наутилуса. Вы также можете просто позвонить, syncчтобы сбросить буферы файловой системы на диск.
Так что в основном либо: а) пересоберите nautilus из исходного кода без этого патча (и обновляйте его при обновлении системы ...), либо б) используйте другой файловый менеджер (по крайней мере, при размонтировании ^^).
Проверьте /dev/disk/by-idи посмотрите, действительно ли устройство исчезло. Могу поспорить, что это не так, и может быть перемонтирован оттуда с помощью mountкоманды.
LawrenceC
1
@ultrasawblade /dev/disk/by-idсодержит символические ссылки на файлы устройств в /dev, например /dev/disk/by-id/usb-Kingston_DT_100_G2_001CC0C60DBDFC90D32923CE-0:0 -> ../../sdb. Когда устройство пропало udisks --eject(что, как я предполагаю, происходит здесь), символическая ссылка устарела и не может быть использована для повторной установки.
PointedEars
16
Это поведение, которое я имею в моей системе Ubuntu Lucid:
Когда я подключаю флэш-накопитель USB с двумя разделами, система сообщает:
Итак, только разделы есть /dev/disk/by-uuid; в то время как диск и разделы имеют (разные) /dev/disk/by-id.
Теперь, если я щелкну левой кнопкой мыши по любой записи раздела в апплете Disk Mounter на рабочем столе Gnome2 в Lucid, я получу только две записи: «Открыть» или «Извлечь» (как указано в [РЕШЕНО]. Как перемонтировать USB-накопитель с nautilus в lynx ? , из ответа @Thomas , ссылающегося на 16_hide_unmount.patch ). Также palimpsestздесь показаны два раздела для диска.
Когда я нажимаю «Извлечь» на одном из разделов - они оба исчезают; в этот момент palimpsestпоказывается диск, но нет разделов, и вместо этого появляется сообщение «No media found»; также:
$ 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
Итак, как уже говорилось в комментарии по @ultrasawblade , на самом деле диск есть, но не разделы - хотя, я думаю , я бы нужны разделы как устройства для того, чтобы mount.
Кроме того, такое же поведение, как при щелчке левой кнопкой мыши по клавише «Eject» в графическом интерфейсе рабочего стола, я могу получить в терминале sudo eject /dev/sdb. Обратите внимание, что также можно открыть palimpsest, оттуда нажать на каждый из двух разделов и нажать «Размонтировать том» - в этот момент значки разделов все равно будут отображаться в апплете Disk Mounter, но будут отмечены как отключенные; и тогда можно сделать sudo udisks --detach /dev/sdb: это заставляет значки исчезать из апплета Disk Mounter, но /dev/sdbустройство больше не будет присутствовать в системе (однако оно lsusbвсе равно будет отображать устройство)!
После того, как я довольно долго искал ответ (пробовал что-то udevadm monitor --environmentво время подключения и отключения, с репликацией всех действий через udevadm trigger, чтобы посмотреть, что BLKRRPARTделает ioctl), но безуспешно - я, наконец, наткнулся на Как перемонтировать USB-флешку без извлечения и повторной установки - Ubuntu / Debian , на который есть ответ:
sudo eject -t /dev/sdb
После выполнения этой команды - два раздела снова появляются в апплете Disk Mounter - без отключения / повторного подключения USB-ключа !! Это все незнакомец, потому что если вы читаете man eject:
-t With this option the drive is given a CD-ROM tray close command.
Not all devices support this command.
... вы никогда не ожидаете, что это применимо к USB Flash / Thumb drive! (И я даже попытался заглянуть в sys-utils / eject.c , и я не вижу ничего очевидного :))
Конечно, если sudo udisks --detach /dev/sdbон запускался ранее, то /dev/sdbне будет существовать, поэтому eject -t /dev/sdbпотерпит неудачу с eject: unable to find or open device for: '/dev/sdb'. В этом случае цикл питания USB, как указано в # 7457 Как повторно подключить логически отключенное устройство USB? помог мне выздороветь
$ 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'
Это привело к тому, что значки разделов снова отобразились в апплете Disk Mounter, прямо как смонтированные; чтобы найти правильный адрес, попробуйте, пока диск смонтирован:
$ 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
записи, и IIRC также не появитсяlsusb
. Я не знаю, есть ли способ восстановить это.Ответы:
Из моего опыта работы с Ubuntu, когда вы «извлекаете» USB-флешку из Nautilus, устройство фактически исчезает из системы. Я не уверен, почему это так, но ни Наутилус, ни командная строка не могут его вернуть. Я предполагаю, что логика заключается в том, что когда вы извлекаете USB-флешку, вы не хотите ее возвращать, но собираетесь ее отключить.
Я работаю над этим (когда это необходимо), используя
umount
вместо Наутилуса. Вы также можете просто позвонить,sync
чтобы сбросить буферы файловой системы на диск.Только что нашел тему, которая имеет больше информации: http://ubuntuforums.org/showthread.php?t=1477247
Так что в основном либо: а) пересоберите nautilus из исходного кода без этого патча (и обновляйте его при обновлении системы ...), либо б) используйте другой файловый менеджер (по крайней мере, при размонтировании ^^).
источник
/dev/disk/by-id
и посмотрите, действительно ли устройство исчезло. Могу поспорить, что это не так, и может быть перемонтирован оттуда с помощьюmount
команды./dev/disk/by-id
содержит символические ссылки на файлы устройств в/dev
, например/dev/disk/by-id/usb-Kingston_DT_100_G2_001CC0C60DBDFC90D32923CE-0:0 -> ../../sdb
. Когда устройство пропалоudisks --eject
(что, как я предполагаю, происходит здесь), символическая ссылка устарела и не может быть использована для повторной установки.Это поведение, которое я имею в моей системе Ubuntu Lucid:
Когда я подключаю флэш-накопитель USB с двумя разделами, система сообщает:
Итак, только разделы есть
/dev/disk/by-uuid
; в то время как диск и разделы имеют (разные)/dev/disk/by-id
.Теперь, если я щелкну левой кнопкой мыши по любой записи раздела в апплете Disk Mounter на рабочем столе Gnome2 в Lucid, я получу только две записи: «Открыть» или «Извлечь» (как указано в [РЕШЕНО]. Как перемонтировать USB-накопитель с nautilus в lynx ? , из ответа @Thomas , ссылающегося на 16_hide_unmount.patch ). Также
palimpsest
здесь показаны два раздела для диска.Когда я нажимаю «Извлечь» на одном из разделов - они оба исчезают; в этот момент
palimpsest
показывается диск, но нет разделов, и вместо этого появляется сообщение «No media found»; также:Итак, как уже говорилось в комментарии по @ultrasawblade , на самом деле диск есть, но не разделы - хотя, я думаю , я бы нужны разделы как устройства для того, чтобы
mount
.Кроме того, такое же поведение, как при щелчке левой кнопкой мыши по клавише «Eject» в графическом интерфейсе рабочего стола, я могу получить в терминале
sudo eject /dev/sdb
. Обратите внимание, что также можно открытьpalimpsest
, оттуда нажать на каждый из двух разделов и нажать «Размонтировать том» - в этот момент значки разделов все равно будут отображаться в апплете Disk Mounter, но будут отмечены как отключенные; и тогда можно сделатьsudo udisks --detach /dev/sdb
: это заставляет значки исчезать из апплета Disk Mounter, но/dev/sdb
устройство больше не будет присутствовать в системе (однако оноlsusb
все равно будет отображать устройство)!После того, как я довольно долго искал ответ (пробовал что-то
udevadm monitor --environment
во время подключения и отключения, с репликацией всех действий черезudevadm trigger
, чтобы посмотреть, чтоBLKRRPART
делает ioctl), но безуспешно - я, наконец, наткнулся на Как перемонтировать USB-флешку без извлечения и повторной установки - Ubuntu / Debian , на который есть ответ:После выполнения этой команды - два раздела снова появляются в апплете Disk Mounter - без отключения / повторного подключения USB-ключа !! Это все незнакомец, потому что если вы читаете
man eject
:... вы никогда не ожидаете, что это применимо к USB Flash / Thumb drive! (И я даже попытался заглянуть в sys-utils / eject.c , и я не вижу ничего очевидного
:)
)Конечно, если
sudo udisks --detach /dev/sdb
он запускался ранее, то/dev/sdb
не будет существовать, поэтомуeject -t /dev/sdb
потерпит неудачу сeject: unable to find or open device for: '/dev/sdb'
. В этом случае цикл питания USB, как указано в # 7457 Как повторно подключить логически отключенное устройство USB? помог мне выздороветьЭто привело к тому, что значки разделов снова отобразились в апплете Disk Mounter, прямо как смонтированные; чтобы найти правильный адрес, попробуйте, пока диск смонтирован:
источник
eject -t /dev/<DEVICE>
.В системах на основе Debian, по крайней мере, вы должны сделать это:
Это работает, потому что ... магия.
источник