AL2023에서 Linux 커널 업데이트 - Amazon Linux 2023

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AL2023에서 Linux 커널 업데이트

AL2023의 Linux 커널 버전

AL2023에는 Linux 커널의 장기 지원(LTS) 버전을 기반으로 하는 새 커널 버전이 정기적으로 포함됩니다.

AL2023은 원래 커널 6.1과 함께 2023년 3월에 릴리스되었습니다.

2025년 4월에 AL2023은 Linux 커널 6.12에 대한 지원을 추가했습니다. 이 커널에는 EEVDF 예약, FUSE 패스스루 I/O 지원, 새로운 Futex API, eBPF 개선 등 새로운 기능이 추가되었습니다. 또한 커널 6.12를 사용하면 사용자 공간 프로그램이 사용자 공간 섀도우 스택 및 메모리 밀봉을 사용하여 런타임 시 자체 보안을 유지할 수 있습니다.

2026년 3월에 AL2023은 Linux 커널 6.18에 대한 지원을 추가했습니다. 업데이트된 커널 6.18은 프로세서 지원, 가상화, 보안 및 성능을 추가로 개선했습니다. 주목할 만한 기능에는 아키텍처 전반의 향상된 IOMMU 기능과 CPU 취약성 완화 관리를 위한 공격 벡터 제어가 포함됩니다. 성능 향상은 더 빠른 FSCRYPT 작업, 메모리 관리 개선, 새로운 옵트인 CPU별 배열 기반 캐싱 계층으로 Sheaves 도입을 통한 암호화 최적화를 통해 이루어집니다.

AL2023을 최신 커널 버전으로 업데이트

2026년 6월부터 AL2023은 기본 커널을 매년 업데이트합니다. AMIs al2023-ami-kernel-default 세트는 최신 LTS 커널로 업데이트되므로 새로 시작된 인스턴스에 새 커널 버전이 자동으로 제공됩니다. 이는 최신 보안 수정 및 성능 개선 사항을 최신 상태로 유지하는 가장 간단한 방법입니다.

특정 커널 버전을 선택하려면 원하는 커널이 사전 설치된 AMI를 선택하거나 기존 AL2023 EC2 인스턴스를 업그레이드하여 커널 6.12 또는 6.18로 AL2023을 실행할 수 있습니다.

특정 커널 버전으로 AL2023 AMI 실행

AWS 콘솔을 통해 사전 설치된 특정 커널을 사용하거나 SSM에서 특정 파라미터를 쿼리하여 AL2023 AMI를 실행하도록 선택할 수 있습니다. 쿼리할 SSM 키는 /aws/service/ami-amazon-linux-latest/로 시작하고 다음 중 하나가 뒤따릅니다.

커널 6.12의 경우

  • arm64 아키텍처 al2023-ami-kernel-6.12-arm64

  • arm64 아키텍처 (미니멀 AMI) al2023-ami-minimal-kernel-6.12-arm64

  • x86_64 아키텍처 al2023-ami-kernel-6.12-x86_64

  • x86_64 아키텍처 (미니멀 AMI) al2023-ami-minimal-kernel-6.12-x86_64

커널 6.18의 경우

  • arm64 아키텍처 al2023-ami-kernel-6.18-arm64

  • arm64 아키텍처 (미니멀 AMI) al2023-ami-minimal-kernel-6.18-arm64

  • x86_64 아키텍처 al2023-ami-kernel-6.18-x86_64

  • x86_64 아키텍처 (미니멀 AMI) al2023-ami-minimal-kernel-6.18-x86_64

AL2023 AMI 선택에 대한 자세한 내용은 SSM 파라미터 및를 사용하여 AL2023 시작 AWS CLI 섹션을 참조하세요.

AL2023 인스턴스를 최신 커널로 업데이트

다음 단계에 따라 실행 중인 AL2023 인스턴스를 커널 6.12 또는 6.18로 인플레이스 업그레이드할 수 있습니다.

  1. 현재 커널을 감지하고 대상 버전을 설정합니다.

    # Automatically detect current kernel version BEFORE upgrade $ CURRENT_KERNEL=$(uname -r) $ SOURCE_VERSION="" $ if [[ $CURRENT_KERNEL == *"6.12"* ]]; then SOURCE_VERSION="6.12" else SOURCE_VERSION="" fi # Save the source version to a persistent location for use after reboot $ echo "${SOURCE_VERSION}" | sudo tee /var/lib/source_kernel_version > /dev/null
    # Set your target version (change this to your desired kernel: 6.12 or 6.18) $ TARGET_VERSION="6.12"
    $ echo "Current kernel: ${SOURCE_VERSION:-6.1}" $ echo "Upgrading to kernel ${TARGET_VERSION}"
  2. 대상 커널 패키지를 설치합니다.

    $ sudo dnf install -y kernel${TARGET_VERSION}
  3. 대상 커널 패키지의 최신 버전을 가져옵니다.

    $ version=$(rpm -q --qf '%{version}-%{release}.%{arch}\n' kernel${TARGET_VERSION} | sort -V | tail -1)
  4. 새 커널을 기본 커널로 설정합니다.

    $ sudo grubby --set-default "/boot/vmlinuz-$version"
  5. 시스템을 재부팅합니다.

    $ sudo reboot
  6. 이전 커널을 제거합니다.

    # Read the source kernel version from the saved file $ SOURCE_VERSION=$(sudo cat /var/lib/source_kernel_version) # Uninstall the source kernel $ sudo dnf remove -y kernel${SOURCE_VERSION}
  7. 추가 커널 패키지를 대상 커널에 상응하는 패키지로 바꿉니다.

    # Set your target version (change this to your desired kernel: 6.12 or 6.18) $ TARGET_VERSION="6.12"
    $ declare -A pkgs $ pkgs=( [bpftool${SOURCE_VERSION}]=bpftool${TARGET_VERSION} [kernel${SOURCE_VERSION}-debuginfo]=kernel${TARGET_VERSION}-debuginfo [kernel${SOURCE_VERSION}-debuginfo-common]=kernel${TARGET_VERSION}-debuginfo-common [kernel${SOURCE_VERSION}-headers]=kernel${TARGET_VERSION}-headers [kernel${SOURCE_VERSION}-libbpf]=kernel${TARGET_VERSION}-libbpf [kernel${SOURCE_VERSION}-libbpf-devel]=kernel${TARGET_VERSION}-libbpf-devel [kernel${SOURCE_VERSION}-libbpf-static]=kernel${TARGET_VERSION}-libbpf-static [kernel${SOURCE_VERSION}-modules-extra-common]=kernel${TARGET_VERSION}-modules-extra-common [kernel${SOURCE_VERSION}-tools]=kernel${TARGET_VERSION}-tools [kernel${SOURCE_VERSION}-tools-devel]=kernel${TARGET_VERSION}-tools-devel [perf${SOURCE_VERSION}]=perf${TARGET_VERSION} [python3-perf${SOURCE_VERSION}]=python3-perf${TARGET_VERSION} ) $ for pkg in "${!pkgs[@]}"; do rpm -q $pkg && sudo dnf -y swap $pkg "${pkgs["$pkg"]}" ; done
  8. (선택 사항) 이전 커널 버전의 커널 개발 제거:

    $ rpm -q kernel${SOURCE_VERSION}-devel && sudo dnf remove -y kernel${SOURCE_VERSION}-devel

이전 커널 버전으로 다운그레이드

언제든지 이전 커널 버전으로 다운그레이드해야 하는 경우 다음 단계를 사용합니다.

  1. 현재 커널을 감지하고 대상 버전을 설정합니다.

    # Automatically detect current kernel version BEFORE downgrade $ CURRENT_KERNEL=$(uname -r) $ SOURCE_VERSION="" $ if [[ $CURRENT_KERNEL == *"6.12"* ]]; then SOURCE_VERSION="6.12" elif [[ $CURRENT_KERNEL == *"6.18"* ]]; then SOURCE_VERSION="6.18" fi # Save the source version to a persistent location for use after reboot $ echo "${SOURCE_VERSION}" | sudo tee /var/lib/source_kernel_version > /dev/null
    # Set your target version (change this to your desired kernel) # Use "" for kernel 6.1, "6.12" for kernel 6.12 $ TARGET_VERSION=""
    $ echo "Downgrading from kernel ${SOURCE_VERSION:-6.1} to kernel ${TARGET_VERSION:-6.1}"
  2. 추가 커널 패키지를 대상 커널에 상응하는 패키지로 바꿉니다.

    $ declare -A pkgs $ pkgs=( [bpftool${TARGET_VERSION}]=bpftool${SOURCE_VERSION} [kernel${TARGET_VERSION}-debuginfo]=kernel${SOURCE_VERSION}-debuginfo [kernel${TARGET_VERSION}-debuginfo-common]=kernel${SOURCE_VERSION}-debuginfo-common [kernel${TARGET_VERSION}-headers]=kernel${SOURCE_VERSION}-headers [kernel${TARGET_VERSION}-libbpf]=kernel${SOURCE_VERSION}-libbpf [kernel${TARGET_VERSION}-libbpf-devel]=kernel${SOURCE_VERSION}-libbpf-devel [kernel${TARGET_VERSION}-libbpf-static]=kernel${SOURCE_VERSION}-libbpf-static [kernel${TARGET_VERSION}-modules-extra-common]=kernel${SOURCE_VERSION}-modules-extra-common [kernel${TARGET_VERSION}-tools]=kernel${SOURCE_VERSION}-tools [kernel${TARGET_VERSION}-tools-devel]=kernel${SOURCE_VERSION}-tools-devel [perf${TARGET_VERSION}]=perf${SOURCE_VERSION} [python3-perf${TARGET_VERSION}]=python3-perf${SOURCE_VERSION} ) $ for pkg in "${!pkgs[@]}"; do rpm -q "${pkgs["$pkg"]}" && sudo dnf -y swap "${pkgs["$pkg"]}" $pkg ; done
  3. 대상 커널 패키지를 설치합니다.

    $ sudo dnf install -y kernel${TARGET_VERSION}
  4. 대상 커널 패키지의 최신 버전을 가져옵니다.

    $ version=$(rpm -q --qf '%{version}-%{release}.%{arch}\n' kernel${TARGET_VERSION} | sort -V | tail -1)
  5. 대상 커널을 기본 커널로 설정합니다.

    $ sudo grubby --set-default "/boot/vmlinuz-$version"
  6. 시스템을 재부팅합니다.

    $ sudo reboot
  7. 소스 커널을 제거합니다.

    # Read the source kernel version from the saved file $ SOURCE_VERSION=$(sudo cat /var/lib/source_kernel_version) # Uninstall the source kernel $ sudo dnf remove -y kernel${SOURCE_VERSION}

AL2023 커널 - 자주 묻는 질문

1. 커널 업데이트 후 재부팅해야 하나요?

실행 중인 커널을 변경할 때마다 재부팅해야 합니다.

2. 여러 인스턴스에서 커널을 최신 상태로 유지하려면 어떻게 해야 하나요?

Amazon Linux는 인스턴스 플릿을 관리하는 기능을 제공하지 않습니다. AWS Systems Manager와 같은 도구를 사용하여 대규모 플릿을 패치하는 것이 좋습니다.

3. 현재 실행 중인 커널 버전을 확인하려면 어떻게 해야 하나요?

AL2023 인스턴스에서 다음 명령을 실행합니다.

$ uname -r

4. AL2023은 어떤 커널을 사용하도록 권장하나요?

다른 모든 AL2023 커널은 여전히 지원되지만 최신 AL2023 커널 6.18로 업그레이드하는 것이 좋습니다. 고객은 업그레이드하기 전에 워크로드를 테스트하는 것이 좋습니다.

5. 기존 애플리케이션이 AL2023 커널에서 작동하나요?

AL2023은 커널 6.1과 동일한 방식으로 최신 커널(6.12 또는 6.18)을 지원합니다. 애플리케이션이 작동하며 후드에서 개선이 진행되고 있습니다. 고객은 어떤 경우에도 최신 커널로 전환하기 전에 특정 워크로드를 테스트해야 합니다.

6. 커널 6.12 또는 6.18용 커널 헤더, 개발 패키지 및 추가 모듈을 설치하려면 어떻게 해야 합니까?

다음을 실행하세요.

$ version=$(uname -r | grep -oP '^\d+\.\d+') $ sudo dnf install -y kernel${version}-modules-extra-$(uname -r) kernel${version}-headers-$(uname -r) kernel${version}-devel-$(uname -r)

7. 커널 6.12 및 6.18은 얼마나 오래 지원되나요?

커널 6.12 및 6.18은 Amazon Linux 2023의 계획된 수명 종료인 2029-06-30까지 지원됩니다.