¿Cómo volver a montar una memoria USB después de desmontar de Nautilus sin desconectarla?
25
Creo que para volver a montar una memoria USB, tengo que desconectarla físicamente y luego volver a conectarla. ¿Cómo puedo hacer esto sin una acción física tan agotadora?
El dispositivo USB está desconectado lógicamente (debe haber un mensaje para ese efecto en los registros de su núcleo). Ya no tendrá una /deventrada, y el IIRC tampoco aparecerá lsusb. No sé si hay una manera de volver a conectarlo.
Según mi experiencia en Ubuntu, cuando "expulsa" una memoria USB desde Nautilus, el dispositivo realmente desaparece del sistema. No estoy seguro de por qué esto es así, pero ni Nautilus ni la línea de comando pueden recuperarlo. Supongo que la lógica es que una vez que expulsa una memoria USB no la quiere recuperar, pero la va a desconectar.
La forma en que soluciono esto (cuando es necesario), es mediante el uso umountde Nautilus. También puede llamar syncpara vaciar los búferes del sistema de archivos en el disco.
Entonces, básicamente, a) Reconstruir nautilus desde la fuente sin ese parche (y mantenerlo actualizado cuando actualice su sistema ...) ob) use otro administrador de archivos (al menos al desmontar ^^).
Compruebe /dev/disk/by-idy vea si el dispositivo realmente se ha ido. Apuesto a que no lo es, y se puede volver a montar desde allí con un mountcomando.
LawrenceC
1
@ultrasawblade /dev/disk/by-idcontiene enlaces simbólicos a archivos de dispositivos /dev, por ejemplo /dev/disk/by-id/usb-Kingston_DT_100_G2_001CC0C60DBDFC90D32923CE-0:0 -> ../../sdb. Cuando el dispositivo desaparece udisks --eject(lo que supongo que sucede aquí), el enlace simbólico está obsoleto y no se puede usar para volver a montarlo.
PointedEars
16
Este es el comportamiento que tengo en mi sistema Ubuntu Lucid:
Cuando conecto mi memoria USB / unidad flash que tiene dos particiones, el sistema informa:
Entonces, solo las particiones tienen /dev/disk/by-uuid; mientras que tanto el disco como las particiones tienen (diferentes) /dev/disk/by-id.
Ahora, si hago clic con el botón izquierdo en cualquiera de las entradas de partición en el applet Disk Mounter en el escritorio de Gnome2 en Lucid, solo obtengo dos entradas: "Abrir" o "Expulsar" (como se menciona en [SOLUCIONADO] ¿Cómo se vuelve a montar? una unidad usb con nautilus en lynx?, de la respuesta de @Thomas , refiriéndose a un 16_hide_unmount.patch ). Además, palimpsestaquí se muestran dos particiones para el disco.
Cuando hago clic en Expulsar en cualquiera de las particiones, ambas desaparecen; en este punto, palimpsestmuestra el disco, pero no las particiones, y en su lugar aparece el mensaje "No se encontró el medio"; además:
$ 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
Entonces, como se mencionó en el comentario de @ultrasawblade , de hecho el disco está allí, pero no las particiones, aunque creo que necesitaría las particiones como dispositivos para poder hacerlo mount.
Además, con el mismo comportamiento que hago clic con el botón izquierdo + "Expulsar" en la GUI del escritorio, puedo acceder al terminal sudo eject /dev/sdb. Tenga en cuenta que también se puede abrir palimpsest, a partir de ahí, haga clic en cada una de las dos particiones y haga clic en "Desmontar volumen"; en ese punto, los iconos de las particiones se seguirán mostrando en el applet Disk Mounter, pero se anotarán como desmontados; y luego se puede hacer sudo udisks --detach /dev/sdb: esto hace que los iconos desaparezcan del applet Disk Mounter, ¡pero también el /dev/sdbdispositivo ya no estará presente en el sistema (sin embargo, lsusbtodavía mostrará el dispositivo)!
Después de buscar bastante la respuesta (probé cosas desde udevadm monitor --environmentconectar y desconectar, con la replicación de todas las acciones a través udevadm trigger, hasta investigar lo que hace el BLKRRPARTioctl), sin ningún éxito: finalmente me topé con Cómo volver a montar un dispositivo USB sin quitar y volver a insertar - Ubuntu / Debian , que tiene la respuesta:
sudo eject -t /dev/sdb
Después de ejecutar este comando, las dos particiones aparecen nuevamente en el applet de Disk Mounter, ¡sin desconectar / volver a enchufar la llave USB! Esto es todo lo extraño, porque si lees man eject:
-t With this option the drive is given a CD-ROM tray close command.
Not all devices support this command.
... ¡nunca esperarías que sea aplicable a la unidad USB Flash / Thumb! (E incluso intenté buscar en sys-utils / eject.c , y no puedo ver nada obvio :))
Por supuesto, si sudo udisks --detach /dev/sdbse ha ejecutado anteriormente, entonces /dev/sdbno existirá, por eject -t /dev/sdblo que fallará eject: unable to find or open device for: '/dev/sdb'. En ese caso, el ciclo de alimentación del USB como se indica en # 7457 ¿Cómo reconectar un dispositivo USB desconectado lógicamente? me ayudó a recuperarme:
$ 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'
Esto hizo que los iconos de las particiones se mostraran nuevamente en el applet Disk Mounter, directamente como montados; para encontrar la dirección correcta, intente mientras el disco está montado:
$ 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
entrada, y el IIRC tampoco aparecerálsusb
. No sé si hay una manera de volver a conectarlo.Respuestas:
Según mi experiencia en Ubuntu, cuando "expulsa" una memoria USB desde Nautilus, el dispositivo realmente desaparece del sistema. No estoy seguro de por qué esto es así, pero ni Nautilus ni la línea de comando pueden recuperarlo. Supongo que la lógica es que una vez que expulsa una memoria USB no la quiere recuperar, pero la va a desconectar.
La forma en que soluciono esto (cuando es necesario), es mediante el uso
umount
de Nautilus. También puede llamarsync
para vaciar los búferes del sistema de archivos en el disco.Acabo de encontrar un hilo que tiene más información: http://ubuntuforums.org/showthread.php?t=1477247
Entonces, básicamente, a) Reconstruir nautilus desde la fuente sin ese parche (y mantenerlo actualizado cuando actualice su sistema ...) ob) use otro administrador de archivos (al menos al desmontar ^^).
fuente
/dev/disk/by-id
y vea si el dispositivo realmente se ha ido. Apuesto a que no lo es, y se puede volver a montar desde allí con unmount
comando./dev/disk/by-id
contiene enlaces simbólicos a archivos de dispositivos/dev
, por ejemplo/dev/disk/by-id/usb-Kingston_DT_100_G2_001CC0C60DBDFC90D32923CE-0:0 -> ../../sdb
. Cuando el dispositivo desapareceudisks --eject
(lo que supongo que sucede aquí), el enlace simbólico está obsoleto y no se puede usar para volver a montarlo.Este es el comportamiento que tengo en mi sistema Ubuntu Lucid:
Cuando conecto mi memoria USB / unidad flash que tiene dos particiones, el sistema informa:
Entonces, solo las particiones tienen
/dev/disk/by-uuid
; mientras que tanto el disco como las particiones tienen (diferentes)/dev/disk/by-id
.Ahora, si hago clic con el botón izquierdo en cualquiera de las entradas de partición en el applet Disk Mounter en el escritorio de Gnome2 en Lucid, solo obtengo dos entradas: "Abrir" o "Expulsar" (como se menciona en [SOLUCIONADO] ¿Cómo se vuelve a montar? una unidad usb con nautilus en lynx?, de la respuesta de @Thomas , refiriéndose a un 16_hide_unmount.patch ). Además,
palimpsest
aquí se muestran dos particiones para el disco.Cuando hago clic en Expulsar en cualquiera de las particiones, ambas desaparecen; en este punto,
palimpsest
muestra el disco, pero no las particiones, y en su lugar aparece el mensaje "No se encontró el medio"; además:Entonces, como se mencionó en el comentario de @ultrasawblade , de hecho el disco está allí, pero no las particiones, aunque creo que necesitaría las particiones como dispositivos para poder hacerlo
mount
.Además, con el mismo comportamiento que hago clic con el botón izquierdo + "Expulsar" en la GUI del escritorio, puedo acceder al terminal
sudo eject /dev/sdb
. Tenga en cuenta que también se puede abrirpalimpsest
, a partir de ahí, haga clic en cada una de las dos particiones y haga clic en "Desmontar volumen"; en ese punto, los iconos de las particiones se seguirán mostrando en el applet Disk Mounter, pero se anotarán como desmontados; y luego se puede hacersudo udisks --detach /dev/sdb
: esto hace que los iconos desaparezcan del applet Disk Mounter, ¡pero también el/dev/sdb
dispositivo ya no estará presente en el sistema (sin embargo,lsusb
todavía mostrará el dispositivo)!Después de buscar bastante la respuesta (probé cosas desde
udevadm monitor --environment
conectar y desconectar, con la replicación de todas las acciones a travésudevadm trigger
, hasta investigar lo que hace elBLKRRPART
ioctl), sin ningún éxito: finalmente me topé con Cómo volver a montar un dispositivo USB sin quitar y volver a insertar - Ubuntu / Debian , que tiene la respuesta:Después de ejecutar este comando, las dos particiones aparecen nuevamente en el applet de Disk Mounter, ¡sin desconectar / volver a enchufar la llave USB! Esto es todo lo extraño, porque si lees
man eject
:... ¡nunca esperarías que sea aplicable a la unidad USB Flash / Thumb! (E incluso intenté buscar en sys-utils / eject.c , y no puedo ver nada obvio
:)
)Por supuesto, si
sudo udisks --detach /dev/sdb
se ha ejecutado anteriormente, entonces/dev/sdb
no existirá, poreject -t /dev/sdb
lo que fallaráeject: unable to find or open device for: '/dev/sdb'
. En ese caso, el ciclo de alimentación del USB como se indica en # 7457 ¿Cómo reconectar un dispositivo USB desconectado lógicamente? me ayudó a recuperarme:Esto hizo que los iconos de las particiones se mostraran nuevamente en el applet Disk Mounter, directamente como montados; para encontrar la dirección correcta, intente mientras el disco está montado:
fuente
eject -t /dev/<DEVICE>
.En los sistemas basados en Debian, al menos, debería poder hacer esto:
Esto funciona porque ... magia.
fuente