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

389

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

Julho
fonte
24
OBSERVAÇÃO: Nós (a equipe da WSL) Vivamente recomendamos que você NÃO entre nas pastas de dados de distribuição do Linux ). Se fizer isso, a perda de dados e / ou corrupção é muito provável Estamos trabalhando para melhorar esse cenário de interoperabilidade e vai anunciar qualquer progresso em nosso blog: blogs.msdn.microsoft.com/commandline
Rich Turner
@RichTurner Descobri que há uma razão muito específica (e irritante) - as políticas corporativas que marcam a pasta .ssh com as permissões erradas repetidamente significam a necessidade de marcar a estrutura como "fora dos limites" para os scripts corporativos. Mas geralmente - eu concordo com você.
Danny Staple
Embora pareça em caixas com atualizações mais recentes - isso não acontece mais.
9118 Danny Staple #
2
@DannyStaple Se você precisar alterar as permissões dos arquivos / pastas na sua distribuição Linux do Windows, use wsl.exe, por exemplo wsl chmod 600 ~/.ssh/id*- - não copie arquivos para essas pastas através do sistema de arquivos do Windows.
Rich Turner #
@RichTurner: Por que vocês não encapsulam metadados do Linux como se já encapsulassem metadados NTFS?
Mehrdad

Respostas:

421

Para o Ubuntu instalado a partir da loja do Windows:

Cada distribuição que você instala através da loja é instalada no diretório appdata desse aplicativo. Por exemplo: C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState - benhillis

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

O sistema de arquivos primário usado pelo WSL é o VolFs. É usado para armazenar os arquivos do sistema Linux, bem como o conteúdo do diretório inicial do Linux. Dessa forma, o VolFs suporta a maioria dos recursos que o VFS Linux fornece, incluindo permissões, links simbólicos, FIFOs, soquetes e arquivos de dispositivos do Linux.

O VolFs é usado para montar o diretório raiz do VFS, usando %LocalAppData%\lxss\rootfscomo armazenamento de backup. Além disso, algumas volfs adicionais montagem existem pontos, mais notavelmente /roote /homeque são montadas usando %LocalAppData%\lxss\roote %LocalAppData%\lxss\homerespectivamente. O motivo dessas montagens separadas é que, quando você desinstala o WSL, os diretórios pessoais não são removidos por padrão, para que todos os arquivos pessoais armazenados lá sejam preservados.

CUIDADO

Criar / modificar qualquer arquivo no subsistema Linux usando aplicativos e ferramentas do Windows pode causar corrupção de dados e perda de dados no subsistema Ubuntu! (Obrigado a Rich Turner por sugerir essas palavras de cautela!) Isso não é absolutamente suportado. Da mesma postagem no blog:

Interoperabilidade com o Windows

Embora os arquivos VolFs sejam armazenados em arquivos regulares no Windows nos diretórios mencionados acima, a interoperabilidade com o Windows não é suportada. Se um novo arquivo é adicionado a um desses diretórios do Windows, ele não possui os EAs necessários para o VolFs, portanto, o VolFs não sabe o que fazer com o arquivo e simplesmente o ignora. Muitos editores também eliminam os EAs ao salvar um arquivo existente, novamente tornando o arquivo inutilizável na WSL.


Seu sistema de arquivos do Windows está localizado no /mnt/cambiente do shell Bash.

insira a descrição da imagem aqui

Fonte: blog de Dustin Kirkland , howtogeek

souravc
fonte
14
Lxss estava escondido no meu sistema de arquivos ... causou um pouco de coceira na cabeça por um ou dois minutos irritantes. Agora eu criei um atalho, mas ainda não consigo mostrá-lo.
Ogaday
3
@ Hoje você não pode mostrá-lo usando a janela de propriedades porque está marcada como um diretório do sistema. Você pode exibi-lo usando o attrib -s -h lxssque também o desmarcará como um diretório do sistema.
developerbmw
3
Parece que o local foi alterado ou diferente entre os sistemas, pois o meu está em um local diferente. Eu postei abaixo com a minha localização.
NicholasJohn16
8
@souravc Você poderia adicionar uma observação importante ao topo da sua resposta, recomendando FORTE contra a criação / modificação de arquivos no LXSS usando os aplicativos e ferramentas do Windows: É provável que ocorra corrupção e perda de dados!
Rich Turner
5
Leia a postagem mencionada acima: blogs.msdn.microsoft.com/commandline/2016/11/17/… . É seguro acessar o sistema de arquivos do Windows a partir da WSL, e é por isso que montamos suas unidades /mnt/<drive>/, mas NÃO é seguro (ainda) acessar o sistema de arquivos Linux a partir do Windows e é por isso que não fornecemos acesso fácil aos sistemas de arquivos de distribuição.
Rich Turner #
51

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, pois meu diretório pessoal está localizado em outro local:

%localappdata%\lxss\home\{username}

ou:

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

Onde {user}está 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 %localappdata%diretório Você deve acessá-lo de qualquer maneira, digitando-o na 'barra de endereço' do Explorer.

NicholasJohn16
fonte
Minha máquina não consegue encontrar: "C: \ Usuários \ {usuário} \ AppData \ Local \ Lxss \ {nome de usuário}" ou "% localappdata% \ Lxss \ home \ {nome de usuário}", mas "C: \ Usuários \ {usuário } \ AppData \ Local \ lxss \ {nomedeusuário} "funciona. O IE usa "lxss" e não "Lxss"
Joe Codeswell user601770 17/16
Meu sistema possui o subdiretório rootfs, mas o rootfs / home fica vazio enquanto ./home possui minha conta e arquivos de usuário. Parece mais seguro ir apenas para% localappdata% \ lxss e explorar a partir daí para ver qual layout você possui, além de navegar diretamente para esse endereço, evita problemas com o diretório lxss sendo oculto.
21416 jlau
1
@ JoeCodeswelluser601770 Isso é estranho. Os sistemas de arquivos do Windows normalmente não diferenciam maiúsculas de minúsculas. Posso inserir% localappdata% \ Lxss ou% localappdata% \ lxss e ambos vão para% HOMEPATH% \ AppData \ Local \ lxss
jla
8
Observe que essa pasta (lxss) não apareceu na lista de pastas do meu Windows Explorer no AppData \ Local, mesmo com a exibição de pastas ocultas ativada. Eu tive que colar manualmente adicionar o lxss pasta para a barra de pesquisa para chegar aos arquivos aqui por exemplo, editar a pasta "url" para lá
Colin D
Como alternativa, você pode ir para a área de trabalho, clicar com o botão direito do mouse em "Novo-> Atalho" e colar um caminho como C: \ Users \ seuunome \ AppData \ Local \ lxss \ home \ seuunome
Colin D
13

Se você instalar o Linux a partir do MS Market:

eles colocaram distros abaixo:

$ 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 do registro.

Se você usar o PowerShell para o mesmo objetivo, os comandos seriam:

# 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. https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/

gavenkoa
fonte
5

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

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

thinkinbinary
fonte
uau boa dica, tive o mesmo problema #
Nicolas Mommaerts 19/02/19
4

Você pode abrir o Bash rapidamente em uma janela do Explorador de Arquivos da pasta aberta digitando bashna barra de localização.

É o suficiente.

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

https://www.howtogeek.com/270810/how-to-quickly-launch-a-bash-shell-from-windows-10s-file-explorer/

Canguru
fonte
Nao funciona para mim. Abre o prompt de comando e inicia o bash.
Blablatros 28/05
@blablatros sim, mas na pasta bash, na bruxa, você tinha o explorer aberto ao escrever na barra do explorer bash e pressionar enter. Tente na pasta Meus Documentos abriu pasta Windows Explorer e no local bar gravação bash e ele vai abrir ubuntu festa em que pasta já :)
Kangarooo
1
@ Canguru: Eu quero acessar os arquivos através do gui do Windows 10 e vice-versa. Na minha resposta acima, descobri como localizar o diretório bash através do explorador de arquivos do Windows 10 e, por isso, copiei alguns arquivos do meu disco rígido externo para esse diretório. No entanto, quando abri o terminal bash e pressionei ls -a, ele não mostrava os arquivos que adicionei. O Bash não estava reconhecendo os arquivos que encontrei no Windows File Explorer, o que para mim derrotou completamente o objetivo de instalar o bash no Windows.
thinksinbinary