迁移WSL2

准备工作

下载并解压 LxRunOffline

停止wsl

1
wsl --shutdown

查看发行版

1
.\LxRunOffline.exe list

本机迁移

执行迁移

1
.\LxRunOffline.exe move -n Ubuntu -d D:\Ubuntu

自行替换相关变量

查看结果

1
.\LxRunOffline.exe get-dir -n Ubuntu

提桶跑路

将虚拟磁盘目录拷到新位置(另一台计算机),运行以下命令

1
.\LxRunOffline.exe register -n Ubuntu -d X:\Ubuntu

或者使用 export / install 命令 导出/安装

跑路后遗症的解决

权限设置

在WSL新目录的权限设置中,当前用户勾选“完全控制”,以免出现拒绝访问的错误。相关issue.

添加防火墙例外

在迁移至新的计算机后,WSL2可能无法连接到Windows宿主机。这将导致DNS解析失败,因为默认的Nameserver地址即为宿主机的IP(可以在/etc/wsl.conf中修改这一设定)。这个特性也被用于获取宿主机IP(参见WSL设置代理)。

WSL2被视为处在“公共网络”,需要添加防火墙例外使得WSL2能够正常连接到Windows宿主机:

1
New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow

重启Hyper-V网络适配器

WSL2网络问题 一种可能的解决方案

1
2
3
4
5
6
7
8
9
10
11
12
echo "Restarting WSL Service"
Restart-Service LxssManager
echo "Restarting Host Network Service"
Stop-Service -name "hns" -force
Start-Service -name "hns"
echo "Restarting Hyper-V adapters"
Get-NetAdapter -IncludeHidden | Where-Object `
{$_.InterfaceDescription.StartsWith('Hyper-V Virtual Switch Extension Adapter')} `
| Disable-NetAdapter -Confirm:$False
Get-NetAdapter -IncludeHidden | Where-Object `
{$_.InterfaceDescription.StartsWith('Hyper-V Virtual Switch Extension Adapter')} `
| Enable-NetAdapter -Confirm:$False

  • 关于WSL安装的相关问题,查阅官方文档.
  • 运行LxRunOffline.exe, 会显示帮助。