IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 从 VHDX 文件恢复 (导入) WSL 2 安装 -> 正文阅读

[系统运维]从 VHDX 文件恢复 (导入) WSL 2 安装

从 VHDX 文件恢复 (导入) WSL 2 安装

Microsoft 官方以及常见的 WSL 导入导出方式, 都是通过 wsl --export 生成 tar 文件而使用 wsl --import 命令完成导入.

但是, 有时候出于某些意外, 比如系统出现严重问题需要重装, 或者其他导致注册表丢失的情况, Windows 丢失了 WSL 安装相关的信息, 将无法使用上述的方式进行导出.

不过, 只要还有 WSL 所在的 VHDX 文件 (虚拟磁盘文件), 就没有问题, 因为 WSL 最关键的就是这个虚拟磁盘文件, 只需要在注册表中重建相应的信息就能正常使用.

有时候 WSL 磁盘文件过大, 导入导出时容易出现问题, 这种思路也是适用于的,

本文讲解的思路主要来自于 Issue #4762 - Microsoft/WSL.

注册表丢失的情况

笔者在重装系统之前, 是通过 Microsoft Store 安装的 Ubuntu 发行版. 应用商店中的数据一般在 %LocalAppData%/Packages 1 下.

重置系统 (选择保留个人数据) 后, 数据文件会被 迁移Windows.old 中, 也就是 X:/Windows.old/Users/%UserName%/AppData/Local/Packages 中.

其中, 商店里安装的 Ubuntu 发行版对应的包名会以 CanonicalGroupLimited.Ubuntu 开头, 打开对应的目录后, 在 LocalState 中就能找到 .vhdx 文件.

事实上, 重装系统后, 许多其他软件的数据也能从 Windows.old 中恢复. 为了防止 Windows.old 在一段时间后被清清除, 建议及时备份 Windows.old 中的用户文件.

可以将 .vhdx 文件剪切出来, 放在某个目录下, 比如 D:/wslinstall/ubuntu20.04.

之后, 编写对应的 REG 文件, 以便导入注册表. 文件模板:

Windows Registry Editor Version 5.00

[HKEY_USERS\[SID]\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\{[UUID]}]
"State"=dword:00000001
"DistributionName"="[DISTRO_NAME]"
"Version"=dword:00000002
"BasePath"="\\\\?\\[VHDX_PATH]"
"Flags"=dword:0000000f
"DefaultUid"=dword:000003e8

复制上述的模板到文本文件中, 并替换其中方括号标注的项 2:

替换说明
[SID] 3打开 “命令提示符”, 使用 whoami /user 命令获取到自己 (当前用户) 的 SID
[UUID]可以去这个 UUID 生成网站 随机生成一个 UUID
[DISTRO_NAME]指定发行版的名称, 比如 Ubuntu
[VHDX_PATH]发行版所在的路径, 并将反斜线转义, 比如 D:\\WSL\\Ubuntu

比如, 在上文中我们假设了文件存储在 D:/wslinstall/ubuntu20.04, 那么 REG 文件就类似如下所示:

Windows Registry Editor Version 5.00

[HKEY_USERS\<你的 SID>\SOFTWARE\Microsoft\Windows\CurrentVersion\Lxss\{8ebf13b4-6ce3-4027-a2c7-f84ab4dad111}]
"State"=dword:00000001
"DistributionName"="Ubuntu 20.04"
"Version"=dword:00000002
"BasePath"="\\\\?\\D:\\wslinstall\\ubuntu20.04"
"Flags"=dword:0000000f
"DefaultUid"=dword:000003e8

将内容保存成, 比如名为 wsl-info.reg 文件, 在资源管理器中直接双击就可以完成导入.

导入完成后, 就可以在 Windows Termial 或者 wsl 命令中找到这个发行版了.

迁移的情况

类似的, 只需要有 WSL 的 VHDX 文件, 重新建立注册表即可. 注意使用对应用户的 SID.

参考资料

关于 Windows 路径名缩写

WSL 安装和使用


  1. X:/Users/%UserName%/AppData/Local/Packages. 另见参考资料中 “关于 Windows 路径名缩写”. ??

  2. 参考 @synergies 的评论回复. ??

  3. 参考 Security identifiers - Microsoft Docs. ??

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-23 01:01:37  更:2022-06-23 01:02:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 14:24:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码