WSL2 迁移 Linux 发行版

意图

  • 备份还原
  • 迁移
  • 节省 C 盘空间
  • ……

步骤

导出

1wsl.exe --export <DistributionName> <FileName>

导入

1wsl.exe --import <DistributionName> <InstallLocation> <FileName>

提示:导入之后,执行 wsl -l -v 查看运行版本,如果是 1 的话,可以执行 wsl --set-version <DistributionName> 2 更新到 2

WSL 默认登录用户

如果迁移完毕后发现默认登录用户被置为:root,或者想要手动指定默认的登录用户,可以按如下操作设置:

注册表项:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss

其中的 DefaultUid 一项,设置为对应子系统中的 Linux UID,UID 可以登录进 WSL 获取

或者:

这里有一个老外提供的,只需提供用户名,不需要登录也能设置 DefaultUid 的 powershell 函数,注意该用户必须存在于子系统中

Function WSL-SetDefaultUser ($distro, $user) { Get-ItemProperty Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss*\ DistributionName | Where-Object -Property DistributionName -eq $distro | Set-ItemProperty -Name DefaultUid -Value ((wsl -d $distro -u $user -e id -u) | Out-String); };

WSL-SetDefaultUser <DistributionName> <username>

参考

https://docs.microsoft.com/en-us/windows/wsl/install-win10

https://github.com/microsoft/WSL/issues/3974


本文采用 知识共享署名许可协议(CC-BY 4.0)进行许可,转载注明来源即可。如有错误劳烦评论或邮件指出。


comments powered by Disqus