WSL是Windows下的Linux子系统,可以代替虚拟机来运行Linux系统,占用资源少,使用方便,下面说一下如何对已发布子系统进行迁移。一种情况是针对同一个系统,更换安装的位置;另一种情况跟换机器或重装系统后的迁移。

网上查了基本都是使用LxRunOffline.exe工具,进入 Github 下载ZIP包,其实只用wsl命令也可以实现。

在Windows的PowerShell中输入:

wsl --help

可以看到关于这个命令的使用帮助说明:

用法: wsl.exe [参数] [选项...] [命令行]

用于运行 Linux 二进制文件的参数:

    如果未提供命令行,wsl.exe 将启动默认的 shell。

    --exec, -e <命令行>
        执行指定的命令而不使用默认的 Linux shell。

    --
        按原样传递剩余的命令行。

选项:
    --distribution, -d <分发版>
        运行指定的分发。

    --user, -u <用户名>
        以指定用户身份运行。

用于管理适用于 Linux 的 Windows 子系统的参数:

    --export <分发版> <文件名>
        将分发导出到 tar 文件。
        对于标准输出,文件名可以是 -。

    --import <分发版> <安装位置> <文件名> [选项]
        将指定的 tar 文件作为新分发进行导入。
        对于标准输入,文件名可以是 -。

        选项:
            --version <版本>
                指定用于新分发的版本。

    --list, -l [选项]
        列出分发。

        选项:
            --all
                列出所有分发,包括当前正在
                安装或卸载的分发。

            --running
                只列出当前正在运行的分发。

            --quiet, -q
                只显示分发名称。

            --verbose, -v
                显示有关所有分发的详细信息。

    --set-default, -s <分发版>
        将分发设置为默认值。

    --set-default-version <版本>
        更改新分发的默认安装版本。

    --set-version <分发版> <版本>
        更改指定分发的版本。

    --shutdown
        立即终止所有正在运行的分发和 WSL 2 轻型工具虚拟机。

    --terminate, -t <分发版>
        终止指定的分发。

    --unregister <分发版>
        注销分发。

    --help
        显示用法信息。

这里我们使用到export 、unregister和import几个选项就可以实现迁移。

1、终止正在运行的分发或虚拟机:

wsl --shutdown

2、对需要迁移的分发或虚拟机导出(我安装的版本是Ubuntu-20.04):

wsl --export Ubuntu-20.04 D:\wsl-Ubuntu-20.04

3、卸载分发版或虚拟机(如果是要重装系统或换机器安装,这一步可以省略,但是要将上一步导出的文件保存好)

wsl --unregister Ubuntu-20.04

4、导入新的分发版或虚拟机:

wsl --import Ubuntu-20.04 D:\wsl\Ubuntu2004 D:\wsl-Ubuntu-20.04 --version 2

最后的选项“--version 2”可以省略,则采用默认版本导入。如果导出的是WSL2,而这里设置的是“--version 1”,还可以将其版本降为WSL1,这样就实现了子系统的迁移 ,注意文件存放的路径一定不能错。

更多推荐