将 Hyper-V 上的 Ubuntu 虚拟机内容迁移到 WSL (Windows Subsystem for Linux) 中

将 Hyper-V 上的 Ubuntu 虚拟机内容迁移到 WSL (Windows Subsystem for Linux) 中,最推荐且最干净的方法是在 Hyper-V 内部打包文件系统,然后在 WSL 中导入

以下是详细的操作步骤:

方法一:通过 Tar 包迁移(推荐)

这种方法可以保留你的用户数据、配置文件和已安装的软件,同时避免迁移不必要的系统垃圾。

1. 在 Hyper-V Ubuntu 中导出文件系统

启动你的 Hyper-V Ubuntu 虚拟机,打开终端,执行以下命令将整个文件系统打包:

bash 复制代码
# 进入根目录或临时目录
cd /tmp

# 打包整个文件系统(排除不需要的虚拟文件系统和挂载点)
sudo tar -czf /tmp/ubuntu-hyperv-backup.tar.gz \
  --exclude=/proc \
  --exclude=/sys \
  --exclude=/dev \
  --exclude=/run \
  --exclude=/tmp/ubuntu-hyperv-backup.tar.gz \
  --exclude=/mnt \
  --exclude=/media \
  --exclude=/lost+found \
  /

注意: 如果文件很大,建议将生成的 ubuntu-hyperv-backup.tar.gz 移动到一个 Windows 也能访问的共享文件夹,或者通过 SCP/SFTP 传输到 Windows 宿主机上。你也可以直接在 Hyper-V 中挂载一个 Windows 的共享目录来写入这个文件。

2. 在 Windows 上准备 WSL 环境(如果已有则跳过)

确保你已经安装了 WSL。打开 PowerShell:

powershell 复制代码
# 查看当前已安装的发行版
wsl -l -v

# 如果需要,可以先安装一个空的 Ubuntu 作为基础(可选)
wsl --install Ubuntu-24.04
3. 将备份导入为新的 WSL 实例

使用 wsl --import 命令将刚才的 tar 包导入为一个全新的 WSL 发行版:

powershell 复制代码
# 语法: wsl --import <自定义名称> <安装路径> <tar包路径>
wsl --import MyUbuntu D:\WSL\MyUbuntu C:\path\to\ubuntu-hyperv-backup.tar.gz
4. 修复默认用户(重要!)

通过 --import 导入的 WSL 实例默认会以 root 用户登录。你需要设置回你原来的普通用户:

powershell 复制代码
# 进入新导入的实例
wsl -d MyUbuntu

# 在 WSL 内部执行(将 your_username 替换为你在 Hyper-V 中的用户名)
# 对于 Ubuntu/Debian:
echo -e "[user]\ndefault=your_username" | sudo tee /etc/wsl.conf

# 退出 WSL
exit

然后在 PowerShell 中重启该 WSL 实例使配置生效:

powershell 复制代码
wsl --terminate MyUbuntu
wsl -d MyUbuntu

此时你应该以普通用户身份登录,且所有之前的文件、软件、配置都完好无损。


方法二:仅迁移特定项目(轻量级)

如果你不需要完整的系统环境,只想迁移部分内容:

迁移内容 推荐方式
个人文件/代码 scp / SFTP / 共享文件夹直接拷贝
已安装的软件包列表 dpkg --get-selections > packages.txt → WSL中 dpkg --set-selections < packages.txt && apt-get dselect-upgrade
用户配置 拷贝 ~/.bashrc, ~/.ssh, ~/.config 等 dotfiles
Docker 镜像/容器 docker save/load 或推送到 Registry
数据库 使用 mysqldump / pg_dump 等原生导出工具

⚠️ 注意事项

  1. 内核差异:Hyper-V 使用完整的 Linux 内核,WSL2 使用微软定制的轻量级内核。极少数依赖特定内核模块的程序可能无法在 WSL 中运行。
  2. Systemd :WSL2 较新版本已支持 systemd,但如果你的服务依赖完整的 init 系统行为,可能需要额外配置。确认 /etc/wsl.conf 中有 [boot] systemd=true
  3. 网络配置:Hyper-V 中的静态 IP、网卡绑定等网络配置在 WSL 中不适用,需要重新适配 WSL 的网络模式(NAT/mirrored)。
  4. 磁盘空间:确保 Windows 目标盘有足够的空间,tar 包 + 解压后的 VHDX 文件会占用较多空间。
  5. 清理 :迁移完成并验证无误后,记得删除 /tmp 下的 tar 包以释放 Hyper-V 虚拟机的磁盘空间。

推荐优先使用方法一,它是最完整、最可靠的整机迁移方案。

相关推荐
我星期八休息1 小时前
扩展—DNS与ICMP
linux·服务器·网络
筝筝ba2 小时前
linux 查询当前登录的用户数量
linux·服务器·网络
ι:2 小时前
DeepSeek Harness 桌面一键启动与网页背景修改指南
windows·学习·deepseekharness
woniu_buhui_fei2 小时前
日常工作常用的命令(Linux+JDK)
linux·运维·服务器
coward913 小时前
全志T507 (sun50iw9p1)sunxi pinctrl 子系统实现分析
linux·嵌入式硬件
imaol13 小时前
文件编程--标准IO
linux·运维·算法
王坊兴3 小时前
Ubuntu 部署产品原型静态服务器:SFTP + Nginx
服务器·nginx·ubuntu
zuozewei3 小时前
7DGroup 开源 dsh-7d-tray-win 系统托盘插件
windows·代码复审
我是小灰灰吖4 小时前
解决高频率图像处理中的内存“只增不减”:glibc malloc_trim实战指南
linux·qt