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 などの新機能が追加されました。また、ユーザースペースのプログラムが、ランタイムにユーザースペースのシャドウスタックとメモリシーリングを用いて自身を保護することも可能になりました。

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. (オプション) 以前のカーネルバージョンの kernel-devel をアンインストールします。

    $ 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 カーネル 6.18 にアップグレードすることをお勧めしますが、他のすべての AL2023 カーネルは引き続きサポートされています。お客様は、アップグレードする前にワークロードをテストすることをお勧めします。

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 は、2029-06-30 の Amazon Linux 2023 の予定終了までサポートされます。