我刚刚将笔记本电脑中的Windows 10升级到Redstone 1.所以我测试了Linux子系统(也就是Windows上的WSL,LXSS或Bash)。基本上,一切都很好,但是有一个问题是WSL的RootFS位于%LocalAppData%
路径(例如C:\Users\xyz\AppData\Local
),这也是我的Windows操作系统所在的位置。它在我的笔记本电脑中消耗了大量的SSD硬盘空间,我希望我可以将它移动到我的外置硬盘。
还有另一个问题。由于其他硬盘驱动器分区作为DriveFS安装,它不支持某些Linux文件系统功能,如chmod
,我的一些Linux项目构建脚本仅适用于VoIFS,仅位于/
和{ {1}}。
所以我尝试将整个WSL RootFS移动到另一个硬盘驱动器。首先,我试图为/home
创建一个NTFS Junction(硬链接)。我已经完全卸载了WSL,并将RootFS的C:\Users\xyz\AppData\Local\lxss
运行到另一个硬盘驱动器,当我再次重新安装WSL时,它无法创建新用户,并且报告错误代码为0x80070003。
然后我四处搜寻,得到了这个:moving Linux filesystem - issue #449。 似乎移动和制作WSL RootFS的硬链接仅适用于Windows 10 Build 14388之前,它在Windows 10 Build 14393 RTM中不起作用。唯一的方法是移动整个mklink
到外部硬盘驱动器,但我不能这样做,因为我是笔记本电脑的用户而我无法随处携带外置硬盘!
所以我想问一下,有没有其他方法可以将WSL移出我的系统分区?如果我不能这样做,我可以在其他地方创建一个额外的VoIFS工作目录并编译我的东西吗?
谢谢和问候, 杰克逊
答案 0 :(得分:11)
您可以使用lxRunOffline将发行版本移动到另一个驱动器。
1。设置对目标文件夹的权限。首先,我认为您必须对将分发文件移动到的文件夹设置一些权限。您可以使用icacls <dir> /grant "<user>:(OI)(CI)(F)"
设置适当的权限。
C:\> whoami
test\jaime
C:\> icacls D:\wsl /grant "jaime:(OI)(CI)(F)"
注意:除了上述权限,我还激活了long path names in Windows。
2。移动分布。使用lxrunoffline move
。
C:\wsl> lxrunoffline move -n Ubuntu-18.04 -d d:\wsl\installed\Ubuntu-18.04
您可以使用以下方式检查安装文件夹
C:\wsl> lxrunoffline get-dir -n Ubuntu-18.04
d:\wsl\installed\Ubuntu-18.04
3。运行分发。。移动分发后,您可以使用wsl
或相同的lxrunoffline
C:\wsl> lxrunoffline run -n Ubuntu-18.04 -w
user@test:~$ exit
logout
C:\wsl> wsl
user@test:/mnt/c/wsl$ exit
logout
答案 1 :(得分:2)
WSL(目前)不支持将发行版移动或安装到非系统驱动器。但是,这是我们正在探索未来Windows版本的方案。
请注意,从Fall Creators Update(FCU)开始,现在通过Windows应用商店安装发行版并将其下载到并扩展到不同的文件夹(即不在%localappdata%\ lxss下)。
NOte:虽然我们正在努力在未来的Windows版本中改进此方案,但不要从Windows或Windows应用程序中插入发行文件夹仍然是:https://blogs.msdn.microsoft.com/commandline/2016/11/17/do-not-change-linux-files-using-windows-apps-and-tools/
答案 2 :(得分:1)
看看https://github.com/DDoSolitary/LxRunOffline
choco install lxrunoffline
答案 3 :(得分:0)
我在 Windows Home 中有 WSL2 Ubuntu20.04
来自@pixelarbeit 的评论
<块引用>wsl 命令解决方案工作正常。我写了一个小脚本 自动化这些步骤:github.com/pxlrbt/move-wsl
我所做的步骤:
/etc/wsl.conf
[user]
default=<yourAccount>
谢谢@pixelarbeit!