将 Windows 子系统 Ubuntu 18.04 的 rootfs 切换到其他盘

前言


1、概要

Windows 下使用子系统 (如:Ubuntu)有多爽相信用过的都知道。

但这里有一个问题,那就是默认情况下,Windows 的 Ubuntu 子系统的根文件系统默认使用的是 Windows 的 C 盘。

大多数据 Windows 用户都知道的情况是 C 盘影响系统的运行,而且 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子系统还运行在 C 盘,那么空间就很吃紧了。

 

2、相关环境

  • Windows 10 Professional

  • Ubuntu 18.04 LTS

 

3、注意事项

必须要 Windows 10 1903 或者以后版本才能使用下述的方法。如果是更高的 Windows 版本,请参考附录中链接使用 LxRunOffline 进行迁移。

原文链接如下,转载请注明出处:

https://www.jiangzhuolin.com/5795.html

 

迁移过程


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
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

 

附录


参考:

https://stackoverflow.com/questions/38779801/move-wsl-bash-on-windows-root-filesystem-to-another-hard-drive

还可以参考 github 大佬写的一键迁移 WSL 的脚本:

https://github.com/pxlrbt/move-wsl

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值