比较 AL2 和 AL2023 - Amazon Linux 2023

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

比较 AL2 和 AL2023

以下主题描述了 AL2 和 AL2023 之间的主要区别。

添加、升级和删除了软件包

AL2023 包含数千个可供使用的软件包。有关与之前的 Amazon Linux 版本相比,AL2023 中添加、升级或删除的所有软件包的完整列表,请参阅 AL2023 中的软件包变化

要申请在 AL2023 中添加或更改软件包,请在亚马逊 linux- 2023 存储库中提交问题。 GitHub

针对每个版本的支持

对于 AL2023,我们提供为期五年的支持。

有关更多信息,请参阅 发布节奏

命名和版本控制更改

AL2023 支持的平台识别机制与 AL2 所支持的机制相同。AL2023 还为平台识别引入了新的文件。

有关更多信息,请参阅 命名和版本控制

优化

AL2023 优化了启动时间,以缩短从实例启动到运行客户工作负载的时间。这些优化涵盖 Amazon EC2 实例内核配置、cloud-init 配置和内置于操作系统包(例如 kmodsystemd)中的功能。

有关优化的更多信息,请参阅性能和操作优化

Python 2.7 已被 Python 3 所取代

AL2 针对 Python 2.7 提供支持和安全补丁,截至 2025 年 6 月,这是我们对 AL2 核心软件包的长期支持 (LTS) 承诺的一部分。这种支持不仅限于上游 Python 社区在 2020 年 1 月发布的 Python 2.7 end-of-life 声明。

AL2 使用yum包管理器,它对 Python 2.7 有硬依赖性。在 AL2023 中,dnf 软件包管理器已迁移到 Python 3,不再需要 Python 2.7。AL2023 已完全迁移到 Python 3。

注意

AL2023 删除了 Python 2.7,因此任何需要 Python 的操作系统组件都是为了与 Python 3 配合使用而编写的。要继续使用 Amazon Linux 提供并支持的 Python 版本,请将 Python 2 代码转换为 Python 3。

有关 Amazon Linux 上的 Python 的更多信息,请参阅 AL2023 中的 Python

安全更新

SELinux

针对 AL2023 的 Security Enhanced Linux (SELinux) 默认 enabled 且设置为 permissive 模式。在 permissive 模式下,记录但不强制执行权限拒绝。

SELinux 是 Amazon Linux 内核的一项安全功能,在 AL2 中曾 disabled。SELinux 是内核功能和实用程序的集合,为内核的主要子系统提供强制访问控制 (MAC) 架构。

有关更多信息,请参阅 为 AL2023 设置 SELinux 模式

有关 SELinux 存储库、工具和策略的更多信息,请参阅 SELinux NotebookSELinux 策略类型SELinux 项目

OpenSSL 3

AL2023 具有 Open Secure Sockets Layer version 3 (OpenSSL 3) 密码系统工具包。AL2023 支持TLS 1.3和TLS 1.2网络协议。

默认情况下,AL2 自带 OpenSSL 1.0.2。您可以依据 OpenSSL 1.1.1 构建应用程序。

有关 OpenSSL 的更多信息,请参阅 OpenSSL 迁移指南

有关安全性的更多信息,请参阅安全更新和功能

IMDSv2

默认情况下,任何使用 AL2023 AMI 启动的实例都IMDSv2只需要-并且您的默认跳数限制将设置为 2 以支持容器化工作负载。这可通过将 imds-support 参数设置为 v2.0 来完成。有关更多信息,请参阅 Amazon EC2 用户指南中的配置 AMI

注意

会话令牌的有效时间可以介于 1 秒到 6 小时之间。用于发送针对 IMDSv2 查询的 API 请求的地址如下:

  • IPv4:169.254.169.254

  • IPv6:fd00:ec2::254

您可以手动覆盖这些设置并IMDSv1使用实例元数据选项启动属性启用。您还可以使用 IAM 控制来强制执行不同的IMDS设置。有关设置和使用实例元数据服务的更多信息,请参阅 Amazon EC2 用户指南中的使用IMDSv2为新实例配置实例元数据选项和修改现有实例的实例元数据选项。

删除 log4j 热补丁 (log4j-cve-2021-44228-hotpatch)

注意

AL2023 不随 log4j-cve-2021-44228-hotpatch 软件包一起发出。

为了回应 CVE-2021-44228,亚马逊 Linux 发布了适用于 AL1 和 AL2 的 Apache Log4j Hotpatch 的 RPM 打包版本。在宣布向 Amazon Linux 添加热补丁时,我们指出:“安装热补丁并不能取代更新到可缓解 CVE-2021-44228 或 CVE-2021-45046 的 log4j 版本。”

热补丁是一种缓解措施,可以留出时间来修补 log4j。AL2023 的第一个正式发布 (GA) 版本于 CVE-2021-44228 的 15 个月后发布,因此 AL2023 不附带该热补丁(无论是否启用)。

在 Amazon Linux 上运行自己的log4j版本的用户应确保已更新到未受 CVE-2021-44228CVE-2021-45046 影响的版本。

AL2023 提供了关于更新 AL2023 的指导,使您可以及时更新最新的安全补丁。安全公告发布在 Amazon Linux 安全中心上。

确定性升级用于提高稳定性

借助通过版本控制存储库进行确定性升级功能,默认情况下,每个 AL2023 AMI 都锁定到特定的存储库版本。您可以使用确定性升级来提高软件包版本和更新之间的一致性。每个版本,无论是主要版本还是次要版本,都包含一个特定的存储库版本。

AL2023 的一项新增功能是,默认情况下启用确定性升级。这是对 AL2 和其他早期版本中使用的手动增量锁定方法的改进。

有关更多信息,请参阅 在 AL2023 上通过版本控制存储库使用确定性升级

来自多个上游

AL2023 基于 RPM,包括来自多个版本的 Fedora 和其他发行版(例如 CentOS 9 Stream)的组件。Amazon Linux 内核直接源自来自 kernel.org 的长期支持 (LTS) 版本,该版本是独立于其他发行版选择的。

有关更多信息,请参阅 与 Fedora 的关系

AMI 根文件系统和默认 Amazon EBS 卷类型

AL2023 AMI 和 AL2 都使用根文件系统上的 XFS 文件系统。对于 AL2023,适用于根设备文件系统的 mkfs 选项已针对 Amazon EC2 进行了进一步优化。AL2023 还支持许多其他文件系统,您可以在其他卷上使用这些文件系统来满足您的特定要求。

AL2023 AMI 默认使用 Amazon EBS gp3 卷,而 AL2 AMI 默认使用 Amazon EBS gp2 卷。您可以在启动实例时更改卷类型。

有关 Amazon EBS 卷类型的更多信息,请参阅 Amazon EBS 通用型卷

有关启动 Amazon EC2 实例的更多信息,请参阅 A mazon EC2 用户指南中的启动实例。

网络系统服务

systemd-networkd 系统服务管理 AL2023 中的网络接口。这与 AL2 有所不同,后者使用 ISC dhclient 或 dhclient

有关更多信息,请参阅 网络服务

统一控制组层次结构 (cgroup v2)

控制组 (cgroup) 是 Linux 内核的一项功能,用于分层组织进程并在进程之间分配系统资源。控制组被广泛用于通过 systemd 实现容器运行时系统。

AL2 支持cgroupv1,AL2023 支持cgroupv2。在运行容器化工作负载时(例如使用基于 AL2023 的 Amazon ECS AMI 托管容器化工作负载时),这一点值得注意。

尽管 AL2023 仍然包含可以让系统使用运行的代码cgroupv1,但这不是推荐或支持的配置,并且将在未来的 Amazon Linux 主要版本中完全删除。

有大量关于低级 Linux 内核接口的文档以及 systemd cgroup 委派文档

容器之外的一个常见用例是创建对可以使用的系统资源有限制的systemd单元。有关更多信息,请参阅 system.r esource-control。

任务计划

默认情况下,cronie 软件包安装在 AL2 AMI 上,为计划定期任务的传统 crontab 方式提供支持。在 AL2023 中,cronie默认情况下不包括在内。因此,默认crontab情况下不再提供对的支持。

您可以选择安装 cronie 软件包以使用经典的 cron 作业。由于 systemd 提供附加功能,建议您迁移到 systemd 计时器。

glibc、gcc 和 binutils 的软件包

AL2023 包含许多与 AL2 相同的核心软件包。

我们为 AL2023 更新了以下三个核心工具链软件包。

软件包名称 AL2 AL2023
glibc

2.26

2.34

gcc

7.3

11.3

binutils

2.29

2.39

有关更多信息,请参阅 核心工具链软件包 glibc、gcc、binutils

软件包管理器

AL2023 上的默认软件包管理工具是 DNF。DNF 是 AL2 中软件包管理工具 YUM 的后继版本。

有关更多信息,请参阅 软件包管理工具

日志系统

在 AL2023 中,日志系统软件包已与 AL2 不同。默认情况下,AL2023 不安装 rsyslog,因此默认情况下 AL2 中可用的基于文本的日志文件(例如 /var/log/messages)不可用。AL2023 的默认配置为 systemd-journal,这可以使用 journalctl 进行检查。尽管 rsyslog 是 AL2023 中的可选软件包,但建议使用新的基于 systemdjournalctl 接口和相关软件包。有关更多信息,请参阅 journalctl 手册页面。

curllibcurl 的软件包变更

AL2023 将 curllibcurl 软件包的常用协议和功能分离出来,放入 curl-minimallibcurl-minimal 中。这减少了大多数用户的磁盘、内存和依赖项占用空间,并且是 AL2023 AMI 和容器的默认软件包。

如果需要 curl 的全部功能(例如为了获得 gopher:// 支持),请运行以下命令来安装 curl-fulllibcurl-full 软件包。

$ dnf swap libcurl-minimal libcurl-full
$ dnf swap curl-minimal curl-full

GNU Privacy Guard (GNUPG)

AL2023 将 gnupg2 软件包的最低和完整功能分成 gnupg2-minimalgnupg2-full 软件包。默认情况下仅安装 gnupg2-minimal 软件包。这提供了验证 rpm 软件包上的数字签名所需的最低功能。

要从 gnupg2 获得更多功能,例如从密钥服务器下载密钥,请确保已安装 gnupg2-full 软件包。运行以下命令,将 gnupg2-minimal 交换为 gnupg2-full

$ dnf swap gnupg2-minimal gnupg2-full

Amazon Corretto 作为默认 JVM

AL2023 附带 Amazon Corretto 作为默认(也是唯一的)Java 开发工具包 (JDK)。AL2023 中所有Java基于的软件包均使用构建Amazon Corretto 17。

如果要从 AL2 迁移,则可以从 AL2 上的等效OpenJDK版本顺利过渡到。Amazon Corretto

AWS CLI v2

AL2023 附带 AWS CLI 版本 2,而 AL2 附带版本 1。 AWS CLI

UEFI Preferred

默认情况下,在支持 UEFI 固件的实例类型上使用 AL2023 AMI 启动的任何实例都将在 UEFI 模式下启动。这是通过将启动模式 AMI 参数设置为 uefi-preferred 来完成的。有关更多信息,请参阅 Amazon EC2 用户指南中的启动模式

SSH 服务器默认配置更改

对于 AL2023 AMI,我们更改了在此版本中生成的 sshd 主机密钥的类型。我们还删除了一些旧密钥类型,以避免在启动时生成它们。客户端必须通过使用 ed25519 密钥支持 rsa-sha2-256rsa-sha2-512 协议或 ssh-ed25519。默认情况下,ssh-rsa 签名处于禁用状态。

此外,默认 sshd_config 文件中的 AL2023 配置设置还包含 UseDNS=no。这一新设置意味着 DNS 受损不太可能阻碍您与实例建立 ssh 会话。但代价在于,authorized_keys 文件中的 from=hostname.domain,hostname.domain 行条目将无法解析。由于 sshd 不再尝试解析 DNS 名称,因此必须将每个以逗号分隔的 hostname.domain 值转换为对应的 IP address。

有关更多信息,请参阅 默认 SSH 服务器配置

Extra Packages for Enterprise Linux (EPEL)

Extra Packages for Enterprise Linux (EPEL) 是 Fedora 社区中的一个项目,其目标是为企业级 Linux 操作系统创建大量软件包。该项目主要制作 RHEL 和 CentOS 软件包。AL2 与 CentOS 7 高度兼容。因此,许多 EPEL7 软件包在 AL2 上运行。但是,AL2023 不支持 EPEL 或 EPEL 类似的存储库。

使用 cloud-init

在 AL2023 中,cloud-init 管理软件包存储库。默认情况下,在早期版本的Amazon Linux 中,cloud-init 安装了安全更新。但这不是 AL2023 的默认设置。用于在启动时更新 releasever 的确定性升级功能描述了 AL2023 在启动时启用软件包更新的方式。有关更多信息,请参阅在 AL2023 中管理软件包和操作系统更新确定性升级用于提高稳定性

对于 AL2023,您可以将 cloud-init与 SELinux 一起使用。有关更多信息,请参阅 使用 cloud-init 启用 enforcing 模式

Cloud-init 使用 cloud-init 从使用 HTTP(S) 的远程位置加载配置内容。在早期版本中,当远程资源不可用时,Amazon Linux 不会提醒您。在 AL2023 中,不可用的远程资源会导致严重错误并导致 cloud-init 执行失败。AL2 的这种行为变化提供了更安全的“发生故障时关闭”默认行为。

有关更多信息,请参阅定制 cloud-initcloud-init 文档

图形桌面支持

AL2023 以云为中心,针对 Amazon EC2 的使用进行了优化,目前不包括图形或桌面环境。要提供有关的反馈 GitHub,请参阅 https://github.com/

编译器三元组

AL2023 为 GCC 和 LLVM 设置编译器三元组,以表明 amazon 是供应商。

因此,AL2 aarch64-redhat-linux-gcc 成为 AL2023 上的 aarch64-amazon-linux-gcc

对于大多数用户来说,这应该是完全透明的,并且可能只会影响那些在 AL2023 上构建编译器的用户。

32 位 x86 (i686) 软件包

作为 2014.09版本AL1 的一部分,宣布这将是最后一个生产32位AMI的版本。因此,从 AL1 2015.03 版本开始,Amazon Linux 不再支持在 32 位模式下运行系统。AL2 为 x86-64 主机上的 32 位二进制文件提供了有限的运行时系统支持,并且没有提供开发包来支持构建新的 32 位二进制文件。AL2023 不再包含任何 32 位用户空间软件包。我们建议您完成向 64 位代码的过渡。

如果您需要在 AL2023 上运行 32 位二进制文件,则可以在运行在 AL2023 之上的 AL2 容器中使用 AL2 的 32 位用户空间。

lsb_releasesystem-lsb-core 软件包

过去,一些软件会调用 lsb_release 命令(由 system-lsb-core 软件包在 AL2 中提供)来获取有关其正在运行的 Linux 发行版的信息。Linux Standards Base (LSB) 引入了此命令,Linux 发行版采用了此命令。Linux 发行版已经演变为使用更简单的标准,将这些信息保存在 /etc/os-release 和其他相关文件中。

os-release 标准来自 systemd。有关更多信息,请参阅 systemd os-release 文档

AL2023 不附带 lsb_release 命令,也不包括 system-lsb-core 软件包。软件应完成向 os-release 标准的过渡,以保持与 Amazon Linux 和其他主要 Linux 发行版的兼容性。