迁移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.mzph.cn/pingmian/67094.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 11更新之后卡顿 (黑神话掉帧严重)问题探索

前提 Windows 11 晚上更新完 24h2 之后,第二天玩黑神话,才40多帧 之前开启插针,可以运行到 120 帧左右 我的配置 9600X 3080 版本退回 用系统自带的 goBack 版本退回 大概不到3分钟 帧数还是不对,于是重做了系统 重做系统 …

50_Lua垃圾回收

1.Lua垃圾回收机制概述 Lua采用了一种自动内存管理机制,称为垃圾回收(Garbage Collection, GC)。垃圾回收的主要目的是回收程序中不再被使用的内存,从而避免内存泄漏。Lua的垃圾回收器负责回收动态分配的对象,如函数、用户数据、表、字符串、线程、内部结构等。Lua的垃圾…

[云原生之旅] K8s-Portforward的另类用法, 立省两个端口

前言 此方法适用于Pod不需要大量连接的情况: 有多个pod在执行任务, 偶尔需要连接其中一个pod查看进度/日志;对pod执行一个脚本/命令; 不适用于大量连接建立的情况: pod启的数据库服务;pod启的Api服务;pod启的前端服务;pod启的Oss服务; Portforward简介 Portforward就是端…

Spring Boot 动态表操作服务实现

Spring Boot 动态表操作服务实现 Spring Boot 动态表操作服务实现1. 环境配置2. JdbcTemplate 的使用2.1 创建动态表2.2 动态添加字段2.3 动态删除字段2.4 动态修改字段类型2.5 删除表的方法实现 3. 小结3.1 可能的优化 Spring Boot 动态表操作服务实现 在现代的应用开发中&am…

宁德时代C++后端开发面试题及参考答案

请阐述面向对象的三大特性。 面向对象编程有三大特性,分别是封装、继承和多态。 封装是指将数据和操作数据的方法绑定在一起,对数据的访问和操作进行限制。这样做的好处是可以隐藏对象的内部细节,只暴露必要的接口给外部。例如,我…

【Linux系统】—— vim 的使用

【Linux系统】—— vim 的使用 1 vim 的基本概念2 vim 的多模式3 命令模式下的命令集3.1 进入/退出其他模式3.2 光标移动命令集3.3 复制/剪切/粘贴/删除命令集3.4 撤销命令集3.5 查找命令集3.6 替换命令集3.7 进入与退出替换模式 4 批量化编译5 底行模式6 vim 小技巧7 vim简单配…

C++11新特性:aligned_storage等空间分配工具

C11对于内存对齐的支持 对齐的数据有助于提高内存的访问效率以及减少程序运行期间因为内存未对齐导致硬件抛出错误的可能。因此在c中,数据的对齐是必不可少的,对于系统而言在默认情况下也是坚持数据对齐这一准则的。关于内存对齐的详细内容可见《C 内存对…

机器学习数据预处理preprocessing

预处理方法预处理方法预处理方法BinarizerFunctionTransformerKBinsDiscretizerKernelCentererLabelBinarizerLabelEncoderMaxAbsScalerMinMaxScalerMultiLabelBinarizerNormalizer OneHotEncoderOrdinalEncoderPolynomialFeaturesPowerTransformerQuantileTransformer sklear…

3D滤波器处理遥感tif图像

import cv2 import numpy as np from osgeo import gdal# 定义 Gabor 滤波器的参数 kSize 31 # 滤波器核的大小 g_sigma 3.0 # 高斯包络的标准差 g_theta np.pi / 4 # Gabor 函数的方向 g_lambda 10.0 # 正弦波的波长 g_gamma 0.5 # 空间纵横比 g_psi np.pi / 2 # …

UnityXR Interaction Toolkit 如何检测HandGestures

前言 随着VR设备的不断发展,从最初的手柄操作,逐渐演变出了手部交互,即头显可以直接识别玩家的手部动作,来完成手柄的交互功能。我们今天就来介绍下如何使用Unity的XR Interaction Toolkit 来检测手势Hand Gesture。 环境配置 1.使用Unity 2021或者更高版本,创建一个项…

Qt 中使用 moveToThread 多线程踩坑记录

关于QT Widget 其它文章请点击这里: QT Widget 今天在使用 Qt 的 moveToThread 实现多线程时,遇到了两个常见的坑,在这里记录一下,供自己和大家参考。 一、继承于QWidget 的控件不能在子线程中运行 Qt 的规定是:所有 UI 操作…

Unity Protobuf实践

官方文档:https://protobuf.com.cn/overview/ 1. 获取Protobuf: 1.1 通过NuGet包管理器: 拷贝dll: 选择.net2.0的dll: 导入Unity Plugins目录: 1.2 下载源码并生成dll: GitHub - protocolbuf…

【微服务】面试 4、限流

微服务限流技术总结 一、微服务业务面试题引入 在微服务业务面试中,限流是重要考点,常与分布式事务、分布式服务接口幂等解决方案、分布式任务调度等一同被考查。面试官一般会询问项目中是否实施限流及具体做法,回答需涵盖限流原因、采用的方…

Java Bean Validation 不适用Spring的情况下自定义validation注解

Java Bean Validation(也称为 JSR 380,为 Bean Validation 2.0 规范)提供了一套基本的注解,用于定义和验证 Java Bean 的属性。例如: NotNull:属性不能为空 Size:字符串、集合或数组的大小有约…

VScode 配置 C语言环境

遇到的问题集合 mingw官方下载网站(https://sourceforge.net/projects/mingw-w64/files/)更新之后,与网上大多数教程上写的界面不同了。 网上大多数教程让下载这个: 但是现在找不到这个文件。 写hello.c文件时,报错&…

语音技术与人工智能:智能语音交互的多场景应用探索

引言 近年来,智能语音技术取得了飞速发展,逐渐渗透到日常生活和各行各业中。从语音助手到智能家居控制,再到企业客服和教育辅导,语音交互正以前所未有的速度改变着人机沟通的方式。这一变革背后,人工智能技术无疑是关键…

前端依赖安装指南

前端依赖安装指南 一、NVM管理工具安装 1.在 Windows 上安装 下载 NVM for Windows 的安装程序:(最新版本可以在 nvm-windows Releases 页面 找到)运行下载的安装程序并按步骤操作。 2.配置 NVM exe安装自动配置环境变量 3. 验证 NVM 安装 验证 NVM 是否成功…

使用sqlplus的easy connect时如何指定是链接到shared server还是dedicated process

在oracle配置了shared server的情况下 可以使用 :shared来指定链接到shared server也可以默认不指定 不指定的情况下会默认链接到shared server 如果想链接到 dedicated process 则必须显式指定链接到dedicated process server type的类型包括DEDICATED, SHARED, or POOLED. […

26个开源Agent开发框架调研总结(2)

根据Markets & Markets的预测,到2030年,AI Agent的市场规模将从2024年的50亿美元激增至470亿美元,年均复合增长率为44.8%。 Gartner预计到2028年,至少15%的日常工作决策将由AI Agent自主完成,AI Agent在企业应用中…

IOS HTTPS代理抓包工具使用教程

打开抓包软件 在设备列表中选择要抓包的 设备,然后选择功能区域中的 HTTPS代理抓包。根据弹出的提示按照配置文件和设置手机代理。如果是本机则会自动配置,只需要按照提醒操作即可。 iOS 抓包准备 通过 USB 将 iOS 设备连接到电脑,设备需解…