메뉴
Amazon Elastic Compute Cloud
User Guide for Linux Instances

사용자 제공 커널

Amazon EC2 인스턴스에 사용자 지정 커널이 필요할 경우 가장 적합한 AMI를 사용하여 시작한 후 해당 인스턴스에서 사용자 지정 커널을 컴파일하고, menu.lst 파일을 열러 새 커널을 지정합니다. 이 프로세스는 AMI에서 사용하는 가상화 유형에 따라 다릅니다. 자세한 내용은 Linux AMI 가상화 유형 단원을 참조하십시오.

HVM AMI(GRUB)

HVM 인스턴스 볼륨은 실제 물리적 디스크인 것처럼 취급됩니다. 부팅 프로세스는 디스크 파티션이 설정되고 부트로더가 있는 베어 메탈(bare metal) 운영 체제의 부팅 프로세스와 비슷하며, 현재 지원되는 모든 Linux 배포를 사용할 수 있습니다. 가장 일반적인 부트로더는 GRUB이며, 다음 섹션에서는 사용자 지정 커널을 사용하도록 GRUB를 구성하는 방법을 설명합니다.

HVM AMI에 대해 GRUB 구성

다음은 HVM AMI에 대한 menu.lst 구성 파일의 예입니다. 이 예에서는 Amazon Linux 2017.09(이 AMI에 대한 원래 커널)와, Vanilla Linux 4.13.4(https://www.kernel.org/에서 제공되는 Vanilla Linux 커널의 최신 버전) 중 하나를 선택할 수 있습니다. Vanilla 항목은 해당 AMI에 대한 원래 항목에서 복제된 것이며, kernelinitrd 경로는 새 위치로 업데이트됩니다. default 0 파라미터는 부트로더가 발견한 첫 번째 항목(이 경우는 Vanilla 항목)을 참조하게 하고, fallback 1 파라미터는 첫 항목 부팅에 문제가 있는 경우 부트로더가 두 번째 항목을 참조하게 합니다.

기본적으로 GRUB는 추가적인 부팅 지연을 발생시키지 않기 위해 인스턴스 콘솔에 출력을 전송하지 않습니다. 자세한 내용은 인스턴스 콘솔 출력 단원을 참조하십시오. 사용자 지정 커널을 설치하는 경우 아래 예와 같이 hiddenmenu 줄을 삭제하고 serialterminal 줄을 /boot/grub/menu.lst에 추가하여 GRUB 출력을 활성화하는 것을 고려해 보십시오.

중요

부팅 프로세스 중 많은 양의 디버그 정보가 출력되지 않도록 하십시오. 직렬 콘솔은 높은 데이터 전송 속도를 지원하지 않습니다.

default=0
fallback=1
timeout=5
serial --unit=0 --speed=9600
terminal --dumb --timeout=5 serial console

title Vanilla Linux 4.13.4
root (hd0)
kernel /boot/vmlinuz-4.13.4 root=LABEL=/ console=tty1 console=ttyS0
initrd /boot/initrd.img-4.13.4

title Amazon Linux 2017.09 (4.9.51-10.52.amzn1.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-4.9.51-10.52.amzn1.x86_64 root=LABEL=/ console=tty1 console=ttyS0
initrd /boot/initramfs-4.9.51-10.52.amzn1.x86_64.img

menu.lst 파일에서 대체 커널을 지정할 필요는 없지만, 새 커널을 테스트할 때 대체 커널을 사용하는 것이 권장됩니다. GRUB은 새 커널에 장애가 발생한 경우 다른 커널로 이를 대체하여 사용할 수 있습니다. 대체 커널이 있을 경우 인스턴스는 새 커널을 발견할 수 없는 경우에도 부팅할 수 있습니다.

새로운 Vanilla Linux 커널 파일이 실패할 경우 아래와 같은 출력이 표시될 수 있습니다.

^M Entry 0 will be booted automatically in 3 seconds. ^M Entry 0 will be booted automatically in 2 seconds. ^M Entry 0 will be booted automatically in 1 seconds. Error 13: Invalid or unsupported executable format [ 0.000000] Initializing cgroup subsys cpuset

반가상화 AMI(PV-GRUB)

PV(반가상화) 가상화를 사용하는 Amazon 머신 이미지은 PV-GRUB라는 시스템을 부팅 과정 동안 사용합니다. PV-GRUB은 GNU GRUB 0.97의 패치 버전을 실행하는 반가상화 부트로더입니다. 인스턴스를 실행할 때 PV-GRUB은 부팅 과정을 실행하고 이미지의 menu.lst 파일에 지정된 커널을 체인로드합니다.

PV-GRUB는 표준 grub.conf 또는 menu.lst 명령을 이해할 수 있으며 따라서 모든 최신 지원 Linux 배포판과 함께 사용할 수 있습니다. Ubuntu 10.04 LTS, Oracle Enterprise Linux, CentOS 5.x 등 이전 배포판은 특별한 "ec2" 또는 "xen" 커널 패키지를 필요로 하지만, 새 배포판은 필요한 드라이버를 기본 커널 패키지에 포함하고 있습니다.

대부분의 PV(반가상화) AMI는 PV-GRUB AKI를 기본적으로 사용하므로(Amazon EC2 Launch Wizard Start 메뉴에서 제공되는 모든 PV Linux AMI 포함), 사용할 다른 커널이 사용자의 배포판과 호환되는 경우라면 인스턴스에서 해당 커널을 사용하기 위해 별도의 조치를 취할 필요는 없습니다. 인스턴스에서 사용자 지정 커널을 실행하는 최상의 방법은 원하는 것과 가장 근접한 AMI로 실행하고, 인스턴스에서 사용자 지정 커널을 컴파일하고, menu.lst에서 표시된 Configuring GRUB 파일을 수정하는 것입니다.

다음 describe-images 명령을 Amazon EC2 명령줄 도구(검사하려는 커널 이미지 ID로 해당 부분 대체)로 실행하여 AMI에 대한 커널 이미지가 PV-GRUB AKI인지 검사할 수 있습니다.

Copy
aws ec2 describe-images --filters Name=image-id,Values=aki-880531cd

Name 필드가 pv-grub으로 시작하는지 확인합니다.

PV-GRUB의 제한

PV-GRUB에는 다음과 같은 제한 사항이 있습니다.

  • 64비트 버전의 PV-GRUB을 사용해서 32비트 커널을 실행할 수는 없으며, 32비트 버전의 PV-GRUB을 사용해서 64비트 커널을 실행할 수도 없습니다.

  • PV-GRUB AKI를 사용할 때 ARI(Amazon 램디스크 이미지)를 지정할 수 없습니다.

  • AWS는 PV-GRUB이 EXT2, EXT3, EXT4, JFS, XFS, ReiserFS 등의 파일 시스템 포맷과 작동함을 테스트하고 검증했습니다. 그 밖의 파일 시스템 포맷은 PV-GRUB에서 작동하지 않을 수 있습니다.

  • PV-GRUB은 gzip, bzip2, lzo, xz 압축 포맷을 사용해서 압축된 커널을 부팅시킬 수 있습니다.

  • Cluster AMI는 완전한 HVM(하드웨어 가상 머신)을 사용하기 때문에 PV-GRUB을 지원하지 않으며 이를 필요로 하지도 않습니다. PV(반가상화) 인스턴스는 PV-GRUB을 사용해서 부팅하지만, HVM 인스턴스 볼륨은 실제 디스크처럼 취급되며 그 부팅 과정은 파티션 처리된 디스크와 부트로더가 있는 베어 메탈(bare metal) 운영 체제의 부팅 과정과 유사합니다.

  • PV-GRUB 버전 1.03 및 그 이하 버전은 GPT 파티셔닝을 지원하지 않으며 MBR 파티셔닝만 지원합니다.

  • Amazon EBS 볼륨으로 LVM(Logical Volume Manager)를 사용할 계획인 경우, LVM 외부의 개별적인 부트 파티션을 필요로 합니다. 상기 요건이 갖추어지면 LVM으로 논리적 볼륨을 생성할 수 있게 됩니다.

반가상화(PV) AMI에 대해 GRUB 구성

PV-GRUB을 부팅하려면 이미지 내에 GRUB menu.lst 파일이 존재해야 합니다. 이 파일의 가장 일반적인 위치는 /boot/grub/menu.lst입니다.

다음은 PV-GRUB AKI로 AMI를 부팅하는 것에 대한 menu.lst 구성 파일의 예입니다. 이 예에서는 Amazon Linux 2017.09(이 AMI에 대한 원래 커널)와, Vanilla Linux 4.13.4(https://www.kernel.org/에서 제공되는 Vanilla Linux 커널의 최신 버전) 중 하나를 선택할 수 있습니다. Vanilla 항목은 해당 AMI에 대한 원래 항목에서 복제된 것이며, kernelinitrd 경로는 새 위치로 업데이트됩니다. default 0 파라미터는 부트로더가 발견한 첫 번째 항목(이 경우는 Vanilla 항목)을 참조하게 하고, fallback 1 파라미터는 첫 항목 부팅에 문제가 있는 경우 부트로더가 두 번째 항목을 참조하게 합니다.

default 0 fallback 1 timeout 0 hiddenmenu title Vanilla Linux 4.13.4 root (hd0) kernel /boot/vmlinuz-4.13.4 root=LABEL=/ console=hvc0 initrd /boot/initrd.img-4.13.4 title Amazon Linux 2017.09 (4.9.51-10.52.amzn1.x86_64) root (hd0) kernel /boot/vmlinuz-4.9.51-10.52.amzn1.x86_64 root=LABEL=/ console=hvc0 initrd /boot/initramfs-4.9.51-10.52.amzn1.x86_64.img

menu.lst 파일에서 대체 커널을 지정할 필요는 없지만, 새 커널을 테스트할 때 대체 커널을 사용하는 것이 권장됩니다. PV-GRUB은 새 커널에 장애가 발생한 경우 다른 커널로 이를 대체하여 사용할 수 있습니다. 대체 커널이 있을 경우 인스턴스는 새 커널을 발견할 수 없는 경우에도 부팅할 수 있습니다.

PV-GRUB은 menu.lst를 찾기 위해 다음 위치를 검사합니다(발견한 경우 그 이하 경로는 검색 안 함).

  • (hd0)/boot/grub

  • (hd0,0)/boot/grub

  • (hd0,0)/grub

  • (hd0,1)/boot/grub

  • (hd0,1)/grub

  • (hd0,2)/boot/grub

  • (hd0,2)/grub

  • (hd0,3)/boot/grub

  • (hd0,3)/grub

PV-GRUB 1.03 이하 버전은 이 목록에서 첫 2개의 위치만 검색합니다.

Amazon PV-GRUB 커널 이미지 ID

PV-GRUB AKI는 모든 Amazon EC2 리전에서 제공됩니다. 32비트 및 64비트의 두 아키텍처 유형에 대한 AKI가 존재합니다. 가장 최신의 AMI는 기본적으로 PV-GRUB AKI를 사용합니다.

모든 PV-GRUB 버전이 모든 인스턴스 유형과 호환되는 것은 아니기 때문에, 언제나 PV-GRUB AKI의 최신 버전을 사용하는 것이 권장됩니다. 다음 describe-images 명령을 사용하여 현재 리전에 대한 PV-GRUB AKI 목록을 가져옵니다.

Copy
aws ec2 describe-images --owners amazon --filters Name=name,Values=pv-grub-*.gz

PV-GRUB은 ap-southeast-2 리전에서만 제공되는 AKI입니다. 사용자가 해당 리전에 복사할 AMI가 해당 리전에서 사용 가능한 PV-GRUB의 버전을 사용하는지를 확인해야 합니다.

다음은 각 리전에 대한 현재 AKI ID입니다. hd0 AKI를 사용해서 새 AMI를 등록할 수 있습니다.

참고

hd00 AKI가 이전에 제공되었던 리전의 경우 이전 버전과의 호환성을 위해 hd00 AKI가 계속해서 제공되고 있습니다.

ap-northeast-1, 아시아 태평양(도쿄)

이미지 ID 이미지 이름
aki-f975a998 pv-grub-hd0_1.05-i386.gz
aki-7077ab11 pv-grub-hd0_1.05-x86_64.gz

ap-southeast-1, 아시아 태평양(싱가포르) 리전

이미지 ID 이미지 이름
aki-17a40074 pv-grub-hd0_1.05-i386.gz
aki-73a50110 pv-grub-hd0_1.05-x86_64.gz

ap-southeast-2, 아시아 태평양(시드니)

이미지 ID 이미지 이름
aki-ba5665d9 pv-grub-hd0_1.05-i386.gz
aki-66506305 pv-grub-hd0_1.05-x86_64.gz

eu-central-1, EU(프랑크푸르트)

이미지 ID 이미지 이름
aki-1419e57b pv-grub-hd0_1.05-i386.gz
aki-931fe3fc pv-grub-hd0_1.05-x86_64.gz

eu-west-1, EU(아일랜드)

이미지 ID 이미지 이름
aki-1c9fd86f pv-grub-hd0_1.05-i386.gz
aki-dc9ed9af pv-grub-hd0_1.05-x86_64.gz

sa-east-1, 남아메리카(상파울루)

이미지 ID 이미지 이름
aki-7cd34110 pv-grub-hd0_1.05-i386.gz
aki-912fbcfd pv-grub-hd0_1.05-x86_64.gz

us-east-1, 미국 동부(버지니아 북부)

이미지 ID 이미지 이름
aki-04206613 pv-grub-hd0_1.05-i386.gz
aki-5c21674b pv-grub-hd0_1.05-x86_64.gz

us-gov-west-1, AWS GovCloud (US)

이미지 ID 이미지 이름
aki-5ee9573f pv-grub-hd0_1.05-i386.gz
aki-9ee55bff pv-grub-hd0_1.05-x86_64.gz

us-west-1, 미국 서부(캘리포니아 북부 지역)

이미지 ID 이미지 이름
aki-43cf8123 pv-grub-hd0_1.05-i386.gz
aki-59cc8239 pv-grub-hd0_1.05-x86_64.gz

us-west-2, 미국 서부(오레곤)

이미지 ID 이미지 이름
aki-7a69931a pv-grub-hd0_1.05-i386.gz
aki-70cb0e10 pv-grub-hd0_1.05-x86_64.gz

PV-GRUB 업데이트

모든 PV-GRUB 버전이 모든 인스턴스 유형과 호환되는 것은 아니기 때문에, 언제나 PV-GRUB AKI의 최신 버전을 사용하는 것이 권장됩니다. 또한 PV-GRUB의 이전 버전이 모든 리전에서 사용 가능한 것은 아니므로, 이전 버전을 사용하는 AMI를 해당 버전을 지원하지 않는 리전으로 복사한 경우는 커널 이미지를 업데이트할 때까지 AMI에서 실행된 인스턴스를 부팅시킬 수 없습니다. 다음 절차를 사용해 PV-GRUB의 인스턴스 버전을 확인하고 필요한 경우 업데이트를 하십시오.

PV-GRUB 버전 확인 방법

  1. 인스턴스에 대한 커널 ID를 찾습니다.

    Copy
    aws ec2 describe-instance-attribute --instance-id instance_id --attribute kernel --region region { "InstanceId": "instance_id", "KernelId": "aki-70cb0e10" }

    이 인스턴스에 대한 커널 ID는 aki-70cb0e10입니다.

  2. 해당 커널 ID의 버전 정보를 확인합니다.

    Copy
    aws ec2 describe-images --image-ids aki-70cb0e10 --region region { "Images": [ { "VirtualizationType": "paravirtual", "Name": "pv-grub-hd0_1.05-x86_64.gz", ... "Description": "PV-GRUB release 1.05, 64-bit" } ] }

    여기서 커널 이미지는 PV-GRUB 1.05입니다. 사용자의 PV-GRUB 버전이 최신 버전이 아닌 경우(Amazon PV-GRUB 커널 이미지 ID에서 확인 가능), 다음 절차를 사용해서 이를 업데이트해야 합니다.

PV-GRUB 버전 업데이트 방법

인스턴스가 PV-GRUB의 이전 버전을 사용하는 경우, 이를 최신 버전으로 업데이트해야 합니다.

  1. Amazon PV-GRUB 커널 이미지 ID에서 리전 및 프로세스 아키텍처에 대한 최신 PV-GRUB AKI를 확인합니다.

  2. 인스턴스를 중단합니다. 사용하고 있는 커널 이미지를 수정하려면 인스턴스를 중단할 필요가 있습니다.

    Copy
    aws ec2 stop-instances --instance-ids instance_id --region region
  3. 인스턴스에 대해 사용되는 커널 이미지를 수정합니다.

    Copy
    aws ec2 modify-instance-attribute --instance-id instance_id --kernel kernel_id --region region
  4. 인스턴스를 재시작합니다.

    Copy
    aws ec2 start-instances --instance-ids instance_id --region region