当前位置: 首页 > article >正文

迁移WSL中的ext4.vhdx文件

文章目录

  • 环境
  • 前言
  • 过程
  • 参阅

环境

Windows11(WSL2)

前言

今天发现系统C盘的磁盘空间已经严重不足,查找后发现有一个很大的 ext4.vhdx 文件,位置在:

C:\Users\ljfro\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState

因为我在WSL中安装了一个ubuntu子系统,所以这个ext4.vhdx文件就是ubuntu系统的虚拟磁盘。

下面介绍如何迁移这个文件到其它分区。

过程

1)查看安装了哪些发行版Linux子系统
在PowerShell中,执行wsl -l -v命令,显示:

  NAME                   STATE           VERSION
* Ubuntu-22.04           Running         2

如果子系统的状态是运行中(Running),需要先停止它:

wsl --terminate Ubuntu-22.04

2)导出子系统
假设我们要将ubuntu子系统导出到D:\export.vhdx,则执行命令:

wsl --export Ubuntu-22.04 D:\export.vhdx --vhd

WSL2支持两种导出格式,tar 和 vhdx,默认是tar。如果不加--vhd参数则代表导出为tar格式:

wsl --export Ubuntu-22.04 D:\export.tar

但是导出tar格式过程中可能会报以下错误:

pax format cannot archive sockets

vhdx格式则不存在这个问题。

3)删除原有的子系统

wsl --unregister Ubuntu-22.04

删除后再执行wsl -l命令,该子系统就不会再显示出来。

4)导入子系统
假设我们要将子系统导入到D:\WindowsWSL\Ubuntu22.04\目录,则执行命令:

wsl --import Ubuntu-22.04 D:\WindowsWSL\Ubuntu22.04\ D:\export.vhdx --vhd

命令中的Ubuntu-22.04是子系统的新名称,可以修改,这里我没改直接沿用旧名称。

导入成功后,检查虚拟磁盘文件是否已经迁移到新目录:

(Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq 'Ubuntu-22.04' }).GetValue("BasePath") + "\ext4.vhdx"

如果能看到D:\WindowsWSL\Ubuntu22.04\ext4.vhdx,则代表迁移成功了。

5)将子系统设置为默认系统(可选)

wsl --set-default Ubuntu-22.04

6)设置默认登录用户(可选)
新的子系统导入成功后,默认会使用root用户登录,如果你不希望用root,则可以在进入子系统后,编辑/etc/wsl.conf文件(如果没有此文件则新增一个),新增以下内容:

[user]
default=ljfrocky

ljfrocky是我希望使用的用户,根据实际情况修改。修改完后重启子系统即可。

或者在运行子系统时显式指定用户名也可以:

wsl -d Ubuntu-22.04 -u ljfrocky

参阅

  • https://learn.microsoft.com/zh-cn/windows/wsl/basic-commands
  • https://learn.microsoft.com/zh-cn/windows/wsl/disk-space#how-to-locate-the-vhdx-file-and-disk-path-for-your-linux-distribution
  • https://superuser.com/questions/1602502/change-default-wsl-2-user-after-export-import

http://www.kler.cn/a/501986.html

相关文章:

  • 《CPython Internals》阅读笔记:p118-p150
  • 网络安全、Web安全、渗透测试之笔经面经总结
  • 基于Piquasso的光量子计算机的模拟与编程
  • gesp(C++五级)(1)洛谷:B3941:[GESP样题 五级] 小杨的锻炼
  • 【Python】Python与C的区别
  • 汇总统计数据--SQL中聚集函数的使用
  • MATLAB与Python中的快速傅里叶变换频谱分析
  • R9000P发热严重
  • 聚铭网络当选中关村华安关键信息基础设施安全保护联盟理事单位
  • 2Hive表类型
  • 计算机网络 | 什么是公网、私网、NAT?
  • Linux:线程的互斥与同步
  • 基于微信小程序的食堂线上预约点餐系统设计与实现(LW+源码+讲解)
  • 【计算机网络】深入浅出计算机网络
  • windows动态壁纸音频显示效果推荐
  • 【C++补充】第二弹---深度解析布隆过滤器与海量数据处理策略
  • Windows电脑本地安装并随时随地远程使用MusicGPT生成AI音乐
  • MySQL不使用子查询的原因
  • 《拉依达的嵌入式\驱动面试宝典》—操作系统篇(三)
  • 服务器证书、数字证书和加解密算法
  • Java中private和static同时使用会出现什么情况?
  • B+树的原理及实现
  • 2025广州国际汽车内外饰技术展览会:引领汽车内外饰发展新潮流-Automotive Interiors
  • 什么叫区块链?怎么保证区块链的安全性?
  • 用队列实现栈和用栈实现队列(下)
  • 【机器学习】无监督学习携凝聚型层次聚类登场。无需预设标签,仅凭数据内在特质,逐步归拢聚合,挖掘隐藏群组,为复杂数据剖析开启智能、高效的新思路。