View a markdown version of this page

在 AL2023 上更新 Linux 内核 - Amazon Linux 2023

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 AL2023 上更新 Linux 内核

重要

从 2026 年 8 月 17 日起,AL2023 的默认内核将从 6.1 更改为 6.18。从 al2023-ami-kernel-default AMI 启动的新实例将启动内核 6.18。 Already-running 实例不受影响,将保留其启动时使用的内核。要继续使用特定的内核版本,请从特定版本的 AMI 启动,例如。al2023-ami-kernel-6.1

对于 FIPS 工作负载,请注意,默认内核可能并不总是内 FIPS-validated 核。如果你需要 FIPS 模式,请参阅网站上的 AL2023 FIPS 常见问题解 AWS 答。

AL2023 上的 Linux 内核版本

AL2023 定期包括基于 Linux 内核 Long-Term 支持 (LTS) 版本的新内核版本。

AL2023 最初于 2023 年 3 月发布,搭载内核 6.1。

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 操作进行密码学优化、内存管理改进以及引入 Sheaves 作为新的可选的、基于每个 CPU 阵列的缓存层。

将 AL2023 更新到更新的内核版本

AL2023 现在每年都会将默认内核更新到最新版本。al2023-ami-kernel-defaultAMI 将迁移到最新的 LTS 内核。新启动的实例将自动使用新的内核版本,这是保持最新安全修复和性能改进的最简单方法。

如果您希望继续使用较早的内核版本或选择特定版本,则可以通过选择预安装了所需内核的 AMI 或升级现有的 AL2023 EC2 实例来运行内核 6.1、6.12 或 6.18 的 AL2023。有关 AL2023 内核的支持窗口和范围的详细信息,请参阅 AL2023 内核生命周期

运行具有特定内核版本的 AL2023 AMI

您可以选择通过 AWS 控制台或查询 SSM 获取特定参数来运行预装了特定内核的 AL2023 AMI。要查询的 SSM 密钥以 /aws/service/ami-amazon-linux-latest/ 开头,后跟以下之一

适用于内核 6.18

  • al2023-ami-kernel-6.18-arm64,适用于 arm64 架构

  • al2023-ami-minimal-kernel-6.18-arm64,适用于 arm64 架构(AMI 最低版本)

  • al2023-ami-kernel-6.18-x86_64,适用于 x86_64 架构

  • al2023-ami-minimal-kernel-6.18-x86_64,适用于 x86_64 架构(AMI 最低版本)

适用于内核 6.12

  • al2023-ami-kernel-6.12-arm64,适用于 arm64 架构

  • al2023-ami-minimal-kernel-6.12-arm64,适用于 arm64 架构(AMI 最低版本)

  • al2023-ami-kernel-6.12-x86_64,适用于 x86_64 架构

  • al2023-ami-minimal-kernel-6.12-x86_64,适用于 x86_64 架构(AMI 最低版本)

对于内核 6.1

  • al2023-ami-kernel-6.1-arm64,适用于 arm64 架构

  • al2023-ami-minimal-kernel-6.1-arm64,适用于 arm64 架构(AMI 最低版本)

  • al2023-ami-kernel-6.1-x86_64,适用于 x86_64 架构

  • al2023-ami-minimal-kernel-6.1-x86_64,适用于 x86_64 架构(AMI 最低版本)

有关选择 AL2023 AMI 的详细信息,请参阅 使用 SSM 参数启动 AL2023,然后 AWS CLI

将 AL2023 实例更新为更新的内核

您可以通过以下步骤就地将正在运行的 AL2023 实例从内核 6.1 或 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 $ TARGET_VERSION="6.18"
    $ 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 $ TARGET_VERSION="6.18"
    $ 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. (可选)卸载先前内核版本的内核开发:

    $ 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 内核,但我们建议您升级到最新的 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. 支持 AL2023 内核多长时间?

根据定义的 AL2023 内核生命周期,所有支持的内核(6.1、6.12 和 6.18)将继续收到安全和维护更新。

8. 当默认内核更改时会发生什么?

al2023-ami-kernel-default-*SSM 参数解析为运行最新内核版本的 AMI。已经运行的实例不受影响;只有从默认 AMI 启动的新实例才能启动新内核。要继续使用特定的内核版本,请使用特定版本的 SSM 参数,例如,al2023-ami-kernel-6.1-*而不是默认值。有关详细信息,请参阅使用 SSM 参数启动 AL2023,然后 AWS CLI

9. 如果我需要 FIPS 验证的加密,我应该使用哪个内核?

目前,只有内核 6.1 中的密码学完成了 FIPS 140-3 验证(NIST 加密模块验证计划网站上的 #5369 证书)。内核 6.12 和 6.18 中使用的密码学正在完成 FIPS 验证过程。请咨询贵组织的安全团队,以获取有关为 FIPS 操作选择正确内核的建议。有关当前验证状态和指南,请参阅 AWS 网站上 AL2023 FIPS 常见问题解答。