

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon Linux 2023 是什麼？
<a name="what-is-amazon-linux"></a>

Amazon Linux 2023 (AL2023) 是來自 Amazon Web Services () 的新一代 Amazon Linux AWS。透過 AL2023，您可以在安全、穩定且高效能的執行時間環境中開發和執行雲端和企業應用程式。此外，您還可以取得應用程式環境，提供長期支援，讓您存取 Linux 中的最新創新。使用 AL2023 無需負擔額外費用。

AL2023 是 Amazon Linux 2 (AL2) 的後續版本。如需 AL2023 和 AL2 之間差異的資訊，請參閱 [比較 AL2 與 AL2023](compare-with-al2.md)和 [AL2023 中的套件變更](https://docs.aws.amazon.com/linux/al2023/release-notes/compare-packages.html)。

**Topics**
+ [發行節奏](release-cadence.md)
+ [命名和版本控制](naming-and-versioning.md)
+ [效能與操作最佳化](performance-optimizations.md)
+ [與 Fedora 的關係](relationship-to-fedora.md)
+ [自訂 cloud-init](cloud-init.md)
+ [安全更新和功能](security-features.md)
+ [網路服務](networking-service.md)
+ [核心工具鏈套件 glibc、gcc、binutils](core-glibc.md)
+ [套件管理工具](package-management.md)
+ [預設 SSH 伺服器組態](ssh-host-keys-disabled.md)

# 發行節奏
<a name="release-cadence"></a>

Amazon Linux 2023 (AL2023) 已於 2023 年 3 月發行，並支援至 2029 年 6 月 30 日。支援有兩個階段：
+ **標準支援** – 在此階段，版本會每季收到次要版本更新。標準支援階段將於 2027 年 6 月 30 日結束。
+ **維護** – 在此階段，版本只會收到安全性更新和重大錯誤修正。這些更新會在可用時立即發佈。維護階段將於 2029 年 6 月 30 日結束。

## 主要版本和次要版本
<a name="major-minor-releases"></a>

在每個 Amazon Linux 版本 (主要版本、次要版本或安全版本) 中，我們都會發布新的 Linux Amazon Machine Image (AMI)。
+ **主要版本發行** — 包括新功能，以及在整個堆疊中的安全性和效能改進。這些改進可能包括對核心、工具鏈、Glib C、OpenSSL，以及任何其他系統程式庫和公用程式的重大變更。Amazon Linux 的主要版本部分是以上游 Fedora Linux 發行版本的目前版本為基礎。 AWS 可能會新增或取代其他非 Fedora 上游的特定套件。
+ **次要版本** — 每季更新，包含安全更新、錯誤修正，以及新功能和套件。每個次要版本都是累積的更新清單，除了新功能和套件之外，還包括安全和錯誤修正。這些發行版本可能包含最新的語言執行期，例如 PHP。另外還可能包括其他常見的套件，如 Ansible 和 Docker。

## 使用新版本
<a name="consuming-new-releases"></a>

更新將透過新的 Amazon Machine Image (AMI) 發行版和對應的新儲存庫組合進行。預設情況下，新的 AMI 會與其指向的儲存庫耦合。不過，您可以隨著時間經過，將執行中的 Amazon EC2 執行個體指向較新的儲存庫版本，以便在執行中的執行個體套用更新。您也可以啟動最新 AMI 的新執行個體來進行更新。

## 長期支援政策
<a name="long-term-support-policy"></a>

Amazon Linux 會為您的所有套件提供更新，並在主要版本中維持在 Amazon Linux 上建置的應用程式相容性。核心套件 (例如 glibc 程式庫、OpenSSL、OpenSSH 和 DNF 套件管理員) 會獲得 AL2023 主要發行版本壽命週期的支援。不屬於核心套件的套件會根據其特定的上游來源獲得支援。您可以執行下列命令來查看個別套件的特定支援狀態和日期。

```
$ sudo dnf supportinfo --pkg packagename
```

您可以執行下列命令來取得所有目前已安裝套件的資訊。

```
$ sudo dnf supportinfo --show installed
```

核心套件的完整清單會在預覽期間完成。如果您想查看更多核心套件包含的套件，請告訴我們。我們在收集意見回饋時進行評估。您可以透過指定 AWS 代表或在 GitHub 上的 amazon-linux-2023 儲存庫中提出問題，來提供 AL2023 的意見回饋。 [https://github.com/amazonlinux/amazon-linux-2023/issues](https://github.com/amazonlinux/amazon-linux-2023/issues)

# 命名和版本控制
<a name="naming-and-versioning"></a>

AL2023 在標準支援的兩年期間，每三個月提供次要版本。每個發行版本都會以 0 到 N 之間的增量來識別。0 是指該版序的原始主要發行版本。所有版本都將稱為 Amazon Linux 2023。當下一個版本的 Amazon Linux 發行時，AL2023 將輸入延長支援，並接收安全性更新和重大錯誤修正的更新。

例如，AL2023 的次要版本具有以下格式：
+ `2023.0.20230301`
+ `2023.1.20230601`
+ `2023.2.20230901`

對應的 AL2023 AMI 格式如下：
+ `al2023-ami-2023.0.20230301.0-kernel-6.1-x86_64`
+ `al2023-ami-2023.1.20230601.0-kernel-6.1-x86_64`
+ `al2023-ami-2023.2.20230901.0-kernel-6.1-x86_64`

在特定的次要版本中，一般 AMI 發行版本會以 AMI 發行日期的時間戳記發行。
+ `al2023-ami-2023.0.20230301.0-kernel-6.1-x86_64`
+ `al2023-ami-2023.0.20230410.0-kernel-6.1-x86_64`
+ `al2023-ami-2023.0.20230520.0-kernel-6.1-x86_64`

用於識別 AL2 或 AL2023 執行個體的建議方法從從 讀取通用平台列舉 (CPE) 字串開始`/etc/system-release-cpe`。然後，將字串拆為字段。最後，閱讀平台和版本值。

AL2023 還導入用於平台識別的新檔案：
+  `/etc/amazon-linux-release` symlinks 至 `/etc/system-release` 
+  `/etc/amazon-linux-release-cpe` symlinks 至 `/etc/system-release-cpe`

這兩個檔案指出執行個體是 Amazon Linux。除非您想知道特定的平台和版本值，否則無需讀取檔案或將字串拆為字段。

# 效能與操作最佳化
<a name="performance-optimizations"></a>

**Amazon 6.1 核心**
+ AL2023 使用 Elastic Network Adapter (ENA) 和 Elastic Fabric Adapter (EFA) 裝置的最新驅動程式。AL2023 著重於 Amazon EC2 基礎設施中硬體的效能和功能向後移植。
+ 核心即時修補程式可用於 `x86_64` 和 `aarch64` 執行個體類型。這會減少頻繁重新開機的需求。
+ 所有核心建置和執行時間組態都包含許多相同的 AL2 效能和操作最佳化。

**基本工具鏈選項和預設建置旗標**
+ AL2023 套件的建置預設會啟用編譯器最佳化 (`-O2`)
+ AL2023 套件的建置 `x86-64v2` 需要 `x86-64` 系統 (`-march=x86-64-v2`)，以及 `aarch64` (`-march=armv8.2-a+crypto -mtune=neoverse-n1`) 的 Graviton 2 或更新版本。
+ AL2023 套件是以啟用自動向量化 (`-ftree-vectorize`) 建置。
+ AL2023 套件是在啟用連結時間最佳化 (LTO) 的情況下建置。
+ AL2023 使用 Rust、Clang/LLVM 和 Go 的更新版本。

**套件選項和版本**
+ 選擇主要系統元件的反向移植包括在 Amazon EC2 基礎設施上執行的多項效能改進，尤其是 Graviton 執行個體。
+ AL2023 與數個 AWS 服務 和 功能整合。這包括 AWS CLI、SSM Agent、Amazon Kinesis Agent 和 CloudFormation。
+ AL2023 使用 Amazon Corretto 作為 Java 開發套件 (JDK)。
+ AL2023 為較新版本提供資料庫引擎和程式設計語言執行期更新，因為它們由上游專案發布。新版本的程式設計語言執行期會在發布時新增。

**在雲端環境中部署**
+ 基礎 AL2023 AMI 和容器映像會經常更新，以支援更換修補執行個體。
+ 核心更新包含在 AL2023 AMI 更新中。這代表您不需要使用 `yum update` 和 `reboot` 等的命令來更新核心。
+ 除了標準的 AL2023 AMI 之外，還提供最小 AMI 和容器映像。選擇最小 AMI，以使用執行服務所需的最少套件數量來執行環境。
+ 預設情況下，AL2023 AMI 和容器會鎖定至特定版本的套件儲存庫。啟動時沒有自動更新。這表示您可以隨時掌控導入任何套件更新的時間。在推出生產前，您可以隨時在 beta/gamma 環境中進行測試。如有問題，您可以使用預先驗證的復原路徑。

# 與 Fedora 的關係
<a name="relationship-to-fedora"></a>

AL2023 會維護自己的版本，並支援與 Fedora 無關的生命週期。AL2023 提供開放原始碼軟體的更新版本、更多種類的套件，以及頻繁的發行版本。這樣可以保留熟悉的 RPM 架構作業系統。

AL2023 的正式上市 (GA) 版本無法直接與任何特定的 Fedora 發行版本相比。AL2023 GA 版本包含來自 Fedora 34、35 和 36 的元件。有些元件與 Fedora 中的元件相同，有些元件則經過修改。其他元件更接近 CentOS Stream 9 中的元件，或獨立開發的元件。Amazon Linux 核心源自 kernel.org 上的長期支援選項，並從 Fedora 中獨立選出。

# 自訂 cloud-init
<a name="cloud-init"></a>

cloud-init 套件是一種開放原始碼應用程式，可在雲端運算環境中引導 Linux 映像。如需詳細資訊，請參閱 [cloud-init 文件](https://cloudinit.readthedocs.io/en/22.2.2/)。

AL2023 包含 cloud-init 的自訂版本。使用 cloud-init 時，您可以指定執行個體在開機時執行的操作。

啟動執行個體時，您可以使用使用者資料欄位將動作傳遞至 cloud-init。這表示您可在許多使用案例下用常用 Amazon Machine Image (AMI)，並在啟動執行個體時進行動態設定。AL2023 也會用 cloud-init 來設定 `ec2-user` 帳號。

AL2023 會在 `/etc/cloud/cloud.cfg.d` 和 `/etc/cloud/cloud.cfg` 中使用 cloud-init 操作。您可以在 `/etc/cloud/cloud.cfg.d` 目錄中建立自己的 cloud-init 操作檔案。Cloud-init 會以字母順序讀取此目錄中的所有檔案。新檔案會覆寫舊檔案中的值。cloud-init 啟動執行個體時，cloud-init 套件會執行下列設定工作：
+ 設定預設的地區設定
+ 設定主機名稱
+ 剖析和處理使用者資料
+ 產生主機私有 SSH 金鑰
+ 將使用者的公有 SSH 金鑰加入至 `.ssh/authorized_keys`，以方便登入和管理
+ 準備儲存庫以管理套件
+ 處理使用者資料中定義的套件動作
+ 執行使用者資料中的使用者指令碼
+ 掛載執行個體儲存體磁碟區 (如適用)
  + 根據預設，若 `ephemeral0` 執行個體儲存體存在，且包含有效的檔案系統，執行個體儲存體會掛載在 `/media/ephemeral0`；否則將不會掛載。
  + 根據預設，對於 `m1.small` 和 `c1.medium` 執行個體類型，將掛載任何與執行個體關聯的置換磁碟區。
  + 您可用下列的 cloud-init 指令覆寫預設的執行個體儲存體磁碟區掛載：

    ```
    #cloud-config 
    mounts:
    - [ ephemeral0 ]
    ```

    如需進一步掌控掛載，請參閱 cloud-init 文件中的[掛載](https://cloudinit.readthedocs.io/en/22.2.2/topics/modules.html#mounts)。
  + 執行個體啟動時，不會格式化支援 TRIM 的執行個體儲存體磁碟區。掛載執行個體儲存體磁碟區前，您必須先分割和格式化執行個體儲存體磁碟區。

    如需詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[執行個體存放區磁碟區 TRIM 支援](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html#InstanceStoreTrimSupport)。
  +  您可在啟動執行個體時，使用 `disk_setup` 模組分割及格式化執行個體儲存體磁碟區。

    如需詳細資訊，請參閱 cloud-init 文件中的[磁碟設定](https://cloudinit.readthedocs.io/en/22.2.2/topics/modules.html#disk-setup)。

如需使用 cloud-init 與 SELinux 搭配的相關資訊，請參閱 [使用 cloud-init 來啟用 `enforcing` 模式](enforcing-mode.md#cloud-init-enforcing)。

如需有關 cloud-init 使用者資料格式的資訊，請參閱 cloud-init 文件中的[使用者資料格式](https://cloudinit.readthedocs.io/en/22.2.2/topics/format.html#format)。

# 安全更新和功能
<a name="security-features"></a>

AL2023 提供許多安全性更新和解決方案。

**Topics**
+ [受管更新](#manage-updates)
+ [雲端內部的安全](#cloud-security)
+ [SELinux 模式](#setting-selinux)
+ [合規計劃](#compliance-program)
+ [SSH 伺服器預設](#ssh-server-default)
+ [OpenSSL 3 的主要功能](#openssl-3)

## 受管更新
<a name="manage-updates"></a>

使用 DNF和 儲存庫版本套用安全性更新。如需詳細資訊，請參閱[在 AL2023 中管理套件和作業系統更新](managing-repos-os-updates.md)。

## 雲端內部的安全
<a name="cloud-security"></a>

安全是 AWS 與您之間的共同責任。[共同責任模型](https://aws.amazon.com/compliance/shared-responsibility-model/)將此描述為雲端安全性和雲端安全性。如需詳細資訊，請參閱[Amazon Linux 2023 的安全與合規](security.md)。

## SELinux 模式
<a name="setting-selinux"></a>

預設情況下，SELinux 處於啟用狀態，並在 AL2023 中設置為寬容模式。在寬容模式中，會記錄權限遭拒的情形，但不會強制執行。

SELinux 政策定義使用者、處理程序、程式、檔案和裝置的權限。使用 SELinux 時，您可以選擇兩個政策之一。這些政策是目標式或多層級安全性 (MLS)。

如需有關 SELinux 模式和政策的詳細資訊，請參閱 [設定 AL2023 的 SELinux 模式](selinux-modes.md) 和 [SELinux Project 維基](http://selinuxproject.org/page/Main_Page)。

## 合規計劃
<a name="compliance-program"></a>

獨立稽核人員會評估 AL2023 的安全性和合規性，以及許多 AWS 合規計劃。

## SSH 伺服器預設
<a name="ssh-server-default"></a>

AL2023 包括 OpenSSH 8.7。OpenSSH 8.7 預設停用 `ssh-rsa` 金鑰交換算法。如需詳細資訊，請參閱[預設 SSH 伺服器組態](ssh-host-keys-disabled.md)。

## OpenSSL 3 的主要功能
<a name="openssl-3"></a>
+ 憑證管理通訊協定 (CMP，RFC 4210) 同時包含 CRMF (RFC 4211) 和 HTTP 傳輸 (RFC 6712)。
+ libcrypto 的 HTTP 或 HTTPS 用戶端支援 GET 和 POST 操作、重新導向、普通和 ASN.1 編碼內容、代理和逾時。
+ EVP\$1KDF 與金鑰衍生函數搭配使用。
+ EVP\$1MAC API 可搭配 MACs 使用。
+ Linux 核心 TLS 支援。

如需詳細資訊，請參閱《[OpenSSL 遷移指南](https://www.openssl.org/docs/man3.0/man7/migration_guide.html)》。

# 網路服務
<a name="networking-service"></a>



該開放原始碼專案 `systemd-networkd` 在現代 Linux 發行版中廣泛使用。該專案使用類似 `systemd` 架構其餘部分的聲明式組態語言。其主要組態檔案類型為 `.network` 和 `.link` 檔案。

`amazon-ec2-net-utils` 套件會在 `/run/systemd/network` 目錄中產生介面特定組態。這些組態會在連接至執行個體時，在介面上啟用 IPv4 和 IPv6 網路。這些組態也會安裝政策路由規則，以協助確保透過對應執行個體的網路介面，將本機來源的流量路由至網路。這些規則可確保透過彈性網路界面 (ENI) 從相關聯的地址或字首路由正確的流量。如需使用 ENI 的詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[使用 ENI](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html)。

您可以將自訂組態檔案放入 `/etc/systemd/network` 目錄，以覆寫 `/run/systemd/network` 中包含的預設組態設定並自訂此網路行為。

[systemd.network](https://www.freedesktop.org/software/systemd/man/systemd.network.html) 說明文件說明 `systemd-networkd` 服務如何判斷適用於特定介面的組態。它也會為 ENI 支援的界面產生稱為 的替代名稱altnames，以反映各種 AWS 資源的屬性。這些 ENI 支援的介面屬性是 ENI 附件的 `ENI ID` 和 `DeviceIndex` 欄位。使用各種工具 (例如 `ip` 命令) 時，您可以使用這些介面的屬性來參照這些介面。

AL2023 執行個體界面名稱是使用`systemd`槽命名機制產生。如需詳細資訊，請參閱 [systemd.net 命名方案](https://www.freedesktop.org/software/systemd/man/systemd.net-naming-scheme.html)。

此外，AL2023 預設使用 `fq_codel` 主動佇列管理網路傳輸排程演算法。如需詳細資訊，請參閱 [CoDel 概觀](https://www.bufferbloat.net/projects/codel/wiki/)。

# 核心工具鏈套件 glibc、gcc、binutils
<a name="core-glibc"></a>

Amazon Linux 的套件子集指定為核心工具鏈套件。核心套件是 AL2023 的主要部分，可獲得五年的支援。我們可能會變更套件的版本，但是，長期支援適用於 Amazon Linux 發行版中包含的套件。

這三個核心套件提供一個系統工具鏈，可用在 Amazon Linux 發行版中建置大多數軟體。


| 套件 | 定義 | 用途 | 
| --- | --- | --- | 
| glibc 2.34 |  系統 C 程式庫  |  獲得大多數提供標準功能的二進位程式採用，以及用於程式與核心間的介面。  | 
|  gcc 11.2  |  gcc 編譯器套件  |  編譯 C、C\$1\$1、Fortran。  | 
|  binutils 2.35  |  組譯工具、連結器以及其他二進位工具  |  操縱或檢查二進位程式。  | 

建議對任何 glibc 程式庫進行更新後皆需重新啟動。對於控制服務的套件更新，可能只需要重新啟動服務便可套用更新。但是，系統重新啟動可確保所有先前的套件和程式庫更新都已完成。

# 套件管理工具
<a name="package-management"></a>

AL2023 中的預設軟體套件管理工具是 DNF。 DNF是 的後續版本YUM，AL2 中的套件管理工具。

DNF 的用途類似 YUM。許多DNF命令和命令選項與YUM命令相同。在命令列介面 (CLI) 命令中，在大多數情況下 `dnf` 會取代 `yum`。

例如，針對下列 AL2 `yum`命令：

```
$ sudo yum install packagename
$ sudo yum search packagename
$ sudo yum remove packagename
```

在 AL2023 中，它們會成為下列命令：

```
$ sudo dnf install packagename
$ sudo dnf search packagename
$ sudo dnf remove packagename
```

在 AL2023 中，`yum` 命令仍然可用，但作為指向 `dnf` 命令的指標。因此，當 `yum` 命令在 Shell 中或指令碼中使用時，所有命令和選項都與 DNF CLI 相同。有關 YUM CLI 和 DNF CLI 之間差異的詳細資訊，請參閱 [DNF CLI 與 YUM 相比的變更](https://dnf.readthedocs.io/en/latest/cli_vs_yum.html)。

如需 `dnf` 命令的命令和選項完整參考，請參閱 man 頁面 `man dnf`。如需詳細資訊，請參閱[DNF 命令參考](https://dnf.readthedocs.io/en/latest/command_ref.html)。

# 預設 SSH 伺服器組態
<a name="ssh-host-keys-disabled"></a>

如果您使用多年前的 SSH 用戶端，連線至執行個體時可能會看到錯誤訊息。如果錯誤告訴您找不到相符的主機金鑰類型，請更新 SSH 主機金鑰以解決此問題。

**預設停用 `ssh-rsa` 簽章**

AL2023 包含預設組態，可停用舊版`ssh-rsa`主機金鑰演算法，並產生一組減少的主機金鑰。用戶端必須支援 `ssh-ed25519` 或 `ecdsa-sha2-nistp256` 主機金鑰演算法。

預設組態接受下列任何金鑰交換演算法：
+ `curve25519-sha256`
+ `curve25519-sha256@libssh.org`
+ `ecdh-sha2-nistp256`
+ `ecdh-sha2-nistp384`
+ `ecdh-sha2-nistp521`
+ `diffie-hellman-group-exchange-sha256`
+ `diffie-hellman-group14-sha256`
+ `diffie-hellman-group16-sha512`
+ `diffie-hellman-group18-sha512`

預設情況下，AL2023 會產生 `ed25519` 和 `ECDSA` 主機金鑰。用戶端支援 `ssh-ed25519` 或 `ecdsa-sha2-nistp256` 主機金鑰演算法。當您透過 SSH 連線至執行個體時，您必須使用支援相容演算法的用戶端，例如 `ssh-ed25519` 或 `ecdsa-sha2-nistp256`。如果您需要使用其他金鑰類型，請使用使用者資料中的 `cloud-config` 片段覆寫生成的金鑰清單。

在下列範例中，`cloud-config` 使用 `ecdsa` 和 `ed25519` 金鑰產生 `rsa` 主機金鑰。

```
#cloud-config 
 ssh_genkeytypes: 
 - ed25519 
 - ecdsa 
 - rsa
```

如果您使用 RSA 金鑰對進行公開金鑰驗證，您的 SSH 用戶端必須支援 `rsa-sha2-256` 或 `rsa-sha2-512` 簽章。如果您使用不相容的用戶端且無法升級，請重新啟用執行個體的 `ssh-rsa` 支援。若要重新啟用`ssh-rsa`支援，請使用下列命令啟用`LEGACY`系統加密政策。

```
$ sudo dnf install crypto-policies-scripts
$ sudo update-crypto-policies --set LEGACY
```

如需管理主機金鑰的詳細資訊，請參閱 [Amazon Linux 主機金鑰](https://cloudinit.readthedocs.io/en/22.2.2/topics/modules.html#host-keys)。