【原创】将 Windows 子系统 Ubuntu 18.04 的 rootfs 切换到其他盘
前言
1、概要
Windows 下使用子系统 (如:Ubuntu)有多爽相信用过的都知道。
但这里有一个问题,那就是默认情况下,Windows 的 Ubuntu 子系统的根文件系统默认使用的是 Windows 的 C 盘。
大多数据 Windows 用户都知道的情况是 C 盘影响系统的运行,而且 C 盘的空间一般不会太大。比如:
jiangzl@DESKTOP-3CSI1G5:/$ 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 盘,那么空间就很吃紧了。
本文分享如何将 Windows 子系统的 rootfs 迁移到其他盘的方法!
2、相关环境
-
Windows 10 Professional
-
Ubuntu 18.04 LTS
3、注意事项
必须要 Windows 10 1903 或者以后版本才能使用下述的方法。
正文
1、查看你当前的子系统
打开一个 Windows CDM 窗口,可以使用如下命令查看当前 Windows 中安装的所有子系统的分发版及名称。
wsl -l
示例:
C:\Users\jiang> wsl -l
适用于 Linux 的 Windows 子系统分发版:
Ubuntu-18.04 (默认)
可以看到,我的 Windows 中当前只有一个子系统分发版,Ubuntu-18.04
2、导出子系统
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
root@DESKTOP-3CSI1G5:/mnt/c/Users/jiang#
root@DESKTOP-3CSI1G5:/mnt/c/Users/jiang#
root@DESKTOP-3CSI1G5:/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
总结
迁移了子系统后,就可以愉快地玩耍 Linux 系统而不用担心把磁盘占满了,如果你也想一机两用,强烈建议进行子系统文件系统迁移。
还可以参考 github 大佬写的一键迁移的脚本:
https://github.com/pxlrbt/move-wsl
附录
参考:
https://stackoverflow.com/questions/38779801/move-wsl-bash-on-windows-root-filesystem-to-another-hard-drive
近期评论