Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
先决条件
要连接到 EC2 Serial Console 并使用选定的工具进行故障排除,必须满足以下先决条件:
Amazon Web Services 区域
在除加拿大西部(卡尔加里)以外的所有 Amazon Web Services 区域 中受到支持。
Wavelength 区域和 Amazon Outposts
不支持。
Local Zones
在所有 Local Zones 中支持。
实例类型
支持的实例类型:
您必须完成配置任务才能授予对 EC2 Serial Console 的访问权限。有关更多信息,请参阅 配置对 EC2 Serial Console 的访问。
支持基于浏览器的客户端
如需使用基于浏览器的客户端连接至串行控制台,您的浏览器必须支持 WebSocket。如果您的浏览器不支持 WebSocket,请使用您自己的密钥和 SSH 客户端连接至串行控制台。
实例状态
必须是 running
。
如果实例处于 pending
、stopping
、stopped
、shutting-down
或 terminated
状态,则无法连接到串行控制台。
有关实例状态的更多信息,请参阅 实例生命周期。
Amazon EC2 Systems Manager
如果实例使用 Amazon EC2 Systems Manager,则必须在实例上安装 SSM Agent 3.0.854.0 版或更高版本。有关 SSM Agent 的更多信息,请参阅《Amazon Systems Manager 用户指南》中的使用 SSM Agent。
sshd 服务器
您不需要在实例上安装或运行 sshd 服务器。
要通过串行控制台对 Linux 实例进行故障排除,您可以使用 GRUB 或 SysRq。您必须先在要使用这些工具的每个实例上执行配置步骤,然后才可以使用这些工具。
在通过串行控制台使用 GRUB 之前,您必须将实例配置为通过串行控制台使用 GRUB。
要配置 GRUB,请根据用于启动实例的 AMI 选择以下程序之一。
- Amazon Linux 2
-
在 Amazon Linux 2 实例上配置 GRUB
-
连接到您的 Linux 实例
-
在 /etc/default/grub
中添加或更改以下选项:
以下是 /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"
-
运行以下命令以应用更新后的配置。
[ec2-user ~]$
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
- Ubuntu
-
在 Ubuntu 实例上配置 GRUB
-
连接到您的实例。
-
在 /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"
-
运行以下命令以应用更新后的配置。
[ec2-user ~]$
sudo update-grub
- RHEL
-
在 RHEL 实例上配置 GRUB
-
连接到您的实例。
-
在 /etc/default/grub
中添加或更改以下选项:
以下是 /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"
-
运行以下命令以应用更新后的配置。
[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 命令
-
连接到您的实例。
-
运行以下命令。
[ec2-user ~]$
sudo sysctl -w kernel.sysrq=1
为后续引导启用所有 SysRq 命令
-
创建文件 /etc/sysctl.d/99-sysrq.conf
并在您收藏的编辑器中打开。
[ec2-user ~]$
sudo vi /etc/sysctl.d/99-sysrq.conf
-
添加以下行。
kernel.sysrq=1
-
重启实例以应用更改。
[ec2-user ~]$
sudo reboot
-
在 login
提示符下,输入您之前设置的基于密码的用户的用户名,然后按 Enter 键。
-
在 Password
提示符下,输入密码,然后按 Enter 键。
要通过串行控制台对 Windows 实例进行故障排除,您可以使用特殊管理控制台(SAC)。您必须先在要使用 SAC 的每个实例上启用 SAC 和启动菜单,然后才可以使用 SAC。
如果您在实例上启用 SAC,则依赖密码检索的 EC2 服务将无法通过 Amazon EC2 控制台运行。Amazon EC2 启动代理(EC2Config、EC2Launch v1 和 EC2Launch v2)上的 Windows 依靠串行控制台来执行各种任务。当您在实例上启用 SAC 时,这些任务不会成功执行。有关 Amazon EC2 启动代理上的 Windows 的更多信息,请参阅 配置您的 Windows 实例。如果您启用 SAC,则可在之后将其禁用。有关更多信息,请参阅 禁用 SAC 和启动菜单。
使用以下方法之一在实例上启用 SAC 和启动菜单。
- PowerShell
-
在 Windows 实例上启用 SAC 和启动菜单
-
连接到您的实例并从提升的 PowerShell 命令行执行以下步骤。
-
启用 SAC。
bcdedit /ems '{current}' on
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200
-
启用启动菜单。
bcdedit /set '{bootmgr}' displaybootmenu yes
bcdedit /set '{bootmgr}' timeout 15
bcdedit /set '{bootmgr}' bootems yes
-
重新启动实例以应用更新后的配置。
shutdown -r -t 0
- Command prompt
-
在 Windows 实例上启用 SAC 和启动菜单
-
连接到您的实例并从命令提示符执行以下步骤。
-
启用 SAC。
bcdedit /ems {current} on
bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200
-
启用启动菜单。
bcdedit /set {bootmgr} displaybootmenu yes
bcdedit /set {bootmgr} timeout 15
bcdedit /set {bootmgr} bootems yes
-
重新启动实例以应用更新后的配置。
shutdown -r -t 0