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