Como funciona o “eject usb driver” do Gnome?

2

Eu tenho uma pergunta por algum tempo na minha cabeça:

Eu tenho um disco rígido externo, quando eu quero desmontá-lo eu simplesmente crio o ícone que diz: "Remover unidade com segurança" no Nautilus (use Nautilus do Gnome 3.14 no Debian 8 ), mas na realidade o que é o processo por trás? É uma maneira de ver o que realmente acontece? Algum tipo de troncos?

Eu imagino que o primeiro processo é umount /wherever/its/mount , mas notei que quando desmonto usando umount o led do disco rígido externo fica ligado (quando o sistema operacional Windows desliga o led ), então: o comando umount deve também cortar a energia da porta USB onde o disco rígido está conectado? Ou outro comando está fazendo isso?

Obrigado

    
por k.Cyborg 03.02.2018 / 20:46

1 resposta

2
O comando

unmount em si não corta a energia da unidade - a montagem realmente significa ligar um sistema de arquivos na unidade com um diretório, então desmontar apenas faz isso - desvincula a montagem de um diretório específico; e no que diz respeito ao gerenciador de arquivos Nautilus, não é isso que ele usa sob o bom; na verdade, ele usa objetos GMount da API Gio padrão para todos os tipos de desenvolvimento relacionados ao GNOME.

Sem confundir você demais, deixe-me explicar em termos de código-fonte e documentação. Uma breve pesquisa através do código-fonte revela que em nautilus-file-operations.c arquivo, a função nautilus_file_operations_unmount_mount_full chama do_unmount , que chama a função g_mount_eject_with_operation . Esse último pertence à parte da GMount da API . Ejetar envolveria a sincronização dos dados restantes que precisam ser gravados na montagem, unmounting um volume ou unidade e, em seguida, desligá-los no caso de uma unidade USB ou disco ótico.

Se você está esperando um comando shell que pode desligar uma unidade como no Nautilus, existe um via udisks ou udisksctl e, se não me engano, udisksctl vem com sistemas operacionais que usam systemd (mas não me cite nesta última declaração, apenas uma opinião). Isso faz uso de UDisks2 , que na verdade é outra API para lidar com drives e volumes via interface D-Bus; Na verdade, é muito bom e eu usei para desenvolver meu próprio indicador no Ubuntu .

Então, TL; DR :

  • O Nautilus usa a API do Gio para manipular montagens, mas não chama nenhum utilitário de linha de comando externo ou autônomo
  • Existe um equivalente na linha de comando que realiza operações semelhantes às do Nautilus
  • Você sempre pode escrever seus próprios usando a API do Gio, a API do UDisks ou chamar o comando udisks ou udisksctl externo.

Veja também:

por 03.02.2018 / 22:28