准备用于 Nutanix 中分层的操作系统映像

本主题介绍如何准备干净的操作系统映像,以便将其导入新的操作系统层。开始之前,请确保您满足要求。在准备映像时,如果您认为 Microsoft Ngen.exe 操作耗时过长,则可以加快该操作(如有必要)

如果使用 Windows 10 且运行 PVS、计算机创建或 View,您可以通过删除 Windows 10 内置应用程序来加快桌面启动时间。但是,我们建议在操作系统层的新版本上删除应用程序,而不是在操作系统映像本身中删除。

注意:

在 Nutanix 中使用无人参与文件。如果存在无人参与文件,App Layering 软件会将其删除,因为在 Nutanix 中不需要或不建议使用该文件。

在虚拟机上安装操作系统

作为此过程的一部分,您可以设置密钥管理服务 (KMS) 激活。

注意: 将映像发布到同时使用 KMS 和基于 Active Directory 的激活 (ADBA) 的环境中会导致激活问题。

  1. 登录 Prism Console。
  2. 选择“任务 > VM”,然后切换到“表视图”以查看现有虚拟机。
  3. 单击右上角的“+创建 VM”,然后输入有关新虚拟机的详细信息:
    1. 输入“名称”并添加“描述”。
    2. 选择 VCPU 的数量。
    3. 设置“每个 CPU 的核心数”。
    4. 设置“内存”。
    5. 选择“磁盘”,并创建具有三个磁盘的虚拟机。第一个 CD-ROM 是操作系统的 ISO。第二个 CD-ROM 用于 Nutanix VIRTIO 驱动程序,该驱动程序允许 Nutanix 虚拟机访问安装操作系统的磁盘。最初分配了一个 CD-ROM。
      1. 编辑分配的“CD-ROM”的值:
      2. 对于“操作”,选择“从 ADSF 文件克隆”。
      3. 对于“总线类型”,选择“IDE”。
      4. 输入 Windows ISO 的路径。该路径是存储容器和 ISO 名称的组合。例如:

        /ISOStore/en_windows_10_enterprise_version_1511_x64_dvd_7224901.iso

      5. 单击“更新”。
    6. 通过单击“+添加新磁盘”按钮添加另一个磁盘:
      1. 将“类型”设置为“CDROM”。
      2. 将“操作”设置为“从 ADSF 文件克隆”。
      3. 将“总线类型”设置为“IDE
      4. 输入 Windows VIRTIO 驱动程序的路径。例如:

        /ISOStore/virtio-win-0.1.102.iso

      5. 单击“添加”。
    7. 单击“+添加新磁盘”按钮。
      1. 将“类型”设置为“磁盘”。
      2. 将“操作”设置为“在容器上分配”。
      3. 将“总线类型”设置为“SCSI”。
      4. 选择要使用的“容器”。
      5. 输入“大小”。
      6. 单击“添加”。
    8. 单击“+添加新网卡”,然后输入“VLAN 名称”。
    9. 单击“保存”。
  4. 启动虚拟机
    1. 选择“任务 > VM”。
    2. 切换到“表视图”以查看现有虚拟机。
    3. 在“”中选择虚拟机,然后单击“启动”。
  5. 通过选择 VM 并单击“启动控制台”来启动控制台。VM 启动时,它会开始从 ISO 磁盘安装 Windows 操作系统。VM 启动时,它会开始从 ISO 磁盘安装 Windows 操作系统。
    1. 当系统询问“您想将 Windows 安装到何处?”时,请注意,即使您在 VM 创建向导中添加了磁盘,也没有磁盘。
    2. 选择“加载驱动程序”选项,然后选择“浏览”。
    3. 选择包含 virtio-win-0.1.1 驱动程序的 CD。
    4. 选择 vioscsi 文件夹,然后选择适用于您的 Windows 操作系统的文件夹。
  6. 操作系统安装完成后,手动安装 VirtIO 驱动程序:
    1. 启动“设备管理器”。
    2. 选择“其他设备”,右键单击“以太网控制器”,然后选择“更新驱动程序软件”。
    3. 浏览“我的电脑”,然后选择 VirtIO CD。以太网驱动程序存储在 NetKVM 文件夹中。
  7. 服务器操作系统: 如果您需要会话主机功能:
    1. 选择“添加角色和功能”。
    2. 对于“安装类型”,选择“基于功能或角色的安装”。
    3. 对于“服务器角色”,选择“远程桌面服务 > 远程桌面会话主机”。
    4. 完成添加服务器角色的过程。
  8. 安装所有重要更新。重新启动系统并检查更多更新。某些更新仅在安装其他更新后才可用。
  9. 安装所有必需的服务包。
  10. 禁用“Windows 系统还原”和“Windows 自动更新”。
  11. 启用内置管理员并选中“密码永不过期”。
  12. 如果使用密钥管理服务 (KMS) 许可,请以管理员身份运行命令窗口,然后输入以下命令:

    slmgr /skms <kmsserverhost>
    slmgr /rearm
    reboot
    slmgr /ipk XXXX-YOUR-KMS-KEY-XXXX
    slmgr /ato
    <!--NeedCopy-->
    
  13. 服务器操作系统: 将域用户添加到服务器操作系统的远程设置中。
  14. 检查是否存在死(幽灵)网卡,如果存在则删除。输入以下命令:

    set devmgr_show_nonpresent_devices=1
    devmgmt.msc
    <!--NeedCopy-->
    
  15. 卸载所有死(幽灵)网卡。
  16. 如果这是服务器操作系统,请在 PowerShell 中运行以下命令:

    Set-ExecutionPolicy Unrestricted
    Enable-PSRemoting
    <!--NeedCopy-->
    

在操作系统映像上运行 OS Machine Tools

要准备在层中运行的操作系统映像,请在映像上运行 OS Machine Tools 文件。此可执行文件运行 GPO 安装脚本 (gposetup.cmd) 和 Set KMS Version 脚本 (SetKMSVersion.hta)。

  1. 将以下可执行文件下载到操作系统映像上:

    Citrix_App_Layering_OS_Machine_Tools_20.x.x.exe

  2. 运行可执行文件。文件保存到:

    c:\windows\setup\scripts

    注意:

    文件必须解压到 c:\windows\setup\scripts 目录。请勿更改目录。

如果使用密钥管理服务 (KMS),请配置许可证激活

脚本解压后,SetKMSVersion 实用程序会询问您是否使用 KMS 许可。

注意: 将映像发布到同时使用 KMS 和基于 Active Directory 的激活 (ADBA) 的环境中会导致激活问题。

  1. 在以下对话框中,选择是否使用密钥管理服务 (KMS) 许可。

    设置 KMS 版本映像

要为 KMS 配置脚本,请执行以下操作。

  1. 导航到:

    c:\windows\setup\scripts

  2. 以管理员身份运行 SetKMSVersion.exe。这会在 c:\windows\setup\scripts\kmsdir 文件夹中创建一个脚本文件。

操作系统启动时,将运行相应的 KMS 激活脚本。

确保安装了正确版本的 .NET Framework(Windows 10 和 Windows Server 2016)

.NET Framework 是 Microsoft 提供的软件框架,许多第三方应用程序的运行都需要它。任何 .NET Framework 的安装都必须包含在操作系统层中。这包括 .NET 3.5 和 .NET 4.0 或更高版本。

注意:

Citrix Virtual Apps and Desktops (CVAD) 2303 需要 .NET 4.8 才能添加 VDA。

请务必在操作系统层上安装 .NET Framework 和所有更新。

安装 App Layering 服务

  1. c:\windows\setup\scripts 文件夹中,运行 setup_x86.exe (32 位)setup_x64.exe (64 位)

  2. 安装程序会提示您输入 unattend 文件的位置。请勿在 Nutanix 中使用 unattend 文件。

如果使用 MS Office,请运行优化脚本

App Layering 安装包中包含的优化脚本是分层 Microsoft Office 所必需的。此脚本允许您通过禁用不需要的服务、启用所需的服务以及删除特定于安装的驱动程序和设置来节省内存和 CPU。

您可以在操作系统层上运行优化脚本,如果需要,可以使用映像模板中包含的 App 层中的新版本脚本来取代它。由于 App 层是在操作系统层之后应用于映像的,因此 App 层中的脚本会覆盖操作系统层中的原始版本。

  1. c:\windows\setup\scripts 文件夹中,运行 optimizations.cmd 文件以创建在映像创建时运行的文件。

  2. 按照说明在操作系统映像上运行 optimizations.cmd。

加快 Microsoft Ngen.exe 操作(如有必要)

安装所有软件更新后,您必须允许 Ngen.exe 将 .NET 字节码重新编译为本机映像,并构建用于管理它们的注册表项。

Ngen.exe 是 Microsoft 本机映像生成器,它是 .NET 系统的一部分。Windows 根据正在安装的软件以及 Windows 在配置中检测到的内容来确定何时运行 Ngen.exe

重要提示:Ngen.exe 运行时,您必须让它完成。中断的 Ngen.exe 操作可能会导致 .NET 程序集无法正常工作或 .NET 系统中出现其他问题。

通常,Ngen.exe 是一种后台操作,当前台有活动时会暂停。如果要加快 Ngen.exe 操作,可以将其任务置于前台,以尽快完成。

要将任务置于前台:

  1. 以管理员身份打开命令提示符。
  2. 转到当前使用的 Microsoft.NET\Framework 目录:

    cd C:\Windows\Microsoft.NET\FrameworkNN\vX.X.XXXXX <!--NeedCopy-->

  3. 输入以下 Ngen.exe 命令以运行所有排队的项目。此命令在构建程序集之前处理排队的组件安装。

    ngen eqi 3 <!--NeedCopy-->

    Ngen.exe 任务会移到命令提示符的前台,并列出正在编译的程序集。如果看到编译消息,这是正常的。

    您可以使用“任务管理器”查看 MSCORSVW.EXE 实例是否正在运行。如果正在运行,请让它完成,或者运行 ngen update eqi 3

    注意: 请勿重新启动以停止任务。请让任务完成!

  4. 确保所有 Ngen.exe 进程都已运行完成。