将 Windows 子系统 Ubuntu 18.04 的 rootfs 切换到其他盘
前言
1、概要
Windows 下使用子系统 (如:Ubuntu)有多爽相信用过的都知道。
但这里有一个问题,那就是默认情况下,Windows 的 Ubuntu 子系统的根文件系统默认使用的是 Windows 的 C 盘。
大多数据 Windows 用户都知道的情况是 C 盘影响系统的运行,而且 C 盘的空间一般不会太大(如果你的系统只有一个 C 盘分区请忽略)。比如:
aaa@qq.com:/$ df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 100G 61G 40G 61% /
none 100G 61G 40G 61% /dev
none 100G 61G 40G 61% /run
none 100G 61G 40G 61% /run/lock
none 100G 61G 40G 61% /run/shm
none 100G 61G 40G 61% /run/user
tmpfs 100G 61G 40G 61% /sys/fs/cgroup
C:\ 100G 61G 40G 61% /mnt/c
D:\ 376G 299G 78G 80% /mnt/d
E:\ 1.9T 1.5T 376G 80% /mnt/e
从上面可以看出,我的 C 盘只有 100 GB 大小,而且已经使用了 61 GB 空间了,剩余空间并不多了。
所以,这种情况下,如果 Windows 的c子系统还运行在 C 盘,那么空间就很吃紧了。
2、相关环境
-
Windows 10 Professional
-
Ubuntu 18.04 LTS
3、注意事项
必须要 Windows 10 1903 或者以后版本才能使用下述的方法。如果是更高的 Windows 版本,请参考附录中链接使用 LxRunOffline 进行迁移。
原文链接如下,转载请注明出处:
迁移过程
1、查看你当前安装的子系统
打开一个 Windows CDM 窗口,可以使用如下命令查看当前 Windows 中安装的所有子系统的分发版及名称。
wsl -l
示例:
C:\Users\jiang> wsl -l
适用于 Linux 的 Windows 子系统分发版:
Ubuntu-18.04 (默认)
可以看到,我的 Windows 中当前只有一个子系统分发版,Ubuntu-18.04
2、导出分发子系统
执行如下命令即可以将当前已安装的某个分发版子系统文件导出为一个 .tar 的压缩包。
wsl --export <DISTRIBUTION_NAME> <export path>\<export name>.tar
示例:
C:\User\jiang> wsl --export Ubuntu-18.04 %USERPROFILE%\ubuntu-18.04.tar
注:
(1) %USERPROFILE% 表示的是当前用户的家目录,如 C:\User\jiang,可以自行指定导出位置
(2) 导出后的文件如下图所示,ubuntu-18.04.tar 大小 1.34 GB
3、注销原分发子系统
使用 wsl --unregister <DISTRIBUTION_NAME> 注销指定的子系统
wsl --unregister <DISTRIBUTION_NAME>
如下示例:
C:\Users\jiang>wsl -l
适用于 Linux 的 Windows 子系统分发版:
Ubuntu-18.04 (默认)
C:\Users\jiang>wsl --unregister Ubuntu-18.04
正在注销...
C:\Users\jiang>wsl -l
适用于 Linux 的 Windows 子系统没有已安装的分发版。
可以通过访问 Microsoft Store 来安装分发版:
https://aka.ms/wslstore
4、在 D 盘创建子系统运行目录
在 D 盘创建目录,如下示例:
D:\WSL\Ubuntu-18.04
注:创建的目录路径与名称都是自定的,创建过程略。
5、导入子系统
执行如下命令导入子系统
wsl --import <IMPORT_DISTRIBUTION_NAME> <IMPORT_PATH> <EXPORT_PATH>
示例:
C:\User\jiang> wsl --import Ubuntu-18.04 d:\WSL\Ubuntu-18.04 %USERPROFILE%\ubuntu-18.04.tar
注:如果没有执行第 3 步,则 <IMPORT_DISTRIBUTION_NAME> 与 <EXPORT_DISTRIBUTION_NAME> 不能相同,比如我导出时的分发版本是 Ubuntu-18.04,我导入时就不能再指定 Ubuntu-18.04。
6、查看当前所有子系统
C:\Users\jiang> wsl -l
适用于 Linux 的 Windows 子系统分发版:
Ubuntu-18.04 (默认)
7、验证
(1) 查看文件系统
从导入的目录下可以查看到 D:\WSL\Ubuntu-18.04 下已经有一个叫 rootfs 的目录了
(2) 运行查看子系统挂载信息
使用 wsl -d Ubuntu-18.04 运行子系统,直接进入 Linux shell 命令行,使用 df -h 可以看到 rootfs 已经移动到 D 盘了。
C:\Users\jiang>wsl -l --running
没有正在运行的分发。
C:\Users\jiang>wsl -l
适用于 Linux 的 Windows 子系统分发版:
Ubuntu-18.04 (默认)
C:\Users\jiang>wsl -l --running
没有正在运行的分发。
C:\Users\jiang>wsl -d Ubuntu-18.04
aaa@qq.com:/mnt/c/Users/jiang#
aaa@qq.com:/mnt/c/Users/jiang#
aaa@qq.com:/mnt/c/Users/jiang# df -h
Filesystem Size Used Avail Use% Mounted on
rootfs 376G 300G 76G 80% /
none 376G 300G 76G 80% /dev
none 376G 300G 76G 80% /run
none 376G 300G 76G 80% /run/lock
none 376G 300G 76G 80% /run/shm
none 376G 300G 76G 80% /run/user
tmpfs 376G 300G 76G 80% /sys/fs/cgroup
C:\ 100G 76G 25G 76% /mnt/c
D:\ 376G 300G 76G 80% /mnt/d
E:\ 1.9T 1.5T 376G 80% /mnt/e
附录
参考:
https://*.com/questions/38779801/move-wsl-bash-on-windows-root-filesystem-to-another-hard-drive
还可以参考 github 大佬写的一键迁移 WSL 的脚本:
https://github.com/pxlrbt/move-wsl
上一篇: 前端自学笔记02
下一篇: Linux Input子系统--概述