实例启动模式

对于迁移上云或自定义镜像导入等场景,为避免实例规格与镜像文件不兼容导致启动失败,需检查并配置镜像启动模式,从而确保云服务器正常启动并稳定运行。

启动模式类型

ECS实例支持BIOSUEFI两种启动模式。

  • BIOS :传统的固件接口,用于初始化硬件并加载操作系统,主要用于兼容旧操作系统(如 CentOS 6、Windows XP 及更早版本)。

  • UEFI : BIOS 的现代化替代方案,支持安全启动(Secure Boot)。

启动模式生效规则

ECS实例的最终启动模式,由实例规格镜像两者共同支持的启动模式决定。实例规格决定了硬件层面的物理限制,而镜像决定了软件层面的引导方式。

  • 实例规格的启动模式:由阿里云定义,不可更改。分为UEFIBIOS及同时支持两种模式(UEFI & BIOS)。

  • 镜像的启动模式:公共镜像的启动模式由系统定义;自定义镜像的启动模式可在创建后、导入时进行修改,分为UEFIBIOSUEFI-Preferred(表示镜像同时支持两种模式,但优先尝试以UEFI模式启动)。

实例规格和镜像启动模式存在匹配关系,若实例规格与镜像启动模式不匹配(例如UEFI规格使用了BIOS镜像),实例可能无法正常启动。

实例规格的启动模式

镜像的启动模式

实例最终启动模式

UEFI

UEFIUEFI-Preferred

UEFI

BIOS

BIOSUEFI-Preferred

BIOS

UEFI & BIOS

UEFIBIOS

跟随镜像启动模式。

镜像启动模式为UEFI,则为UEFI
镜像启动模式为BIOS,则为BIOS

UEFI-Preferred

UEFI

配置启动模式

重要

阿里云在导入自定义镜像时只能识别镜像的元数据,无法深入检测和修改镜像内部的引导配置。配置自定义镜像启动模式前,请确保镜像文件内部已正确配置对应引导加载程序(如UEFI下的EFI System PartitionBIOS下的MBR),错误的配置将导致实例无法识别系统盘,造成启动失败。

导入自定义镜像时指定启动模式

控制台

  1. 前往ECS控制台-镜像,在顶部菜单栏处,选择目标ECS实例所在地域。

  2. 镜像页面右上角,选择导入镜像

    image.png

  3. 导入镜像窗口中,完成必要参数填写后,选择启动模式

    镜像导入时不支持指定为UEFI-Preferred,如需设为UEFI-Preferred,请在镜像导入成功后修改。

    image

  4. 单击确定导入

API

使用ImportImage接口导入自定义镜像时,通过BootMode参数指定自定义镜像的启动模式。

修改已有自定义镜像的启动模式

重要

为了保证已创建实例的稳定性和一致性,自定义镜像用于创建实例后,镜像的启动模式将无法修改。

控制台

  1. 前往ECS控制台-镜像,在顶部菜单栏处,选择目标ECS实例所在地域。

  2. 单击目标镜像ID,进入镜像详情页面。

  3. 基本信息区域,单击启动模式右侧的image图标。

  4. 设置启动模式窗口,选择启动模式之后,单击确定

API

调用ModifyImageAttribute接口,通过BootMode参数来修改镜像的启动模式。

常见问题

为什么在控制台创建ECS实例时,我看不到或无法选择某些版本的镜像?

在控制台创建ECS实例过程中,选择的实例规格启动模式会约束可选择的镜像版本。例如选择仅支持UEFI启动模式的安全增强型实例规格,控制台将过滤掉仅支持BIOS模式的镜像。

如何查看实例规格支持的启动模式?

控制台

  1. 前往ECS控制台-自定义购买

  2. 实例页面中选择全部规格页签,单击查看更多规格参数

    image

  3. 勾选支持的启动模式,单击确定

    image

  4. 输入目标实例规格,即可查询支持的启动模式。

    image

API

通过DescribeInstanceTypes接口进行查询,返回结果中的SupportedBootModes即为实例规格的启动模式。

  1. 访问 DescribeInstanceTypes API Explorer

  2. InstanceTypeFamilyInstanceTypes参数中,填入需要查询的实例规格或规格族。

  3. 单击发起调用

    在返回结果的SupportedBootModes字段中,即可查看该规格支持的启动模式。

如何查看镜像的启动模式?

控制台

  1. 前往ECS控制台-镜像,在顶部菜单栏处,选择目标ECS实例所在地域。

  2. 单击目标镜像ID,进入镜像详情页面。

  3. 基本信息区域,查看镜像的启动模式

    image

API

调用DescribeImages接口,通过返回值中的BootMode参数查看镜像的启动模式。

如何检查我的自定义镜像内部是BIOS还是UEFI引导?

需要在制作镜像的源服务器由该镜像创建的临时实例上进行检查:

  • Linux系统:检查是否存在/sys/firmware/efi目录。如果存在,表示为UEFI引导。

  • Windows系统:检查系统盘的分区表类型。以管理身份打开PowerShell,执行Get-Disk命令。在返回结果中,查看PartitionStyle列显示的磁盘分区表类型,GPT分区表对应UEFI引导,而MBR分区表对应BIOS引导。

相关文档

导入自定义镜像