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。 |
| |
Plugin_Main_ExtendVolume | 自动检测Windows系统盘的空闲空间,并在空间不足的情况下(<5 GB),利用 | 无。 | |
Plugin_Main_CloudinitUserData | 该插件会从阿里云的元数据中获取您配置的自定义数据,并使用系统的system账户执行自定义数据脚本。 |
| |
Plugin_Main_ConfigHostname | 实例每次启动时都会执行。 | 设置实例的hostname。在实例创建阶段,阿里云会为每个实例分配一个主机名。如果您在创建实例时指定了主机名,系统将根据您设定的主机名进行配置。否则,阿里云将自动分配一个随机的主机名。 |
|
Plugin_Main_ConfigWsus | 该插件会从阿里云的元数据中获取WSUS地址,并配置到实例中。如果实例的WSUS地址已经配置成阿里云的WSUS地址,则不会重复配置。 | 该插件依赖内网访问能力。 | |
Plugin_Main_ConfigKms | 该插件会从阿里云的元数据中获取KMS地址,配置到实例后会进行KMS激活。如果实例KMS已经激活且KMS相同,则不会重复配置。 | 该插件依赖内网访问能力。 | |
Plugin_Main_ConfigNtp | 配置NTP时钟源,用于时间同步。该插件会从阿里云的元数据中获取NTP服务器地址,并配置到实例中。如果实例已经配置了相同的NTP地址,则不会重复配置。 |
|
禁用Vminit的插件
Vminit的所有插件默认开启,如果您是通过本地制作的自定义镜像去创建实例,且希望在实例启动过程中不去自动执行某些操作,可以在制作镜像过程中禁用对应的插件。
在
C:\ProgramData\aliyun\vminit
目录下新建customized_config
文件,该文件内容必须是JSON格式。说明ProgramData
通常是隐藏目录,请确保启用了显示隐藏的文件、文件夹和驱动器选项,以便您能看到并正确操作隐藏项目。在该文件中进行配置,禁用插件。例如:
如果您不需要阿里云自动配置实例主机名,希望自定义主机名,您可以禁用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
文件中删除对应插件的配置内容。
常见问题
创建ECS实例时为什么会有一次重启动作?
原因:在创建ECS实例过程中,即使您没有指定hostname,系统也会默认分配一个hostname,而hostname需要系统重启生效,因此在创建阶段,会有一个重启过程。
解决方案:如果您不希望在创建阶段有这个重启动作,可以通过禁用Plugin_Main_ConfigHostname插件来解决。
自定义镜像中包含了开机执行修改hostname脚本的内容,创建实例时为什么会无限重启?
原因:阿里云创建实例时会默认为实例分配一个hostname,与插件自动修改hostname逻辑冲突。
解决方案:可以通过禁用Plugin_Main_ConfigHostname插件来解决。
为什么通过公共镜像创建ECS实例时会重启两次?
公共镜像相比自定义镜像,会多一个系统准备(Sysprep)阶段,这个阶段会使系统重启。
- 本页导读