创建自定义虚拟机库

Windows 10 Fall Creators Update 和更高版本。

在 Fall Creators Update 中,“快速创建”为包括虚拟机库而进行了扩展。

Quick Create VM Gallery with custom images

虽然 Microsoft 和 Microsoft 合作伙伴提供了一组映像,但该库也会列出你自己的映像。

本文详细介绍:

  • 构建与库兼容的虚拟机。
  • 创建新库源。
  • 将自定义库源添加到库中。

虚拟机库是 Windows 注册表中定义的一组虚拟机源的图形视图。 每个虚拟机源都是一个 JSON 文件路径(本地路径或 URI),并且以虚拟机作为列表项。

你在库中看到的虚拟机列表是第一个源的完整内容,接着是第二个源的内容,以此类推,直到列出所有可用的虚拟机为止。 每次启动库时都会动态创建列表。

gallery architecture

注册表项:Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization

值名称:GalleryLocations

类型:REG_MULTI_SZ

库中的虚拟机可以是磁盘映像 (.iso) 或虚拟硬盘驱动器 (.vhdx)。

由虚拟硬盘驱动器制作的虚拟机具有一些配置要求:

  1. 以支持 UEFI 固件为构建目的。 如果它们是使用 Hyper-V 创建的,那么这是第 2 代虚拟机。
  2. 应该至少为虚拟硬盘分配 20GB 的空间 - 请记住,这是最大大小。 Hyper-V 将不会占用虚拟机当前未使用的空间。

测试新虚拟机映像

虚拟机库使用与从本地安装源安装相同的机制创建虚拟机。

若要验证虚拟机映像是否将启动并运行,请执行以下操作:

  1. 打开虚拟机库(Hyper-V 快速创建),然后选择 Local Installation SourceScreenshot of the Local installation source button emphasized in the Create Virtual Machine dialog.
  2. 选择 Change Installation SourceScreenshot of the Change installation source button emphasized in the Create Virtual Machine dialog.
  3. 选择将在库中使用的 .iso 或 .vhdx。
  4. 如果映像为 Linux 映像,请取消选择“安全启动”选项。 Screenshot of enabling Windows Secure Boot in the Create Virtual Machine dialog.
  5. 创建虚拟机。 如果虚拟机正常启动,则可以入库。

下一步是创建新库源。 这是列出虚拟机并添加你在库中看到的所有额外信息的 JSON 文件。

文本信息:

Labeled gallery text locations

  • 名称 - 必填 - 这是显示在左列和虚拟机视图顶部的名称。

  • 发布者 - 必填

  • 说明 - 必填 - 描述虚拟机的字符串列表。

  • 版本 - 必填

  • lastUpdated - 默认为 0001 年 1 月 1 日(星期一)。

    格式应为:yyyy-mm-ddThh:mm:ssZ

    以下 PowerShell 命令将以正确格式提供今天的日期并将其放在剪贴板上:

    Get-Date -UFormat "%Y-%m-%dT%TZ" | clip.exe
    
  • 区域设置 - 默认为空白。

图片:

Labeled gallery picture locations

  • 徽标 - 必需
  • 符号
  • thumbnail

当然,还有你的虚拟机(.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":  ""
            }
        }
    ]
}

将自定义库源添加到虚拟机库的最简单方法是在 REGEDIT 中添加它。

  1. 打开 regedit.exe

  2. 导航到 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\

  3. 查找 GalleryLocations 项。

    如果此项已经存在,请转到编辑菜单并进行修改

    如果此项尚不存在,请转到编辑菜单,从新建浏览到多字符串值

  4. 将你的库添加到 GalleryLocations 注册表项。

    Gallery registry key with the new item

疑难解答

虚拟机库在 Windows 事件查看器中会提供错误报告。 若要检查错误,请执行以下操作:

  1. 打开事件查看器
  2. 导航到“Windows 日志”->“应用程序”
  3. 查找源 VMCreate 中的事件。

资源

GitHub 链接中提供一部分库脚本和帮助程序。

请在此处参阅示例库条目。 这是定义收件箱库的 JSON 文件。