Eu corro algum software no subsistema Ubuntu 20 que cria alguns arquivos de dados em um arquivo de soquete get.ipc
no diretório inicial:
Mas se eu executar o software com outro local de dados como /mnt/i
, por exemplo, onde I:
está outro volume NTFS, o software cria seus arquivos de dados, mas não pode criar o arquivo 'get.ipc' mostrando a mensagem de erro
Fatal: Error starting protocol stack: listen unix /mnt/i/.ethereum/geth.ipc: bind: invalid argument
E com /mnt/c
eu obtenho o mesmo resultado.
Qual pode ser a diferença entre a pasta pessoal (ou seja C:\Users\D-Ef\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\def
) e a I:
pasta?
É possível que a pasta pessoal tenha algumas permissões especiais que permitem criar arquivos de soquete, por exemplo? Como verificar isso?
Eu tentei criar um link simbólico do meu diretório inicial para /mnt/i/.ethereum
com um comando como
ln -s /mnt/i/.eth/ /home/def/.eth
mas isso não ajuda.
LocalState
tem a seguinte permissão adicional, mas não está claro o que é:
O tipo de arquivo que você está tentando criar é conhecido como soquete Unix (tipo
AF_UNIX
ouAF_LOCAL
). Esse é um soquete que está localizado no sistema de arquivos.WSL suporta soquetes Unix. Tem que ser, porque muitos programas Linux exigem que eles funcionem. O Windows, a partir de versões recentes, também suporta soquetes Unix. No entanto, os dois tipos são incompatíveis.
Se você estiver usando um soquete Unix com um programa WSL, precisará criá-lo na área do sistema de arquivos Linux. Isso significa que não deve estar sob
/mnt/<drive>
. Se você estiver usando um soquete Unix com um programa Windows, esse programa Windows deve criá-lo fora da área WSL.A diferença é que a área do sistema de arquivos Linux usada pelo WSL suporta semântica POSIX adequada: distinção entre maiúsculas e minúsculas, nomes de arquivos de bytes arbitrários, soquetes Unix, permissões POSIX, links simbólicos pendentes e assim por diante. A área NTFS padrão usada pelo Windows não suporta essas coisas e, portanto, não pode ser usada para armazenar soquetes Unix criados e usados pelo WSL. Todas as unidades especificadas
/mnt/<drive>
em WSL são unidades do Windows e, portanto, não são adequadas para soquetes WSL Unix.