WSL迁移指南

将WSL2环境完整迁移到移动硬盘是一个非常实用的方案,特别是当你需要处理占用大量磁盘空间的工程(例如交叉编译庞大的Linux内核源码或构建Buildroot环境)时,这能极大缓解主机C盘的压力。

不过,在开始操作前,需要先澄清一个关于"完美随意切换"的现实情况 : WSL2 本质上是基于 Hyper-V 架构的轻量级虚拟机,它深度依赖 Windows 宿主机的底层服务和注册表。因此,你不能 像插拔普通 U盘那样,插上新电脑就能直接在 Windows Terminal 里看到它。目标电脑必须已经安装了 WSL2 功能,并且每次将移动硬盘插到一台全新的电脑上时,你需要执行一条简单的命令将硬盘上的虚拟磁盘"注册"到那台电脑的 WSL 系统中。

步骤一:固定默认登录用户(关键准备)

在迁移 WSL 环境时,系统通常会丢失默认用户的设置,导致你导入后默认以 root 身份登录。为了避免权限错乱,我们需要先在当前 Ubuntu 中写死默认用户。

  1. 打开当前的 Ubuntu,输入以下命令编辑配置文件:

    sudo nano /etc/wsl.conf

  2. 在文件中添加以下内容(将 your_username 替换为你平时的登录用户名):

bash 复制代码
[user]
default=your_username

3.保存并退出 (Ctrl+O, Enter, Ctrl+X)。

步骤二:导出并安装到移动硬盘

我们将通过标准导出/导入的方式,将当前的系统打包并重新释放到移动硬盘上。这种方法还有一个额外的好处:它能顺便对长期使用后膨胀的虚拟磁盘(VHDX)进行一次"瘦身"。

  1. 打开 Windows 的 PowerShell(建议使用管理员权限)。

  2. 彻底关闭 WSL 服务,确保数据一致性:

bash 复制代码
wsl --shutdown

3.查看当前的分发版名称 (通常是 UbuntuUbuntu-22.04):

bash 复制代码
wsl -l -v

4.将环境导出为 tar 文件 (假设你的移动硬盘是 E: 盘):

bash 复制代码
wsl --export Ubuntu E:\ubuntu-backup.tar

注意:如果你的开发环境中包含大量的代码和工具链,这个打包过程可能需要较长时间,且生成的 tar 文件会很大。

5.在移动硬盘上导入环境 : 在 E: 盘创建一个用于存放虚拟磁盘的目录(例如 E:\WSL\Ubuntu),然后执行导入命令,并给它起个新名字,比如 Ubuntu-Portable

bash 复制代码
wsl --import Ubuntu-Portable E:\WSL\Ubuntu E:\ubuntu-backup.tar --version 2

6.验证运行

bash 复制代码
wsl -d Ubuntu-Portable

如果能正常进入系统且是你自己的用户名,说明迁移成功。此时你可以删掉 E:\ubuntu-backup.tar 释放空间。如果你想释放原电脑的 C 盘空间,可以使用 wsl --unregister Ubuntu 卸载原本的旧环境。

步骤三:在另一台电脑上使用(即插即用指南)

当你带着移动硬盘来到一台新电脑时,请按以下步骤操作:

前提条件: 新电脑必须已经启用了 WSL2 功能(可以通过在新电脑的 PowerShell 中运行 wsl --installwsl --update 来确认)。

  1. 插入移动硬盘,记下它分配的盘符(假设在新电脑上分配的是 F: 盘)。

  2. 打开 PowerShell,使用 --import-in-place 命令将移动硬盘上的 .vhdx 虚拟磁盘直接注册到这台新电脑上(不需要再次解压,直接挂载):

bash 复制代码
wsl --import-in-place Ubuntu-Portable F:\WSL\Ubuntu\ext4.vhdx

3.注册完成后,就可以像平常一样启动它了:

bash 复制代码
wsl -d Ubuntu-Portable

拔出硬盘前的注意事项: 在你要拔出移动硬盘离开这台电脑前,务必 在 PowerShell 中执行 wsl --shutdown 彻底关闭虚拟机的读写,否则直接热插拔极易导致 ext4.vhdx 文件损坏,造成开发数据丢失。 如果这台电脑不是你的常用电脑,你也可以在离开前执行 wsl --unregister Ubuntu-Portable 将其从该电脑的注册表中清理掉(这只会解除关联,不会删除你移动硬盘上的数据)。

相关推荐
问简3 小时前
ubuntu 输入法优化
linux·运维·ubuntu
勤自省3 小时前
Windows 文件无法粘贴到 Linux(Ubuntu)系统的解决方案
linux·windows·ubuntu
博主花神5 小时前
【TypeScript】梳理
javascript·ubuntu·typescript
想唱rap6 小时前
计算机网络基础
linux·计算机网络·mysql·ubuntu·bash
程序员老邢7 小时前
【技术底稿 10】16G Ubuntu 服务器手动部署 Ollama 0.20.4 全流程(避坑 HTTP2 错误)
服务器·ubuntu·ai·语言模型·devops
qq_8573058197 小时前
ubuntu 22 源码安装bochs
linux·运维·ubuntu
weixin_423533999 小时前
虚拟机-ubuntu突然连不上网,网络图标消失
linux·运维·ubuntu
莫回首�15 小时前
ubuntu 20.04 多网卡配置,遇到问题总结
linux·网络·ubuntu
问简19 小时前
ubuntu24 主题经验
ubuntu