

# 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 인스턴스에서는 Special Admin Console(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 Windows 시작 에이전트에 대한 자세한 내용은 [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
   ```

------