Onde está o diretório raiz do sistema de arquivos do Ubuntu no Windows Subsystem para Linux e vice-versa?

360

Instalei o subsistema Ubuntu no Windows 10 (depois de habilitar o recurso nas configurações), mas onde está o diretório raiz do sistema de arquivos do Ubuntu localizado na unidade?

    
por July 21.04.2016 / 12:06

5 respostas

394

Para o Ubuntu instalado a partir do repositório do Windows:

Each distribution you install through the store is installed to that application's appdata directory. For example: C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState - benhillis

Em iterações anteriores do Windows Subsystem para Linux, o sistema de arquivos do Ubuntu estava em %localappdata%\Lxss (por exemplo, C:\Users\Username\AppData\Local\Lxss - substitua o Nome de usuário por seu nome de usuário no Windows). Consulte a postagem no blog da WSL sobre o suporte ao sistema de arquivos :

The primary file system used by WSL is VolFs. It is used to store the Linux system files, as well as the content of your Linux home directory. As such, VolFs supports most features the Linux VFS provides, including Linux permissions, symbolic links, FIFOs, sockets, and device files.

VolFs is used to mount the VFS root directory, using %LocalAppData%\lxss\rootfs as the backing storage. In addition, a few additional VolFs mount points exist, most notably /root and /home which are mounted using %LocalAppData%\lxss\root and %LocalAppData%\lxss\home respectively. The reason for these separate mounts is that when you uninstall WSL, the home directories are not removed by default, so any personal files stored there will be preserved.

CUIDADO

Criando / modificando quaisquer arquivos dentro do subsistema Linux usando o Windows apps & ferramentas podem causar corrupção de dados e perda de dados no subsistema Ubuntu! (Obrigado a Rich Turner por sugerir estas palavras de precaução!) Isto é absolutamente não suportado. Do mesmo post no blog:

Interoperability with Windows

While VolFs files are stored in regular files on Windows in the directories mentioned above, interoperability with Windows is not supported. If a new file is added to one of these directories from Windows, it lacks the EAs needed by VolFs, so VolFs doesn’t know what to do with the file and simply ignores it. Many editors will also strip the EAs when saving an existing file, again making the file unusable in WSL.

Seu sistema de arquivos do Windows está localizado em /mnt/c no ambiente do shell Bash.

Fonte: blog de Dustin Kirkland , howtogeek

    
por souravc 21.04.2016 / 12:34
47

Isso parece ter mudado desde que o Bash foi originalmente introduzido, e não se aplica a distribuições da Windows Store, ou talvez não seja consistente para todos os sistemas, já que meu diretório pessoal está localizado em outro local:

%localappdata%\lxss\home\{username}

ou:

C:\Users\{user}\AppData\Local\lxss\{username}

Onde {user} é seu nome de usuário do Windows e {username} é seu nome de usuário UNIX definido durante a instalação.

Portanto, o diretório raiz seria:

%localappdata%\lxss

Observe que o diretório raiz pode não estar visível no Windows Explorer no diretório %localappdata% . Você deve ser capaz de acessá-lo de qualquer maneira, digitando-o na "barra de endereços" do Explorer.

    
por NicholasJohn16 10.08.2016 / 20:35
12

Se você instalar o Linux do MS Market:

eles colocaram distros em:

$ cat /proc/registry/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Lxss/\{861c29b4-ebe2-49a5-8a22-7e53a27934a0\}/BasePath
C:\Users\user\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState

Distribuição padrão definida por:

bash# cat /proc/registry/HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Lxss/DefaultDistribution
{861c29b4-ebe2-49a5-8a22-7e53a27934a0}

A raiz do Linux é mais profunda:

c:/Users/user/AppData/Local/Packages/46932SUSE.openSUSELeap42.2_022rs5jcyhyac/LocalState/rootfs

PS. Eu usei o Cygwin para explorar as chaves de registro.

Se estiver usando o PowerShell para o mesmo objetivo, os comandos serão:

# obtain the value of the ID of the default Linux distribution (and store it in a variable to avoid escaping characters issues):
$DEFAULT_LXSS_ID = (Get-ItemPropertyValue -Path REGISTRY::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\ -name DefaultDistribution)

# which will have a value like:
echo  $DEFAULT_LXSS_ID
{bde539d6-0c87-4e12-9599-1dcd623fbf07}

# display the directory containing the rootfs Windows directory (mapped to the / Linux directory)
Get-ItemPropertyValue -Path REGISTRY::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss\$DEFAULT_LXSS_ID -name BasePath | Format-List -property "BasePath"
%LocalAppData%\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState

PPS. link

    
por gavenkoa 13.09.2017 / 16:54
5

A única coisa que funcionou para mim foi %localappdata%\lxss\home\{username} , em que {username} é o seu nome de usuário BASH que você forneceu durante a instalação. Por algum motivo, depois de mostrar o lxss da pasta oculta, ele se recusa a aparecer em C:\Users\WINDOWS-USER\AppData\Local\ , e também dar o caminho C:\ completo com janelas e nome de usuário BASH também não funciona.

E crie um atalho na área de trabalho para o que funciona.

    
por thinksinbinary 09.06.2017 / 19:02
4

Você pode abrir rapidamente o Bash a partir de uma janela do Gerenciador de arquivos da pasta aberta digitando bash na barra de localização.

É o suficiente.

Além disso, você pode adicionar um item de menu de contexto. Eu pessoalmente não recomendo, se não for necessário, porque adicionar atalhos ao menu de contexto usa mais memória RAM.

link

    
por Kangarooo 21.02.2017 / 21:19