View a markdown version of this page

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"
    $ for pkg in bpftool kernel-debuginfo kernel-debuginfo-common kernel-headers \ kernel-modules-extra-common perf python3-perf; do case "$pkg" in kernel-*) src="kernel${SOURCE_VERSION}${pkg#kernel}" tgt="kernel${TARGET_VERSION}${pkg#kernel}" ;; *) src="${pkg}${SOURCE_VERSION}" tgt="${pkg}${TARGET_VERSION}" ;; esac rpm -q "$src" && sudo dnf -y swap "$src" "$tgt" done # kernel-tools and kernel-tools-devel must be removed and reinstalled # together due to version dependency requirements $ if rpm -q "kernel${SOURCE_VERSION}-tools"; then sudo dnf -y remove kernel${SOURCE_VERSION}-tools kernel${SOURCE_VERSION}-tools-devel sudo dnf -y install kernel${TARGET_VERSION}-tools kernel${TARGET_VERSION}-tools-devel fi
  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. 追加のカーネルパッケージをターゲットカーネルに相当するものに置き換えます。

    $ for pkg in bpftool kernel-debuginfo kernel-debuginfo-common kernel-headers \ kernel-modules-extra-common python3-perf; do case "$pkg" in kernel-*) src="kernel${SOURCE_VERSION}${pkg#kernel}" tgt="kernel${TARGET_VERSION}${pkg#kernel}" ;; *) src="${pkg}${SOURCE_VERSION}" tgt="${pkg}${TARGET_VERSION}" ;; esac rpm -q "$src" && sudo dnf -y swap "$src" "$tgt" done # perf requires --allowerasing due to libtraceevent conflicts $ rpm -q "perf${SOURCE_VERSION}" && sudo dnf -y swap "perf${SOURCE_VERSION}" "perf${TARGET_VERSION}" --allowerasing # kernel-tools and kernel-tools-devel must be removed and reinstalled # together due to version dependency requirements $ if rpm -q "kernel${SOURCE_VERSION}-tools"; then sudo dnf -y remove kernel${SOURCE_VERSION}-tools kernel${SOURCE_VERSION}-tools-devel sudo dnf -y install kernel${TARGET_VERSION}-tools kernel${TARGET_VERSION}-tools-devel fi
  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 の予定終了までサポートされます。