Où se trouve le répertoire racine du système de fichiers Ubuntu dans le sous-système Windows pour Linux et inversement?

389

J'ai installé le sous-système Ubuntu sur Windows 10 (après avoir activé la fonctionnalité dans les paramètres), mais où se trouve le répertoire racine du système de fichiers Ubuntu dans le lecteur?

juillet
la source
24
VEUILLEZ NOTER que nous (l’équipe WSL) vous recommandons VIVEMENT de ne PAS spélécher dans les dossiers de données de la distribution Linux ). Si vous le faites, la perte et / ou la corruption des données est TRÈS probable. Nous nous employons
Rich Turner
@RichTurner J'ai découvert qu'il existe une raison très spécifique (et agaçante): les stratégies d'entreprise marquant le dossier .ssh avec les autorisations incorrectes à répétition signifient qu'il est nécessaire de marquer la structure comme étant "illimitée" par rapport aux scripts d'entreprise. Mais généralement - je serais d'accord avec vous.
Danny Staple
Bien que cela ressemble à des boîtes avec des mises à jour plus récentes - cela ne se produit plus.
Danny Staple
2
@DannyStaple Si vous devez modifier les autorisations sur les fichiers / dossiers de votre distribution Linux à partir de Windows, utilisez wsl.exepar exemple wsl chmod 600 ~/.ssh/id*- ne copiez pas de fichiers dans ces dossiers via le système de fichiers Windows.
Rich Turner
@RichTurner: Pourquoi ne pas tunneler les métadonnées Linux comme vous le faites déjà avec les métadonnées NTFS?
Mehrdad

Réponses:

421

Pour Ubuntu installé à partir du magasin Windows:

Chaque distribution que vous installez via le magasin est installée dans le répertoire appdata de cette application. Par exemple: C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState - benhillis

Dans les versions précédentes du sous-système Windows pour Linux, le système de fichiers Ubuntu était %localappdata%\Lxss: (par exemple, C:\Users\Username\AppData\Local\Lxssremplacez le nom d' utilisateur par votre nom d'utilisateur sous Windows). Voir l' article du blog WSL sur le support du système de fichiers :

Le système de fichiers principal utilisé par WSL est VolF. Il est utilisé pour stocker les fichiers système Linux, ainsi que le contenu de votre répertoire de base Linux. En tant que tels, les VolF prennent en charge la plupart des fonctionnalités fournies par le système de Linux VFS, notamment les autorisations Linux, les liens symboliques, les FIFO, les sockets et les fichiers de périphérique.

VolFs est utilisé pour monter le répertoire racine VFS, en utilisant %LocalAppData%\lxss\rootfscomme stockage de sauvegarde. En outre, quelques volfs supplémentaires points de montage existent, notamment /rootet /homequi sont montés à l' aide %LocalAppData%\lxss\rootet %LocalAppData%\lxss\homerespectivement. La raison de ces montages séparés est que, lorsque vous désinstallez WSL, les répertoires de base ne sont pas supprimés par défaut. Par conséquent, tous les fichiers personnels qui y sont stockés sont conservés.

MISE EN GARDE

La création / modification de fichiers dans le sous-système Linux à l'aide d'applications et d'outils Windows peut entraîner une corruption des données et une perte de données dans le sous-système Ubuntu! (Merci à Rich Turner d' avoir suggéré ces mots de prudence!) Ce n'est absolument pas supporté. Du même article de blog:

Interopérabilité avec Windows

Bien que les fichiers VolF soient stockés dans des fichiers normaux sous Windows dans les répertoires mentionnés ci-dessus, l'interopérabilité avec Windows n'est pas prise en charge. Si un nouveau fichier est ajouté à l'un de ces répertoires à partir de Windows, il manque les évaluations requises par les VolF. Par conséquent, les VolF ne savent pas quoi faire avec le fichier et l'ignore simplement. De nombreux éditeurs retirent également les EA lors de l’enregistrement d’un fichier existant, le rendant ainsi inutilisable dans WSL.


Votre système de fichiers Windows est situé /mnt/cdans l'environnement du shell Bash.

entrez la description de l'image ici

Source: blog de Dustin Kirkland , howtogeek

souravc
la source
14
Lxss était caché dans mon système de fichiers ... provoquant quelques maux de tête pendant une minute ou deux. Maintenant, j'ai créé un raccourci, mais je n'arrive toujours pas à le dévoiler.
Ogaday
3
@Ogaday, vous ne pouvez pas le masquer à l'aide de la fenêtre de propriétés car elle est marquée comme un répertoire système. Vous pouvez le révéler en utilisant attrib -s -h lxssce qui le désélectionnera également comme répertoire système.
developerbmw
3
Il semble que l'emplacement ait changé ou qu'il soit différent d'un système à l'autre, car le mien se trouve à un autre endroit. J'ai posté ci-dessous avec ma position.
NicholasJohn16
8
@souravc Pourriez-vous s'il vous plaît ajouter une note importante en haut de votre réponse, recommandant FORTEMENT contre la création / modification de fichiers dans LXSS à l'aide d'applications et d'outils Windows: La corruption et la perte de données sont très probables!
Rich Turner
5
Veuillez lire le post mentionné ci-dessus: blogs.msdn.microsoft.com/commandline/2016/11/17/… . L'accès au système de fichiers Windows à partir de WSL est sûr, c'est pourquoi nous montons vos lecteurs sous /mnt/<drive>/, mais l'accès à un système de fichiers Linux à partir de Windows n'est PAS sûr (pour le moment). C'est pourquoi nous ne fournissons pas un accès facile aux systèmes de fichiers distro.
Rich Turner
51

Cela semble avoir changé depuis l'introduction de Bash et ne s'applique pas aux distributions du Windows Store, ou peut-être n'est-il pas cohérent pour tous les systèmes, car mon répertoire personnel est situé à un autre emplacement:

%localappdata%\lxss\home\{username}

ou:

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

Où se {user}trouve votre nom d'utilisateur Windows et {username}votre nom d'utilisateur UNIX lors de l'installation.

Donc, le répertoire racine serait:

%localappdata%\lxss

Notez que le répertoire racine peut ne pas être visible dans l'Explorateur Windows à partir du %localappdata%répertoire. Vous devriez pouvoir y accéder de toute façon en le tapant dans la "barre d'adresse" d'Explorer.

NicholasJohn16
la source
Ma machine ne trouve pas: "C: \ Utilisateurs \ {utilisateur} \ AppData \ Local \ Lxss \ {nom d'utilisateur}" ni "% localappdata% \ Lxss \ home \ {nom d'utilisateur}" mais "C: \ Utilisateurs \ {utilisateur } \ AppData \ Local \ lxss \ {nom d'utilisateur} "fonctionne. IE utiliser "lxss" PAS "Lxss"
Joe Codeswell user601770
Mon système a le sous-répertoire rootfs, mais rootfs / home est vide alors que ./home a mon compte utilisateur et mes fichiers. Il semble plus sûr d’aller dans% localappdata% \ lxss, puis d’explorer à partir de là pour voir quelle disposition vous avez. De plus, naviguer directement vers cette adresse évite les problèmes de masquage du répertoire lxss.
jla
1
@ JoeCodeswelluser601770 C'est étrange. Les systèmes de fichiers Windows ne sont normalement pas sensibles à la casse. Je peux entrer% localappdata% \ Lxss ou% localappdata% \ lxss et les deux vont sur% HOMEPATH% \ AppData \ Local \ lxss
jla
8
Notez que ce dossier (lxss) ne figurait pas dans la liste des dossiers de mon explorateur Windows dans AppData \ Local, même si la vue des dossiers cachés était activée. J'ai dû coller manuellement ajouter le dossier lxss à la barre de l'explorateur pour accéder aux fichiers ici, par exemple modifier le dossier "url"
Colin D
Vous pouvez également aller sur le bureau, cliquer avec le bouton droit de la souris sur "Nouveau-> Raccourci" et coller un chemin tel que C: \ Utilisateurs \ votrenom \ AppData \ Local \ lxss \ home \ votrenom
Colin D
13

Si vous installez Linux à partir de MS Market:

ils ont placé des distributions sous:

$ 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

La distribution par défaut définie par:

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

La racine Linux est plus profonde:

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

PS J'ai utilisé Cygwin pour explorer les clés de registre.

Si vous utilisez PowerShell pour le même objectif, les commandes sont les suivantes:

# 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
la source
5

La seule chose qui a fonctionné pour moi a été %localappdata%\lxss\home\{username}, où {username}est votre nom d'utilisateur BASH que vous lui avez donné lors de l'installation. Pour une raison quelconque, après avoir montré le dossier caché, lxss refuse d’apparaître C:\Users\WINDOWS-USER\AppData\Local\et donne également le C:\chemin complet avec windows et le nom d’utilisateur BASH ne fonctionne pas non plus.

Et s'il vous plaît créer un raccourci sur le bureau pour ce qui fonctionne.

thinksinbinary
la source
wow bonne astuce, avait le même problème
Nicolas Mommaerts
4

Vous pouvez rapidement ouvrir Bash à partir d'une fenêtre de l'explorateur de fichiers du dossier ouvert en tapant bashdans la barre d'adresse.

C'est assez.

Vous pouvez également ajouter un élément de menu contextuel. Personnellement, je ne le recommande pas s'il n'est pas nécessaire, car l'ajout de raccourcis au menu contextuel utilise plus de RAM.

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

Kangourou
la source
Ca ne marche pas pour moi Il ouvre une invite de commande et lance bash.
Blablatros
@blablatros oui mais dans le dossier bash, l'explorateur était ouvert lorsque vous écrivez dans l'explorateur bar bash et que vous appuyiez sur entrée. Essayez dans le dossier Mes documents. Ouvrez le dossier Explorateur Windows et dans la barre d’emplacement, écrivez bash et il ouvrira déjà Ubuntu bash dans ce dossier :)
Kangarooo
1
@Kangarooo: Je souhaite accéder aux fichiers via l'interface graphique Windows 10 et inversement. Dans ma réponse ci-dessus, j'ai découvert comment localiser le répertoire bash via l'explorateur de fichiers Windows 10, et j'ai donc procédé à la copie de certains fichiers de mon disque dur externe dans ce répertoire. Cependant, lorsque j'ai ouvert le terminal bash et appuyé sur ls -a, il n'affichait pas les fichiers que j'avais ajoutés. Bash ne reconnaissait pas les fichiers que j'avais déposés par le biais de l'explorateur de fichiers Windows, ce qui pour moi a complètement déjoué le but d'installer bash sur Windows.
thinksinbinary