本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
比较 AL2 和 AL2023
以下主题描述了 AL2 和 AL2023 之间的主要区别。
主题
- 添加、升级和删除了软件包
- 针对每个版本的支持
- 命名和版本控制更改
- 优化
- Python 2.7 已被 Python 3 所取代
- 安全更新
- 确定性升级用于提高稳定性
- 来自多个上游
- AMI 根文件系统和默认 Amazon EBS 卷类型
- 网络系统服务
- 统一控制组层次结构 (cgroup v2)
- 任务计划
- glibc、gcc 和 binutils 的软件包
- 软件包管理器
- 日志系统
- curl 和 libcurl 的软件包变更
- GNU Privacy Guard (GNUPG)
- Amazon Corretto 作为默认 JVM
- AWS CLI v2
- UEFI Preferred
- SSH 服务器默认配置更改
- Extra Packages for Enterprise Linux (EPEL)
- 使用 cloud-init
- 图形桌面支持
- 编译器三元组
- 32 位 x86 (i686) 软件包
- lsb_release 和 system-lsb-core 软件包
- AL2023 内核与 AL2 相比发生了变化
- 比较 Amazon Linux 2 和 Amazon Linux 2023 AMI 上安装的软件包
- 比较 Amazon Linux 2 和 Amazon Linux 2023 Minimal AMI 上安装的软件包
- 比较 Amazon Linux 2 和 Amazon Linux 2023 基础容器映像上安装的软件包
添加、升级和删除了软件包
AL2023 包含数千个可供使用的软件包。有关与之前的 Amazon Linux 版本相比,AL2023 中添加、升级或删除的所有软件包的完整列表,请参阅 AL2023 中的软件包变化。
要申请在 AL2023 中添加或更改软件包,请在亚马逊 linux-
针对每个版本的支持
对于 AL2023,我们提供为期五年的支持。
有关更多信息,请参阅 发布节奏。
命名和版本控制更改
AL2023 支持的平台识别机制与 AL2 所支持的机制相同。AL2023 还为平台识别引入了新的文件。
有关更多信息,请参阅 命名和版本控制。
优化
AL2023 优化了启动时间,以缩短从实例启动到运行客户工作负载的时间。这些优化涵盖 Amazon EC2 实例内核配置、cloud-init
配置和内置于操作系统包(例如 kmod
和 systemd
)中的功能。
有关优化的更多信息,请参阅性能和操作优化。
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 Notebook
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
热补丁是一种缓解措施,可以留出时间来修补 log4j
。AL2023 的第一个正式发布 (GA) 版本于 CVE-2021-44228
在 Amazon Linux 上运行自己的log4j
版本的用户应确保已更新到未受 CVE-2021-44228
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
单元。有关更多信息,请参阅 system.r
任务计划
默认情况下,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 中的可选软件包,但建议使用新的基于 systemd
的 journalctl
接口和相关软件包。有关更多信息,请参阅 journalctl
curl
和 libcurl
的软件包变更
AL2023 将 curl
和 libcurl
软件包的常用协议和功能分离出来,放入 curl-minimal
和 libcurl-minimal
中。这减少了大多数用户的磁盘、内存和依赖项占用空间,并且是 AL2023 AMI 和容器的默认软件包。
如果需要 curl
的全部功能(例如为了获得 gopher://
支持),请运行以下命令来安装 curl-full
和 libcurl-full
软件包。
$
dnf swap libcurl-minimal libcurl-full
$
dnf swap curl-minimal curl-full
GNU Privacy Guard (GNUPG)
AL2023 将 gnupg2
软件包的最低和完整功能分成 gnupg2-minimal
和 gnupg2-full
软件包。默认情况下仅安装 gnupg2-minimal
软件包。这提供了验证 rpm
软件包上的数字签名所需的最低功能。
要从 gnupg2
获得更多功能,例如从密钥服务器下载密钥,请确保已安装 gnupg2-full
软件包。运行以下命令,将 gnupg2-minimal
交换为 gnupg2-full
。
$
dnf swap gnupg2-minimal gnupg2-full
Amazon Corretto 作为默认 JVM
AL2023 附带 Amazon Corretto
如果要从 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-256
和 rsa-sha2-512
协议或 ssh-ed25519
。默认情况下,ssh-rsa
签名处于禁用状态。
此外,默认 sshd_config
文件中的 AL2023 配置设置还包含 UseDNS=no
。这一新设置意味着 DNS 受损不太可能阻碍您与实例建立 ssh
会话。但代价在于,authorized_keys
文件中的 from=
行条目将无法解析。由于 hostname.domain
,hostname.domain
sshd
不再尝试解析 DNS 名称,因此必须将每个以逗号分隔的
值转换为对应的 IP address。hostname.domain
有关更多信息,请参阅 默认 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-init 和 cloud-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
如果您需要在 AL2023 上运行 32 位二进制文件,则可以在运行在 AL2023 之上的 AL2 容器中使用 AL2 的 32 位用户空间。
lsb_release
和 system-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 发行版的兼容性。