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?
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?
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 ligar sync
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 ^^).
/dev/disk/by-id
e veja se o dispositivo realmente se foi. Aposto que não, e pode ser remontado a partir daí com um mount
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ás udisks --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:
$ 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
$
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:
$ 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/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ções udevadm trigger
, para verificar o que o BLKRRPART
ioctl 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/sdb
já foi executado anteriormente, /dev/sdb
não existirá, então eject -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:
$ 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
eject -t /dev/<DEVICE>
.
Em sistemas baseados no Debian, pelo menos, você deve ser capaz de fazer isso:
Isso funciona porque ... mágica.
# determine 'would be drive letter'
lsblk
# do magic
eject /dev/sdb; sleep 1; eject -t /dev/sdb
/dev
mais entrada e o IIRC também não aparecerálsusb
. Não sei se há uma maneira de reconectá-lo.