web-dev-qa-db-fra.com

Déplacer le système de fichiers racine WSL (Bash sous Windows) vers un autre disque dur?

Je viens de mettre à niveau Windows 10 dans mon ordinateur portable vers Redstone 1. J'ai donc eu un test du sous-système Linux (alias WSL, LXSS ou Bash sous Windows). Fondamentalement, tout va bien, mais il y a un problème que le RootFS de WSL se trouve dans le %LocalAppData% chemin (par exemple C:\Users\xyz\AppData\Local), qui est également l'endroit où se trouvait mon système d'exploitation Windows. Il consomme beaucoup d'espace sur le disque dur SSD de mon ordinateur portable et j'espère pouvoir le déplacer vers mon disque dur externe.

Il y a un autre problème. Étant donné que les autres partitions de disque dur sont montées en tant que DriveFS, il ne prend pas en charge certaines fonctionnalités du système de fichiers Linux comme chmod, et certains de mes scripts de construction de projet Linux ne fonctionnent que dans VoIFS, qui se trouve uniquement dans / et /home.

J'ai donc essayé de déplacer tout le WSL RootFS vers un autre disque dur. J'ai d'abord essayé de faire une jonction NTFS (lien dur) pour C:\Users\xyz\AppData\Local\lxss. J'ai complètement désinstallé le WSL et exécuté mklink pour le RootFS sur un autre disque dur, et lorsque je réinstalle le WSL, , il n'a pas pu créer le nouvel utilisateur, et il signale une erreur avec le code 0x80070003.

Ensuite, j'ai cherché et j'ai obtenu ceci: déplacement du système de fichiers Linux - problème # 449 . Il semble que déplacer et créer un lien dur pour WSL RootFS ne fonctionne qu'avant Windows 10 Build 14388, il ne fonctionne pas dans Windows 10 Build 14393 RTM. Le seule façon de déplacer l'ensemble %LocalAppData% sur le disque dur externe, mais je ne peux pas le faire car je suis un ordinateur portable et je ne peux pas apporter un disque dur externe partout!

Je voudrais donc demander ceci, existe-t-il d'autres moyens de déplacer WSL hors de ma partition système? Si je ne peux pas le faire, puis-je créer un répertoire de travail VoIFS supplémentaire à d'autres endroits et compiler mes trucs?

Merci et salutations, Jackson

15
Jackson Ming Hu

Vous pouvez déplacer la distribution vers un autre lecteur en utilisant lxRunOffline .

1. Définissez les autorisations sur le dossier cible. Tout d'abord, je pense que vous devez définir certaines autorisations sur le dossier dans lequel la distribution sera déplacée. Vous pouvez utiliser icacls <dir> /grant "<user>:(OI)(CI)(F)" pour définir les autorisations appropriées.

C:\> whoami
test\jaime

C:\> icacls D:\wsl /grant "jaime:(OI)(CI)(F)"

REMARQUE: En plus des autorisations ci-dessus, j'ai activé le noms de chemin long dans Windows .

2. Déplacez la distribution. À l'aide de lxrunoffline move.

C:\wsl> lxrunoffline move -n Ubuntu-18.04 -d d:\wsl\installed\Ubuntu-18.04

Vous pouvez vérifier le dossier d'installation à l'aide de

C:\wsl> lxrunoffline get-dir -n Ubuntu-18.04
d:\wsl\installed\Ubuntu-18.04

3. Exécutez la distribution. après avoir déplacé la distribution, vous pouvez exécuter la distribution en utilisant wsl ou la même lxrunoffline

C:\wsl> lxrunoffline run -n Ubuntu-18.04 -w
user@test:~$ exit
logout

C:\wsl> wsl
user@test:/mnt/c/wsl$ exit
logout
22
Jaime

WSL ne prend pas (actuellement) en charge le déplacement ou l'installation de distribution sur des disques non système. Cependant, c'est un scénario que nous explorons pour les futures versions de Windows.

Notez que depuis la mise à jour de Fall Creators (FCU), les distributions sont désormais installées via Windows Store et sont téléchargées et développées dans différents dossiers (c'est-à-dire pas sous% localappdata%\lxss).

REMARQUE: Pendant que nous travaillons à améliorer ce scénario dans les futures versions de Windows, veuillez NE PAS spelunk dans les dossiers de distribution de Windows ou des applications Windows: - https://blogs.msdn.Microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/

3
Rich Turner

Jetez un oeil à https://github.com/DDoSolitary/LxRunOffline

choco install lxrunoffline
  • Aucun accès Internet requis lors de l'installation.
  • Installez toutes les distributions Linux à n'importe quel emplacement sur votre disque.
  • Déplacement des installations existantes vers d'autres emplacements.
  • Duplication des installations existantes. (Pour créer des sauvegardes.)
  • Enregistrez les répertoires d'installation existants. (Pour une utilisation portable.)
1
gavenkoa