

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# EC2 序列主控台的先決條件
<a name="ec2-serial-console-prerequisites"></a>

**Topics**
+ [AWS 區域](#sc-prereqs-regions)
+ [Wavelength 區域和 AWS Outpost](#sc-prereqs-wavelength-zones-outposts)
+ [本機區域](#sc-prereqs-local-zones)
+ [執行個體類型](#sc-prereqs-instance-types)
+ [授與存取權](#sc-prereqs-configure-ec2-serial-console)
+ [支援瀏覽器型用戶端](#sc-prereqs-for-browser-based-connection)
+ [執行個體狀態](#sc-prereqs-instance-state)
+ [Amazon EC2 Systems Manager](#sc-prereqs-ssm)
+ [設定所選的疑難排解工具](#sc-prereqs-configure-troubleshooting-tool)

## AWS 區域
<a name="sc-prereqs-regions"></a>

全部支援 AWS 區域。

## Wavelength 區域和 AWS Outpost
<a name="sc-prereqs-wavelength-zones-outposts"></a>

不支援。

## 本機區域
<a name="sc-prereqs-local-zones"></a>

所有本地區域皆支援。

## 執行個體類型
<a name="sc-prereqs-instance-types"></a>

支援的執行個體類型：
+ **Linux**
  + 在 Nitro 系統上建置的所有虛擬化執行個體。
  + 所有裸機執行個體，除了：
    + 一般用途：`a1.metal`、`mac1.metal`、`mac2.metal`
    + 加速運算：`g5g.metal`
    + 記憶體最佳化：`u-6tb1.metal`、`u-9tb1.metal`、`u-12tb1.metal`、`u-18tb1.metal`、`u-24tb1.metal`
+ **Windows**

  在 Nitro 系統上建置的所有虛擬化執行個體。在裸機執行個體上不受支援。

## 授與存取權
<a name="sc-prereqs-configure-ec2-serial-console"></a>

您必須完成設定工作，才能向 EC2 序列主控台授與存取權。如需詳細資訊，請參閱[設定對 EC2 序列主控台的存取](configure-access-to-serial-console.md)。

## 支援瀏覽器型用戶端
<a name="sc-prereqs-for-browser-based-connection"></a>

若要[使用以瀏覽器為基礎的用戶端](connect-to-serial-console.md#sc-connect-browser-based-client)連線到序列主控台，您的瀏覽器必須支援 WebSocket。如果您的瀏覽器不支援 WebSocket，請[使用您自己的金鑰和 SSH 用戶端](connect-to-serial-console.md#sc-connect-SSH)連線到序列主控台。

## 執行個體狀態
<a name="sc-prereqs-instance-state"></a>

必須為 `running`。

若執行個體處於 `pending`、`stopping`、`stopped`、`shutting-down`，或 `terminated` 狀態，將無法連線到序列主控台。

如需執行個體狀態的詳細資訊，請參閱 [Amazon EC2 執行個體狀態變更](ec2-instance-lifecycle.md)。

## Amazon EC2 Systems Manager
<a name="sc-prereqs-ssm"></a>

如果執行個體使用 Amazon EC2 Systems Manager，則必須在執行個體上安裝 SSM Agent 3.0.854.0 版或更新版本。如需有關 SSM Agent 的資訊，請參閱 *AWS Systems Manager 使用者指南*中的[使用 SSM Agent](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html)。

## 設定所選的疑難排解工具
<a name="sc-prereqs-configure-troubleshooting-tool"></a>

若要使用序列主控台對執行個體進行疑難排解，您可以使用 Linux 執行個體上的GRUB 或 SysRq，以及 Windows 執行個體上的特殊管理主控台 (SAC)。在使用這些工具之前，您必須先對要使用工具所在的每個執行個體執行設定步驟。

使用執行個體作業系統的指示來設定您所選之疑難排解工具。

### (Linux 執行個體) 設定 GRUB
<a name="configure-grub"></a>

若要設定 GRUB，請根據用來啟動執行個體的 AMI 選擇下列其中一個程序。

------
#### [ Amazon Linux 2 ]

**在 Amazon Linux 2 執行個體上設定 GRUB**

1. [使用 SSH 連線至您的 Linux 執行個體](connect-to-linux-instance.md)

1. 在 `/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"
   ```

1. 執行下列命令來套用更新的組態。

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

------
#### [ Ubuntu ]

**在 Ubuntu 執行個體上設定 GRUB**

1. [連線到您的執行個體](connect-to-linux-instance.md)。

1. 在 `/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"
   ```

1. 執行下列命令來套用更新的組態。

   ```
   [ec2-user ~]$ sudo update-grub
   ```

------
#### [ RHEL ]

**在 RHEL 執行個體上設定 GRUB**

1. [連線到您的執行個體](connect-to-linux-instance.md)。

1. 在 `/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"
   ```

1. 執行下列命令來套用更新的組態。

   ```
   [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg --update-bls-cmdline
   ```

   針對 RHEL 9.2 和較早版本，請使用下列命令。

   ```
   [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"
```

------

### (Linux 執行個體) 設定 SysRq
<a name="configure-sysrq"></a>

若要設定 SysRq，您可以針對目前的開機週期啟用 SysRq 命令。若要使設定持續性，您也可以啟用 SysRq 命令以供後續開機使用。

**為目前開機週期啟用所有 SysRq 命令**

1. [連線到您的執行個體](connect-to-linux-instance.md)。

1. 執行下列命令。

   ```
   [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
   ```

1. 新增以下這一行。

   ```
   kernel.sysrq=1
   ```

1. 重新啟動執行個體以套用變更。

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. 出現 `login` 提示時，輸入您[先前設定](configure-access-to-serial-console.md#set-user-password)之密碼型使用者的使用者名稱，然後按 **Enter**。

1. 出現 `Password` 提示時，輸入密碼，然後按 ** Enter**。

### (Windows 執行個體) 啟用 SAC 和開機功能表
<a name="configure-sac-bootmenu"></a>

**注意**  
如果您在執行個體上啟用 SAC，則依賴密碼擷取的 EC2 服務將無法從 Amazon EC2 主控台運作。Amazon EC2 上的 Windows 啟動代理程式 (EC2Config、EC2Launch v1 和 EC2Launch v2) 倚賴序列主控台執行各種任務。在執行個體上啟用 SAC 時，這些任務不會成功執行。如需 Amazon EC2 啟動代理程式的詳細資訊，請參閱 [設定您的 Amazon EC2 Windows 執行個體](ec2-windows-instances.md)。如果您啟用 SAC，可以稍後停用它。如需詳細資訊，請參閱[停用 SAC 和開機選單](troubleshoot-using-serial-console.md#disable-sac-bootmenu)。

使用下列其中一種方法來啟用執行個體上的 SAC 和開機功能表。

------
#### [ PowerShell ]

**在 Windows 執行個體上啟用 SAC 和開機功能表**

1. [連線](connecting_to_windows_instance.md)到您的執行個體，並從提高權限的 PowerShell 命令列執行下列步驟。

1. 啟用 SAC。

   ```
   bcdedit /ems '{current}' on
   bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200
   ```

1. 啟用開機功能表。

   ```
   bcdedit /set '{bootmgr}' displaybootmenu yes
   bcdedit /set '{bootmgr}' timeout 15
   bcdedit /set '{bootmgr}' bootems yes
   ```

1. 透過重新啟動執行個體來套用更新的組態。

   ```
   shutdown -r -t 0
   ```

------
#### [ Command prompt ]

**在 Windows 執行個體上啟用 SAC 和開機功能表**

1. [連接](connecting_to_windows_instance.md)到您的執行個體，並從命令提示字元執行下列步驟。

1. 啟用 SAC。

   ```
   bcdedit /ems {current} on
   bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200
   ```

1. 啟用開機功能表。

   ```
   bcdedit /set {bootmgr} displaybootmenu yes
   bcdedit /set {bootmgr} timeout 15
   bcdedit /set {bootmgr} bootems yes
   ```

1. 透過重新啟動執行個體來套用更新的組態。

   ```
   shutdown -r -t 0
   ```

------