EC2 Serial Console 的先决条件 - Amazon Elastic Compute Cloud

EC2 Serial Console 的先决条件

AWS 区域

在除亚太地区(马来西亚)区域以外的所有 AWS 区域均受支持。

Wavelength 区域和 AWS Outposts

不支持。

Local Zones

在所有 Local Zones 中支持。

实例类型

支持的实例类型:

  • Linux

    • 基于 Nitro 系统构建的所有虚拟化实例。

    • 所有裸机实例,以下项除外:

      • 通用:a1.metalmac1.metalmac2.metal

      • 加速计算:g5g.metal

      • 内存优化型:u-6tb1.metalu-9tb1.metalu-12tb1.metalu-18tb1.metalu-24tb1.metal

  • Windows

    基于 Nitro 系统构建的所有虚拟化实例。不支持裸机实例。

授予访问权限

您必须完成配置任务才能授予对 EC2 Serial Console 的访问权限。有关更多信息,请参阅 配置对 EC2 Serial Console 的访问

支持基于浏览器的客户端

如需使用基于浏览器的客户端连接至串行控制台,您的浏览器必须支持 WebSocket。如果您的浏览器不支持 WebSocket,请使用您自己的密钥和 SSH 客户端连接至串行控制台。

实例状态

必须是 running

如果实例处于 pendingstoppingstoppedshutting-downterminated 状态,则无法连接到串行控制台。

有关实例状态的更多信息,请参阅 Amazon EC2 实例状态更改

Amazon EC2 Systems Manager

如果实例使用 Amazon EC2 Systems Manager,则必须在实例上安装 SSM Agent 3.0.854.0 版或更高版本。有关 SSM Agent 的更多信息,请参阅《AWS Systems Manager 用户指南》中的使用 SSM Agent

配置您选择的故障排除工具

要通过 Serial Console 对 Windows 实例进行故障排除,在 Linux 实例上可以使用 GRUB 或 SysRq,在 Windows 实例上可使用特殊管理控制台(SAC)。您必须先在要使用这些工具的每个实例上执行配置步骤,然后才可以使用这些工具。

请使用适用于实例操作系统的说明,配置您选择的故障排除工具。

要配置 GRUB,请根据用于启动实例的 AMI 选择以下程序之一。

Amazon Linux 2
在 Amazon Linux 2 实例上配置 GRUB
  1. 使用 SSH 连接到 Linux 实例

  2. /etc/default/grub 中添加或更改以下选项:

    • 设置 GRUB_TIMEOUT=1

    • 添加 GRUB_TERMINAL="console serial"

    • 添加 GRUB_SERIAL_COMMAND="serial --speed=115200"

    以下是 /etc/default/grub 的示例。您可能需要根据系统设置更改配置。

    GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.shell=0" GRUB_TIMEOUT=1 GRUB_DISABLE_RECOVERY="true" GRUB_TERMINAL="console serial" GRUB_SERIAL_COMMAND="serial --speed=115200"
  3. 运行以下命令以应用更新后的配置。

    [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
Ubuntu
在 Ubuntu 实例上配置 GRUB
  1. 连接到您的实例

  2. /etc/default/grub.d/50-cloudimg-settings.cfg 中添加或更改以下选项:

    • 设置 GRUB_TIMEOUT=1

    • 添加 GRUB_TIMEOUT_STYLE=menu

    • 添加 GRUB_TERMINAL="console serial"

    • 删除 GRUB_HIDDEN_TIMEOUT

    • 添加 GRUB_SERIAL_COMMAND="serial --speed=115200"

    以下是 /etc/default/grub.d/50-cloudimg-settings.cfg 的示例。您可能需要根据系统设置更改配置。

    # Cloud Image specific Grub settings for Generic Cloud Images # CLOUD_IMG: This file was created/modified by the Cloud Image build process # Set the recordfail timeout GRUB_RECORDFAIL_TIMEOUT=0 # Do not wait on grub prompt GRUB_TIMEOUT=1 GRUB_TIMEOUT_STYLE=menu # Set the default commandline GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0 nvme_core.io_timeout=4294967295" # Set the grub console type GRUB_TERMINAL="console serial" GRUB_SERIAL_COMMAND="serial --speed 115200"
  3. 运行以下命令以应用更新后的配置。

    [ec2-user ~]$ sudo update-grub
RHEL
在 RHEL 实例上配置 GRUB
  1. 连接到您的实例

  2. /etc/default/grub 中添加或更改以下选项:

    • 删除 GRUB_TERMINAL_OUTPUT

    • 添加 GRUB_TERMINAL="console serial"

    • 添加 GRUB_SERIAL_COMMAND="serial --speed=115200"

    以下是 /etc/default/grub 的示例。您可能需要根据系统设置更改配置。

    GRUB_TIMEOUT=1 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto" GRUB_DISABLE_RECOVERY="true" GRUB_ENABLE_BLSCFG=true GRUB_TERMINAL="console serial" GRUB_SERIAL_COMMAND="serial --speed=115200"
  3. 运行以下命令以应用更新后的配置。

    [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
CentOS

对于使用 CentOS AMI 启动的实例,默认情况下为串行控制台配置了 GRUB。

以下是 /etc/default/grub 的示例。根据您的系统设置,您的配置可能会有所不同。

GRUB_TIMEOUT=1 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL="serial console" GRUB_SERIAL_COMMAND="serial --speed=115200" GRUB_CMDLINE_LINUX="console=tty0 crashkernel=auto console=ttyS0,115200" GRUB_DISABLE_RECOVERY="true"

要配置 SysRq,请在当前引导周期中启用 SysRq 命令。要使配置永久化,您还可以为后续引导启用 SysRq 命令。

为当前引导周期启用所有 SysRq 命令
  1. 连接到您的实例

  2. 运行以下命令。

    [ec2-user ~]$ sudo sysctl -w kernel.sysrq=1
    注意

    下次重新启动时将会清除此设置。

为后续引导启用所有 SysRq 命令
  1. 创建文件 /etc/sysctl.d/99-sysrq.conf 并在您收藏的编辑器中打开。

    [ec2-user ~]$ sudo vi /etc/sysctl.d/99-sysrq.conf
  2. 添加以下行。

    kernel.sysrq=1
  3. 重启实例以应用更改。

    [ec2-user ~]$ sudo reboot
  4. login 提示符下,输入您之前设置的、基于密码的用户的用户名,然后按 Enter 键。

  5. Password 提示符下,输入密码,然后按 Enter 键。

注意

如果您在实例上启用 SAC,则依赖密码检索的 EC2 服务将无法通过 Amazon EC2 控制台运行。Amazon EC2 启动代理(EC2Config、EC2Launch v1 和 EC2Launch v2)上的 Windows 依靠串行控制台来执行各种任务。当您在实例上启用 SAC 时,这些任务不会成功执行。有关 Amazon EC2 启动代理上的 Windows 的更多信息,请参阅 配置您的 Amazon EC2 Windows 实例。如果您启用 SAC,则可在之后将其禁用。有关更多信息,请参阅 禁用 SAC 和启动菜单

使用以下方法之一在实例上启用 SAC 和启动菜单。

PowerShell
在 Windows 实例上启用 SAC 和启动菜单
  1. 连接到您的实例并从提升的 PowerShell 命令行执行以下步骤。

  2. 启用 SAC。

    bcdedit /ems '{current}' on bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200
  3. 启用启动菜单。

    bcdedit /set '{bootmgr}' displaybootmenu yes bcdedit /set '{bootmgr}' timeout 15 bcdedit /set '{bootmgr}' bootems yes
  4. 重新启动实例以应用更新后的配置。

    shutdown -r -t 0
Command prompt
在 Windows 实例上启用 SAC 和启动菜单
  1. 连接到您的实例并从命令提示符执行以下步骤。

  2. 启用 SAC。

    bcdedit /ems {current} on bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200
  3. 启用启动菜单。

    bcdedit /set {bootmgr} displaybootmenu yes bcdedit /set {bootmgr} timeout 15 bcdedit /set {bootmgr} bootems yes
  4. 重新启动实例以应用更新后的配置。

    shutdown -r -t 0