将 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 虚拟机的磁盘空间。

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

相关推荐
Johny_Zhao2 小时前
网络安全等级保护测评实施方案
linux·网络·人工智能·网络安全·信息安全·云计算·等保测评·系统运维·itsm
落羽的落羽2 小时前
【AI】快速理解AI应用的相关名词概念
linux·c++·人工智能·python·计算机网络·算法
刚入门的大一新生2 小时前
Linux-进程控制
linux·运维·服务器·c++
上火的金鱼妹3 小时前
K8S基础组件作用和关系整理
linux·运维·服务器·kubernetes
Vcaker3 小时前
Linux学习25-harbor私有仓库部署
linux·运维·学习
刃神太酷啦3 小时前
Redis 进阶核心:持久化 (RDB/AOF)、事务与主从复制全解析----《Hello Redis!》(5)
linux·c语言·数据库·c++·redis·缓存·bootstrap
编程的一拳超人3 小时前
DeepSeek Harness Linux/macOS/Windows 本地下载、启动与模型配置指南
linux·windows·macos·deepseek
时凌云.3 小时前
【2026最新】JDK 下载安装与环境配置全教程(Windows/Mac/Linux 三平台,零基础友好)
java·linux·macos
AIGC小尼3 小时前
Windows 本地 AI 漫剧全自动生产线部署完整教程(零基础、全指令、带源码、模型配置、排错方案)
人工智能·windows·ai漫剧
不懂的浪漫4 小时前
ToDesk 连接 Linux 后分辨率过低的解决方法
linux·运维·数据库