Como montar novamente um dispositivo USB após desmontar do Nautilus sem desconectá-lo?
25
Acho que, para montar novamente um pendrive, eu tenho que desconectá-lo fisicamente e reconectá-lo. Como posso fazer isso sem uma ação física tão cansativa?
O dispositivo USB é desconectado logicamente (deve haver uma mensagem para esse efeito nos logs do kernel). Ele não terá /devmais entrada e o IIRC também não aparecerá lsusb. Não sei se há uma maneira de reconectá-lo.
Da minha experiência no Ubuntu, quando você "ejeta" um pendrive do Nautilus, o dispositivo realmente desaparece do sistema. Não sei por que, mas nem o Nautilus nem a linha de comando podem recuperá-lo. Acho que a lógica é que, uma vez que você ejeta um pendrive, você não o quer de volta, mas vai desconectá-lo.
A maneira como resolvo isso (quando necessário) é usando em umountvez do Nautilus. Você também pode simplesmente ligar syncpara liberar os buffers do sistema de arquivos no disco.
Portanto, basicamente a) Reconstrua o nautilus a partir da fonte sem esse patch (e mantenha-o atualizado quando você atualizar seu sistema ...) ou b) use outro gerenciador de arquivos (pelo menos ao desmontar ^^).
Verifique /dev/disk/by-ide veja se o dispositivo realmente se foi. Aposto que não, e pode ser remontado a partir daí com um mountcomando.
21430 LawrenceC
11
@ultrasawblade /dev/disk/by-idcontém links simbólicos para arquivos de dispositivos /dev, por exemplo /dev/disk/by-id/usb-Kingston_DT_100_G2_001CC0C60DBDFC90D32923CE-0:0 -> ../../sdb. Quando o dispositivo sai atrás udisks --eject(o que suponho que aconteça aqui), o link simbólico fica obsoleto e não pode ser usado para remontar.
PointedEars
16
Este é o comportamento que tenho no meu sistema Ubuntu Lucid:
Quando conecto meu flash / pen drive USB com duas partições, o sistema informa:
Então, apenas partições têm /dev/disk/by-uuid ; enquanto o disco e as partições têm (diferente) /dev/disk/by-id.
Agora, se eu clicar com o botão esquerdo do mouse em uma das entradas da partição no miniaplicativo Disk Mounter na área de trabalho Gnome2 no Lucid, receberei apenas duas entradas: "Abrir" ou "Ejetar" (como mencionado em [RESOLVIDO] Como remontar uma unidade USB com nautilus no lynx?, da resposta de @Thomas , referindo-se a 16_hide_unmount.patch ). Além disso, palimpsestaqui mostra duas partições para o disco.
Quando clico no botão Ejetar em uma das partições - elas desaparecem; neste momento, palimpsestmostra o disco, mas nenhuma partição e uma mensagem "Nenhum meio encontrado"; Além disso:
$ 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
Então, como mencionado no comentário de @ultrasawblade , de fato o disco está lá, mas não as partições - embora, eu acho que precisaria das partições como dispositivos , para isso mount.
Além disso, o mesmo comportamento que clique com o botão esquerdo do mouse + "Ejetar" na GUI da área de trabalho, posso entrar no terminal com sudo eject /dev/sdb. Observe que também é possível abrir palimpsest, a partir daí, clique em cada uma das duas partições e clique em "Desmontar volume" - nesse ponto, os ícones para as partições ainda serão mostrados no applet Disk Mounter, mas serão anotados como desmontados; e então pode-se fazer sudo udisks --detach /dev/sdb: isso faz com que os ícones desapareçam do applet Disk Mounter - mas também o /dev/sdbdispositivo não estará mais presente no sistema (no entanto, lsusbainda mostrará o dispositivo)!
Depois de procurar um pouco pela resposta (tentei udevadm monitor --environmentvárias coisas durante o processo de conectar e desconectar, com a replicação de todas as ações udevadm trigger, para verificar o que o BLKRRPARTioctl faz), sem nenhum sucesso - eu finalmente me deparei com Como remontar um pendrive sem remover e reinserir - Ubuntu / Debian , que tem a resposta:
sudo eject -t /dev/sdb
Após a execução deste comando - as duas partições aparecem novamente no applet Disk Mounter - sem desconectar / reconectar a chave USB !! Isso é tudo estranho, porque se você ler man eject:
-t With this option the drive is given a CD-ROM tray close command.
Not all devices support this command.
... você nunca esperaria que fosse aplicável à unidade USB Flash / Thumb! (E eu até tentei olhar para sys-utils / eject.c , e não consigo ver nada óbvio :))
É claro que, se sudo udisks --detach /dev/sdbjá foi executado anteriormente, /dev/sdbnão existirá, então eject -t /dev/sdbfalhará eject: unable to find or open device for: '/dev/sdb'. Nesse caso, o ciclo de energia USB, conforme observado em # 7457 Como reconectar um dispositivo USB logicamente desconectado?me ajudou a recuperar:
$ 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'
Isso fez com que os ícones das partições fossem exibidos novamente no applet Disk Mounter, diretamente como montados; para encontrar o endereço certo, tente enquanto o 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
mais entrada e o IIRC também não aparecerálsusb
. Não sei se há uma maneira de reconectá-lo.Respostas:
Da minha experiência no Ubuntu, quando você "ejeta" um pendrive do Nautilus, o dispositivo realmente desaparece do sistema. Não sei por que, mas nem o Nautilus nem a linha de comando podem recuperá-lo. Acho que a lógica é que, uma vez que você ejeta um pendrive, você não o quer de volta, mas vai desconectá-lo.
A maneira como resolvo isso (quando necessário) é usando em
umount
vez do Nautilus. Você também pode simplesmente ligarsync
para liberar os buffers do sistema de arquivos no disco.Acabei de encontrar um tópico com mais informações: http://ubuntuforums.org/showthread.php?t=1477247
Portanto, basicamente a) Reconstrua o nautilus a partir da fonte sem esse patch (e mantenha-o atualizado quando você atualizar seu sistema ...) ou b) use outro gerenciador de arquivos (pelo menos ao desmontar ^^).
fonte
/dev/disk/by-id
e veja se o dispositivo realmente se foi. Aposto que não, e pode ser remontado a partir daí com ummount
comando./dev/disk/by-id
contém links simbólicos para arquivos de dispositivos/dev
, por exemplo/dev/disk/by-id/usb-Kingston_DT_100_G2_001CC0C60DBDFC90D32923CE-0:0 -> ../../sdb
. Quando o dispositivo sai atrásudisks --eject
(o que suponho que aconteça aqui), o link simbólico fica obsoleto e não pode ser usado para remontar.Este é o comportamento que tenho no meu sistema Ubuntu Lucid:
Quando conecto meu flash / pen drive USB com duas partições, o sistema informa:
Então, apenas partições têm
/dev/disk/by-uuid
; enquanto o disco e as partições têm (diferente)/dev/disk/by-id
.Agora, se eu clicar com o botão esquerdo do mouse em uma das entradas da partição no miniaplicativo Disk Mounter na área de trabalho Gnome2 no Lucid, receberei apenas duas entradas: "Abrir" ou "Ejetar" (como mencionado em [RESOLVIDO] Como remontar uma unidade USB com nautilus no lynx?, da resposta de @Thomas , referindo-se a 16_hide_unmount.patch ). Além disso,
palimpsest
aqui mostra duas partições para o disco.Quando clico no botão Ejetar em uma das partições - elas desaparecem; neste momento,
palimpsest
mostra o disco, mas nenhuma partição e uma mensagem "Nenhum meio encontrado"; Além disso:Então, como mencionado no comentário de @ultrasawblade , de fato o disco está lá, mas não as partições - embora, eu acho que precisaria das partições como dispositivos , para isso
mount
.Além disso, o mesmo comportamento que clique com o botão esquerdo do mouse + "Ejetar" na GUI da área de trabalho, posso entrar no terminal com
sudo eject /dev/sdb
. Observe que também é possível abrirpalimpsest
, a partir daí, clique em cada uma das duas partições e clique em "Desmontar volume" - nesse ponto, os ícones para as partições ainda serão mostrados no applet Disk Mounter, mas serão anotados como desmontados; e então pode-se fazersudo udisks --detach /dev/sdb
: isso faz com que os ícones desapareçam do applet Disk Mounter - mas também o/dev/sdb
dispositivo não estará mais presente no sistema (no entanto,lsusb
ainda mostrará o dispositivo)!Depois de procurar um pouco pela resposta (tentei
udevadm monitor --environment
várias coisas durante o processo de conectar e desconectar, com a replicação de todas as açõesudevadm trigger
, para verificar o que oBLKRRPART
ioctl faz), sem nenhum sucesso - eu finalmente me deparei com Como remontar um pendrive sem remover e reinserir - Ubuntu / Debian , que tem a resposta:Após a execução deste comando - as duas partições aparecem novamente no applet Disk Mounter - sem desconectar / reconectar a chave USB !! Isso é tudo estranho, porque se você ler
man eject
:... você nunca esperaria que fosse aplicável à unidade USB Flash / Thumb! (E eu até tentei olhar para sys-utils / eject.c , e não consigo ver nada óbvio
:)
)É claro que, se
sudo udisks --detach /dev/sdb
já foi executado anteriormente,/dev/sdb
não existirá, entãoeject -t /dev/sdb
falharáeject: unable to find or open device for: '/dev/sdb'
. Nesse caso, o ciclo de energia USB, conforme observado em # 7457 Como reconectar um dispositivo USB logicamente desconectado?me ajudou a recuperar:Isso fez com que os ícones das partições fossem exibidos novamente no applet Disk Mounter, diretamente como montados; para encontrar o endereço certo, tente enquanto o disco está montado:
fonte
eject -t /dev/<DEVICE>
.Em sistemas baseados no Debian, pelo menos, você deve ser capaz de fazer isso:
Isso funciona porque ... mágica.
fonte