Windows 10 Fall Creators Update 及更高版本。
在 Fall Creators Update 中,快速创建扩展为包含虚拟机库。
虽然有一组由Microsoft和Microsoft合作伙伴提供的图像,但库还可以列出自己的映像。
本文详细介绍:
- 生成与库兼容的虚拟机。
- 创建新的库源。
- 将自定义库源添加到库。
库体系结构
虚拟机库是 Windows 注册表中定义的一组虚拟机源的图形视图。 每个虚拟机源都是 JSON 文件的路径(本地路径或 URI),其中虚拟机作为列表项。
库中看到的虚拟机列表是第一个源的完整内容,后跟第二个源的内容,依此类推,直到列出所有可用的虚拟机。 每次启动库时,都会动态创建该列表。
注册表项: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization
值名称:GalleryLocations
类型:REG_MULTI_SZ
创建库兼容的虚拟机
库中的虚拟机可以是磁盘映像(.iso)或虚拟硬盘(.vhdx)。
从虚拟硬盘驱动器进行的虚拟机有一些配置要求:
- 构建为支持 UEFI 固件。 如果使用 Hyper-V 创建,则为第 2 代 VM。
- 虚拟硬盘应至少为 20GB - 请记住,这是最大大小。 Hyper-V 不会占用 VM 未主动使用的空间。
测试新的 VM 映像
虚拟机库使用与从本地安装源安装相同的机制创建虚拟机。
若要验证虚拟机映像将启动并运行:
- 打开 VM 库(Hyper-V 快速创建),然后选择 “本地安装源”。
- 选择 “更改安装源”。
- 选取将在库中使用的.iso或 .vhdx。
- 如果映像是 Linux 映像,请取消选择“安全启动”选项。
- 创建虚拟机。 如果虚拟机正确启动,则它已准备好用于库。
生成新的库源
下一步是创建新的库源。 这是列出虚拟机并添加库中显示的所有额外信息的 JSON 文件。
文本信息:
name - 必需 - 这是显示在左侧列和虚拟机视图顶部的名称。
publisher - 必需
description - 必需 - 描述 VM 的字符串列表。
version - required
lastUpdated - 默认为 0001 年 1 月 1 日星期一。
格式应为:yyyy-mm-ddThh:mm:ssZ
以下 PowerShell 命令将以正确的格式提供今天的日期,并将其放在剪贴板上:
Get-Date -UFormat "%Y-%m-%dT%TZ" | clip.exe
locale - 默认值为空。
图片:
- 徽标 - 必需
- 象征
- 缩略图
当然,虚拟机(.iso或 .vhdx)。
若要生成哈希,可以使用以下 powershell 命令:
Get-FileHash -Path .\TMLogo.jpg -Algorithm SHA256
下面的 JSON 模板包含初学者项和库的架构。 如果在 VSCode 中对其进行编辑,它将自动提供 IntelliSense。
{
"$schema": "https://raw.githubusercontent.com/MicrosoftDocs/Virtualization-Documentation/live/hyperv-tools/vmgallery/vm-gallery-schema.json",
"images": [
{
"name": "",
"version": "",
"locale": "",
"publisher": "",
"lastUpdated": "",
"description": [
""
],
"disk": {
"uri": "",
"hash": ""
},
"logo": {
"uri": "",
"hash": ""
},
"symbol": {
"uri": "",
"hash": ""
},
"thumbnail": {
"uri": "",
"hash": ""
}
}
]
}
将库连接到 VM 库 UI
将自定义库源添加到 VM 库的最简单方法是将其添加到 regedit 中。
打开 regedit.exe
跳转到
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\
查找
GalleryLocations
项。如果已存在,请转到 “编辑” 菜单并 修改。
如果尚不存在,请转到 “编辑 ”菜单,导航到“ 新建 ”到 多字符串值
将库添加到
GalleryLocations
注册表项。
故障排除
检查加载库时出错
虚拟机库在 Windows 事件查看器中提供错误报告。 检查错误:
- 打开事件查看器
- 导航到 Windows 日志 ->应用程序
- 从源 VMCreate 查找事件。
资源
GitHub 链接中有少量库脚本和帮助程序。
请参阅 此处的示例库条目。 这是定义内置库的 JSON 文件。