创建自定义虚拟机库

Windows 10 Fall Creators Update 及更高版本。

在 Fall Creators Update 中,快速创建扩展为包含虚拟机库。

使用自定义映像快速创建 VM 库

虽然有一组由Microsoft和Microsoft合作伙伴提供的图像,但库还可以列出自己的映像。

本文详细介绍:

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

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

库中看到的虚拟机列表是第一个源的完整内容,后跟第二个源的内容,依此类推,直到列出所有可用的虚拟机。 每次启动库时,都会动态创建该列表。

库体系结构

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

值名称:GalleryLocations

类型:REG_MULTI_SZ

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

从虚拟硬盘驱动器进行的虚拟机有一些配置要求:

  1. 构建为支持 UEFI 固件。 如果使用 Hyper-V 创建,则为第 2 代 VM。
  2. 虚拟硬盘应至少为 20GB - 请记住,这是最大大小。 Hyper-V 不会占用 VM 未主动使用的空间。

测试新的 VM 映像

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

若要验证虚拟机映像将启动并运行:

  1. 打开 VM 库(Hyper-V 快速创建),然后选择 “本地安装源”。 “创建虚拟机”对话框中强调的“本地安装源”按钮的屏幕截图。
  2. 选择 “更改安装源”。 “创建虚拟机”对话框中强调的“更改安装源”按钮的屏幕截图。
  3. 选取将在库中使用的.iso或 .vhdx。
  4. 如果映像是 Linux 映像,请取消选择“安全启动”选项。 在“创建虚拟机”对话框中启用 Windows 安全启动的屏幕截图。
  5. 创建虚拟机。 如果虚拟机正确启动,则它已准备好用于库。

下一步是创建新的库源。 这是列出虚拟机并添加库中显示的所有额外信息的 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 库的最简单方法是将其添加到 regedit 中。

  1. 打开 regedit.exe

  2. 跳转到 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Virtualization\

  3. 查找 GalleryLocations 项。

    如果已存在,请转到 “编辑” 菜单并 修改

    如果尚不存在,请转到 “编辑 ”菜单,导航到“ 新建 ”到 多字符串值

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

    包含新项的库注册表项

故障排除

虚拟机库在 Windows 事件查看器中提供错误报告。 检查错误:

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

资源

GitHub 链接中有少量库脚本和帮助程序。

请参阅 此处的示例库条目。 这是定义内置库的 JSON 文件。