文档

Vminit组件说明

更新时间:

Windows实例是通过Vminit组件来控制实例的启动行为。在实例首次启动或者每次启动时自动执行一系列配置任务,用来完成实例初始化或其他配置。2023年09月份及之后的Windows公共镜像以及基于公共镜像创建的自定义镜像,默认预置Vminit且支持禁用单个插件以满足您的个性化配置诉求。本文介绍Vminit组件包含的插件以及如何禁用插件。

Vminit的插件说明

Vminit本质上是顺序执行了一系列插件来完成系统初始化配置,有些插件仅在创建实例后首次启动时执行一次,有些插件会在每次实例启动时都会执行。Vminit当前包含了10个插件,具体说明如下表所示。

插件名称

执行频率

插件功能

说明

Plugin_Main_StartDepend

仅在实例首次启动时执行。

启动Windows操作系统的IP Helper服务、DHCP客户端和Windows时间服务(W32Time) 。

Windows镜像默认开启这些系统服务,但是您可能在自定义镜像中禁用了这些服务,该插件会开启这些服务,避免因禁用系统服务导致网络和NTP设置异常。

Plugin_Main_OpenRDP

允许通过远程桌面连接服务RDP连接实例。

Windows系统默认开启RDP服务,对于禁用RDP服务的镜像,该插件会开启RDP。

Plugin_Main_NetworkClean

初始化网络配置,系统会使用DHCP方式自动获取实例中所有网卡的IP地址和DNS服务器设置。

如果实例中的IP Helper和DHCP服务未正确开启,可能导致该插件执行失败,从而无法通过内网访问实例元数据。

Plugin_Main_ConfigDisk

将随实例创建的数据盘进行初始化,包括创建分区、分配盘符等,且分区格式默认为GPT。

  • 在实例创建过程中,如果同时添加了新的数据盘,数据盘是未初始化的。为提高您的便利,本插件会自动对数据盘进行初始化并置为联机状态。

  • 在实例创建过程中,如果添加的是有数据的数据盘,Vminit不会对有数据的数据盘进行初始化。

Plugin_Main_ExtendVolume

自动检测Windows系统盘的空闲空间,并在空间不足的情况下(<5 GB),利用diskpart命令来扩展系统盘。

无。

Plugin_Main_CloudinitUserData

该插件会从阿里云的元数据中获取您配置的自定义数据,并使用系统的system账户执行自定义数据脚本。

Plugin_Main_ConfigHostname

实例每次启动时都会执行。

设置实例的hostname。在实例创建阶段,阿里云会为每个实例分配一个主机名。如果您在创建实例时指定了主机名,系统将根据您设定的主机名进行配置。否则,阿里云将自动分配一个随机的主机名。

  • 设置主机名会强制重启系统,重启系统会在该插件执行完毕后立即执行。

  • 如果实例的hostname与您配置的hostname一致,则不会重复设置hostname。

  • 如果您本身不依赖阿里云修改hostname,而是由您自定义设置实例的hostname,可以禁用该插件。例如,您在自定义镜像中增加了开机启动修改hostname的逻辑,这就可能与Vminit这个插件的逻辑冲突,这种情况建议在创建自定义镜像时,禁用该插件。具体操作,请参见禁用Vminit的插件

Plugin_Main_ConfigWsus

该插件会从阿里云的元数据中获取WSUS地址,并配置到实例中。如果实例的WSUS地址已经配置成阿里云的WSUS地址,则不会重复配置。

该插件依赖内网访问能力。

Plugin_Main_ConfigKms

该插件会从阿里云的元数据中获取KMS地址,配置到实例后会进行KMS激活。如果实例KMS已经激活且KMS相同,则不会重复配置。

该插件依赖内网访问能力。

Plugin_Main_ConfigNtp

配置NTP时钟源,用于时间同步。该插件会从阿里云的元数据中获取NTP服务器地址,并配置到实例中。如果实例已经配置了相同的NTP地址,则不会重复配置。

  • 该插件依赖内网访问能力。

  • 该插件依赖W32Time服务。

禁用Vminit的插件

Vminit的所有插件默认开启,如果您是通过本地制作的自定义镜像去创建实例,且希望在实例启动过程中不去自动执行某些操作,可以在制作镜像过程中禁用对应的插件。

  1. C:\ProgramData\aliyun\vminit目录下新建customized_config文件,该文件内容必须是JSON格式

    说明

    ProgramData通常是隐藏目录,请确保启用了显示隐藏的文件、文件夹和驱动器选项,以便您能看到并正确操作隐藏项目。

  2. 在该文件中进行配置,禁用插件。例如:

    • 如果您不需要阿里云自动配置实例主机名,希望自定义主机名,您可以禁用Plugin_Main_ConfigHostname插件。在customized_config文件中写入如下信息并保存文件。

      {
       "disabledPlugins": ["Plugin_Main_ConfigHostname"]
      }
    • 如果您不需要阿里云自动配置实例主机名以及初始化数据盘,您可以同时禁用Plugin_Main_ConfigHostname和Plugin_Main_ConfigDisk插件。在customized_config文件中写入如下信息并保存文件。

      {
       "disabledPlugins": ["Plugin_Main_ConfigHostname", "Plugin_Main_ConfigDisk"]
      }
      说明

      如果您后续需要重新启用某个插件,可以在customized_config文件中删除对应插件的配置内容。

常见问题

  1. 创建ECS实例时为什么会有一次重启动作?

    • 原因:在创建ECS实例过程中,即使您没有指定hostname,系统也会默认分配一个hostname,而hostname需要系统重启生效,因此在创建阶段,会有一个重启过程。

    • 解决方案:如果您不希望在创建阶段有这个重启动作,可以通过禁用Plugin_Main_ConfigHostname插件来解决。

  2. 自定义镜像中包含了开机执行修改hostname脚本的内容,创建实例时为什么会无限重启?

    • 原因:阿里云创建实例时会默认为实例分配一个hostname,与插件自动修改hostname逻辑冲突。

    • 解决方案:可以通过禁用Plugin_Main_ConfigHostname插件来解决。

  3. 为什么通过公共镜像创建ECS实例时会重启两次?

    公共镜像相比自定义镜像,会多一个系统准备(Sysprep)阶段,这个阶段会使系统重启。

  • 本页导读