Como montar novamente um stick USB após desmontar do Nautilus sem desconectá-lo?

25

Acho que, para montar novamente um pendrive, preciso desconectá-lo fisicamente e reconectá-lo. Como posso fazer isso sem uma ação física tão cansativa?

    
por Tshepang 07.02.2011 / 20:34

3 respostas

8

Da minha experiência no Ubuntu, quando você "ejeta" um dispositivo USB do Nautilus, o dispositivo realmente desaparece do sistema. Não sei por que isso acontece, mas nem o Nautilus nem a linha de comando conseguem recuperá-lo. Eu acho que a lógica é que uma vez que você ejeta um stick USB você não o quer de volta, mas vai desconectá-lo.

A maneira como eu trabalho com isso (quando necessário) é usando umount em vez do Nautilus. Você também pode apenas chamar sync para liberar os buffers do sistema de arquivos para o disco.

Acabou de encontrar um tópico com mais informações: link

Então, basicamente, a) Recrie o nautilus da fonte sem o patch (e mantenha-o atualizado quando atualizar o sistema ...) ou b) use outro gerenciador de arquivos (pelo menos quando desmontar o ^^).

    
por 08.02.2011 / 17:44
15

Este é o comportamento que tenho no meu sistema Ubuntu Lucid:

Quando eu conecto meu flash USB / thumbdrive que tem 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
$

Portanto, apenas as 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 em qualquer uma das entradas de partição do miniaplicativo Disk Mounter na área de trabalho do Gnome2 no Lucid, receberei apenas duas entradas: "Abrir" ou "Ejetar" (conforme mencionado no [SOLVED] Como você remonta uma unidade USB com o nautilus em lynx? , de @Thomas ', referindo-se a um 16_hide_unmount.patch ). Além disso, palimpsest aqui mostra duas partições para o disco.

Quando clico no Eject em uma das partições - ambas desaparecem; neste ponto, palimpsest mostra o disco, mas não há partições e uma mensagem "Sem mídia encontrada"; também:

$ 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

Assim, como mencionado no comentário por @ ultrasawblade , de fato o disco está lá, mas não as partições - embora, eu acho que eu precise das partições como dispositivos , para poder código%.

Além disso, o mesmo comportamento que o clique esquerdo + "Eject" na GUI da área de trabalho, eu posso entrar no terminal com mount . Observe que também é possível abrir sudo eject /dev/sdb , a partir daí, clique em cada uma das duas partições e clique em "Desmontar volume" - nesse ponto, os ícones das partições ainda serão mostrados no Disk Mounter applet, mas será anotado como desmontado; e então pode-se fazer palimpsest : isso faz com que os ícones desapareçam do miniaplicativo Disk Mounter - mas também o dispositivo sudo udisks --detach /dev/sdb não estará mais presente no sistema (no entanto, /dev/sdb ainda mostrará o dispositivo)!

Depois de procurar um pouco pela resposta (tentei coisas de lsusb durante plug and unplug, com replicação de todas as ações via udevadm monitor --environment , para ver o que o udevadm trigger ioctl faz), sem sucesso - eu finalmente tropeçou em Como remover um pendrive sem remover e reinserir - Ubuntu / Debian , que tem a resposta:

sudo eject -t /dev/sdb

Após este comando ser executado - as duas partições aparecem novamente no miniaplicativo Disk Mounter - sem desconectar / reconectar a chave USB !! Isso é tudo estranho, porque se você ler BLKRRPART :

   -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 até tentei pesquisar em sys-utils / eject.c , e não consigo ver nada óbvio man eject )

É claro que, se :) tiver sido executado anteriormente, então sudo udisks --detach /dev/sdb não existirá, então /dev/sdb falhará com eject -t /dev/sdb . Nesse caso, o ciclo de energia do 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 aparecessem novamente no miniaplicativo Disk Mounter, diretamente como montado; para encontrar o endereço correto, 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

Bem, espero que isso ajude alguém,
Felicidades!

    
por 29.04.2013 / 17:50
2

Em sistemas baseados no Debian, pelo menos, você deve ser capaz de fazer isso:

  1. descubra qual deve ser a letra da unidade ... Vou dizer / dev / sdb aqui para o exemplo.
  2. Duplique ejete a letra da unidade 'seria' para ligar o dispositivo novamente.
  3. Lucro!

Isso funciona porque ... mágica.

# determine 'would be drive letter'
lsblk
# do magic
eject /dev/sdb; sleep 1; eject -t /dev/sdb
    
por 02.05.2018 / 05:35