@author:zhanjzh
Windows下的Linux子系统对于工作在Linux系统下的人而言是十分方便的,但是用久了就会发现子系统对C盘的占用空间越来越大,原因在于Linux默认安装在用户目录下的 AppData\Local\Packages
下。
本文介绍在Windows下对Linux子系统迁移的方法。
工具
mklink
: 本质上是一个创建链接的工具,这里使用mklink
欺骗系统,使系统误以为还是安装在了C盘
首先,我们需要找到子系统安装的文件系统在哪个位置,根据以往的经验,系统位置在:
C:\Users\xxxx\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows
注意 AppData
文件夹是隐藏文件夹,你需要打开查看隐藏文件的选项。
但实际上这个根据你自己安装的子系统需要自己另外确定,我上次安装的文件夹是上面哪个,第二次安装又变成了下面这个:
C:\Users\xxxx\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc
定位Linux子系统的文件系统位置
简单直接的方法:
- 首先安装一遍Linux子系统,在
C:\Users\xxxx\AppData\Local\Packages\
下查看带有类似 CanonicalGroupLimited.UbuntuonWindows
字眼的新文件夹,记下它的名字。
开始安装
- 卸载Linux子系统。
卸载的原因在于Linux子系统下的文件系统的权限更改十分复杂,这里面的一些文件不属于Windows下的管理员用户所有,也不属于你的用户,它就是Linux下用户所有的,使用一般的修改权限文件方法很容易出问题。因此还是推荐先备份后再卸载。
- 创造软链接
使用管理员打开cmd
, 输入下面的命令:
1 | mklink /j C:\Users\XXXX\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc H:\Linux-share\WSL\ |
后面那个 H:\Linux-share\WSL\
是非系统盘的位置。
- 创建成功后再打开应用商店,安装Linux子系统。
问题
- 安装成功后出现
0x800703fa
WslRegisterDistribution failed with error: 0x800703fa
网上查过方法:在运行窗口中执行“services.msc”指令,在本地服务中重启 LxssManager 服务即可。
经确认,行之有效。
- 如果出现了什么文件夹权限的问题(我没有出现过),可以用下面的命令:
icacls Linux-share\WSL\ /grant “你的用户名:(OI)(CI)(F)”
我没有遇见过文件权限问题,但是我曾经执行过上面这条语句,如果遇见了,可以试一下。
总结
网上查找了许多方法,试过了不少。有个博主使用的是将AppData
下的Local
目录全部指向其他地方的方法,如果这个方法有效的话想必能省很多C盘空间,可惜的是,不行。文件在复制迁移的过程会遇见权限问题,即便是另外使用管理员用户也不行,除非使用 PE 盘,但是那样太过于麻烦。 这篇文章介绍的方法其实是一种折中的方式,迁移文件不涉及到那些存在权限问题的文件。
同样的道理,使用 mklink
工具可以将其他大文件迁移到非系统盘后再创造软链接,用于减小C盘负担是很不错的。