Dove si trova la directory principale del file system Ubuntu nel sottosistema Windows per Linux e viceversa?


389

Ho installato il sottosistema Ubuntu su Windows 10 (dopo aver abilitato la funzione nelle impostazioni), ma dove si trova la directory principale del file system Ubuntu nell'unità?


24
NOTA BENE (il team WSL) SUGGERIAMO VIVAMENTE di NON inserirvi nelle cartelle di dati della distribuzione Linux . In tal caso, la perdita e / o la corruzione dei dati è MOLTO probabile. Stiamo lavorando per migliorare questo scenario di interoperabilità e annunceremo eventuali progressi sul nostro blog: blogs.msdn.microsoft.com/commandline
Rich Turner

@RichTurner Ho scoperto che c'è un motivo molto specifico (e fastidioso): le politiche aziendali che contrassegnano la cartella .ssh con le autorizzazioni sbagliate ripetutamente significano la necessità di contrassegnare la struttura come "off limits" per gli script aziendali. Ma in generale, sono d'accordo con te.
Danny Staple

Anche se appare su scatole con aggiornamenti più recenti, questo non accade più.
Danny Staple

2
@DannyStaple Se è necessario modificare le autorizzazioni per file / cartelle nella propria distribuzione Linux da Windows, utilizzare wsl.exe, ad esempio wsl chmod 600 ~/.ssh/id*, non copiare i file in queste cartelle tramite il file system di Windows.
Rich Turner

@RichTurner: Perché non tunnel voi i metadati di Linux come il modo in cui tunnel già i metadati di NTFS?
Mehrdad,

Risposte:


421

Per Ubuntu installato dall'archivio di Windows:

Ogni distribuzione installata tramite l'archivio viene installata nella directory appdata dell'applicazione. Ad esempio: C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState - benhillis

Nelle precedenti versioni del sottosistema Windows per Linux, il file system Ubuntu era %localappdata%\Lxss(ad esempio, C:\Users\Username\AppData\Local\Lxss- sostituire il nome utente con il nome utente su Windows). Vedi il post sul blog WSL sul supporto del file system :

Il file system primario utilizzato da WSL è VolFs. Viene utilizzato per archiviare i file di sistema di Linux, nonché il contenuto della directory principale di Linux. Pertanto, VolFs supporta la maggior parte delle funzionalità fornite da VFS di Linux, inclusi permessi Linux, collegamenti simbolici, FIFO, socket e file di dispositivo.

VolFs viene utilizzato per montare la directory principale VFS, utilizzando %LocalAppData%\lxss\rootfscome archivio di backup. Inoltre, esistono alcuni punti di mount VolF aggiuntivi, in particolare /roote /homeche sono montati usando %LocalAppData%\lxss\roote %LocalAppData%\lxss\homerispettivamente. Il motivo di questi montaggi separati è che quando si disinstalla WSL, le directory home non vengono rimosse per impostazione predefinita, quindi tutti i file personali memorizzati verranno conservati.

ATTENZIONE

La creazione / modifica di qualsiasi file all'interno del sottosistema Linux mediante app e strumenti di Windows può causare il danneggiamento e la perdita di dati nel sottosistema Ubuntu! (Grazie a Rich Turner per aver suggerito queste parole di cautela!) Questo è assolutamente non è supportato. Dallo stesso post sul blog:

Interoperabilità con Windows

Mentre i file VolFs sono archiviati in file regolari su Windows nelle directory sopra menzionate, l'interoperabilità con Windows non è supportata. Se un nuovo file viene aggiunto a una di queste directory da Windows, non ha gli EA necessari ai VolF, quindi i VolF non sanno cosa fare del file e semplicemente lo ignorano. Molti editor rimuoveranno anche gli EA durante il salvataggio di un file esistente, rendendo nuovamente inutilizzabile il file in WSL.


Il file system di Windows si trova /mnt/cnell'ambiente della shell Bash.

inserisci qui la descrizione dell'immagine

Fonte: blog di Dustin Kirkland , howtogeek


14
Lxss era nascosto nel mio file system ... causava un po 'di grattarsi la testa per uno o due minuti esasperanti. Ora ho creato un collegamento, ma non riesco ancora a scoprirlo.
Ogaday,

3
@Oggi, non puoi scoprirlo usando la finestra delle proprietà perché è contrassegnato come directory di sistema. Puoi scoprirlo usando ciò attrib -s -h lxssche lo contrassegna anche come directory di sistema.
Developerbmw

3
Sembra che la posizione sia cambiata o diversa tra i sistemi in quanto la mia è in una posizione diversa. Ho pubblicato di seguito con la mia posizione.
NicholasJohn16

8
@souravc Potresti aggiungere una nota importante all'inizio della tua risposta, raccomandando vivamente di non creare / modificare alcun file all'interno di LXSS utilizzando app e strumenti di Windows: se lo fai, è molto probabile che corruzione e perdita dei dati!
Rich Turner,

5
Si prega di leggere il post sopra menzionato: blogs.msdn.microsoft.com/commandline/2016/11/17/… . È sicuro accedere al filesystem di Windows da WSL ed è per questo che montiamo le tue unità /mnt/<drive>/, ma NON è sicuro (ancora) accedere al filesystem di Linux da Windows ed è per questo che non forniamo un facile accesso al filesystem di distro.
Rich Turner,

51

Questo sembra essere cambiato da quando Bash è stato originariamente introdotto e non si applica alle distribuzioni dal Windows Store, o forse non è coerente per tutti i sistemi poiché la mia directory home si trova in un'altra posizione:

%localappdata%\lxss\home\{username}

o:

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

Dov'è il {user}tuo nome utente di Windows ed {username}è il tuo nome utente UNIX impostato durante l'installazione.

Quindi la directory principale sarebbe:

%localappdata%\lxss

Si noti che la directory principale potrebbe non essere visibile in Esplora risorse dalla %localappdata%directory. Dovresti essere in grado di accedervi comunque digitandolo nella "barra degli indirizzi" di Explorer.


La mia macchina non riesce a trovare: "C: \ Users \ {user} \ AppData \ Local \ Lxss \ {username}" o "% localappdata% \ Lxss \ home \ {username}" ma "C: \ Users \ {user } \ AppData \ Local \ lxss \ {username} "funziona. IE usa "lxss" NOT "Lxss"
Joe Codeswell user601770

Il mio sistema ha la sottodirectory rootfs, ma rootfs / home è vuoto mentre ./home ha il mio account utente e i miei file. Sembra più sicuro andare su% localappdata% \ lxss e quindi esplorare da lì per vedere quale layout hai, oltre a navigare direttamente a quell'indirizzo evita che i problemi con la directory lxss vengano nascosti.
jla,

1
@ JoeCodeswelluser601770 È strano. I filesystem di Windows normalmente non fanno distinzione tra maiuscole e minuscole. Posso inserire% localappdata% \ Lxss o% localappdata% \ lxss ed entrambi andare a% HOMEPATH% \ AppData \ Local \ lxss
jla

8
Nota che questa cartella (lxss) non è stata visualizzata nel mio elenco di cartelle di Windows Explorer in AppData \ Local, anche con la vista cartelle nascoste abilitata. Ho dovuto incollare manualmente aggiungere la cartella lxss alla barra di esplorazione per accedere ai file qui ad es. Modificare la cartella "url" lì
Colin D

In alternativa, puoi andare sul desktop, fare clic con il tasto destro del mouse su "Nuovo-> Collegamento" e incollare un percorso come C: \ Users \ tuonome \ AppData \ Local \ lxss \ home \ tuonome
Colin D

13

Se installi Linux da MS Market:

hanno posto le distribuzioni sotto:

$ 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

Distro predefinita definita da:

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

La radice di Linux è più profonda:

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

PS. Ho usato Cygwin per esplorare le chiavi di registro.

Se si utilizza PowerShell per lo stesso obiettivo, i comandi sarebbero:

# 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/


5

L'unica cosa che ha funzionato per me era %localappdata%\lxss\home\{username}, dove {username}è il tuo nome utente BASH che gli hai dato durante l'installazione. Per qualche motivo, dopo aver mostrato lxss della cartella nascosta si rifiuta di apparire C:\Users\WINDOWS-USER\AppData\Local\e anche fornire il C:\percorso completo con Windows e il nome utente BASH non funziona neanche.

E per favore crea un collegamento sul desktop per ciò che funziona.


wow buon consiglio, ha avuto lo stesso problema
Nicolas Mommaerts,

4

È possibile aprire rapidamente Bash da una finestra Esplora file della cartella aperta digitando bashla barra degli indirizzi.

È abbastanza.

Inoltre è possibile aggiungere una voce di menu di scelta rapida. Personalmente non lo consiglio se non necessario, perché l'aggiunta di collegamenti al menu di scelta rapida utilizza più RAM.

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


Non funziona per me. Apre il prompt dei comandi e avvia bash.
Blablatros,

@blablatros sì, ma nella cartella in bash in strega avevi explorer aperto quando scrivevi in ​​explorer bar bash e premi invio. Prova nella cartella Documenti aperta la cartella Esplora risorse e nella barra degli indirizzi scrivi bash e si aprirà ubuntu bash in quella cartella già :)
Canguro

1
@Kangarooo: voglio accedere ai file tramite la GUI di Windows 10 e viceversa. Nella mia risposta sopra, ho scoperto come individuare la directory bash tramite Esplora file di Windows 10 e quindi ho proceduto a copiare alcuni file dal mio disco rigido esterno in quella directory. Tuttavia, quando ho aperto il terminale bash e premuto ls -a, non mostrava i file aggiunti. Bash non stava riconoscendo i file che ho scaricato tramite Windows File Explorer, che per me ha completamente vanificato lo scopo di installare bash su Windows.
thinksinbinary,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.