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 中支持。
实例类型
支持的实例类型:
-
基于 Nitro 系统构建的所有虚拟化实例。
-
所有裸机实例,以下项除外:
您必须完成配置任务才能授予对 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。您必须先在要使用这些工具的每个实例上执行配置步骤,然后才可以使用这些工具。
有关在 Windows 上配置您选择的故障排除工具的说明,请参阅《适用于 Windows 实例的 Amazon EC2 用户指南》中的配置您选择的故障排除工具。
在通过串行控制台使用 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 键。