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 将其从该电脑的注册表中清理掉(这只会解除关联,不会删除你移动硬盘上的数据)。

相关推荐
xiaobobo33308 小时前
Ubuntu如何安装Vmware-tools和root用户
ubuntu·root用户·vmware-tools
轩Scott8 小时前
Ubuntu开机卡Logo?NVIDIA驱动修复全攻略
linux·ubuntu
caicai_xiaobai12 小时前
Ubuntu上Git安装步骤
linux·git·ubuntu
wj30558537813 小时前
课程 1:WSL + uv + ComfyUI 环境选择说明
python·wsl·cuda·uv·comfyui
IceSugarJJ14 小时前
Windows下VSCode+ WSL项目启动流程
linux·windows·vscode·ubuntu·wsl
宠..15 小时前
VS Code SSH 远程连接 Ubuntu 并实现快速运行(C/C++示例)
java·运维·c语言·开发语言·c++·ubuntu·ssh
我先去打把游戏先15 小时前
Ubuntu虚拟机(服务器版本)Git安装教程(附常用命令)——从零开始掌握版本控制
服务器·c语言·c++·git·嵌入式硬件·物联网·ubuntu
不仙5201 天前
VMware Workstation 26.0.0 在 Ubuntu 24.04 (内核 6.17.0) 上的安装与内核模块编译问题
linux·ubuntu·elasticsearch
dapeng-大鹏1 天前
KVM+LVM 零停机在线扩容 Ubuntu 根分区:从磁盘添加到逻辑卷扩展完整
linux·运维·ubuntu·磁盘空间扩展
小小菜鸟,可笑可笑1 天前
Ubuntu 系统安装搜狗输入法 & 使用英文标点
ubuntu