Arch Linux AMIs for Amazon Web Services

出自 Arch Linux 中文维基

開放社區的 Arch AMI[編輯 | 編輯原始碼]

注意: Arch Linux 目前暫不提供 Amazon Machine Images 的官方支持。以下 AMI 由社區創建。

AMI[編輯 | 編輯原始碼]

可以在這裏找到 Arch Linux AMI:http://arch-ami-list.drzee.net/

AMI 每月構建兩次(一號及15號的 2:00am UTC),並在所有默認啟用的地區中提供(參見 地域列表)。如果需要在目前不支持的地域使用,可以手動將 AMI 複製到目標區域。

這些 AMI 屬於 EBS HVM AMI,並提供了兩個內核選項:

  • std - 使用來自默認 Arch 軟件源的標準內核,並帶有一些在 EC2 上使用所必須的模塊。調度器和 I/O 並沒有針對雲端使用進行優化,性能上可能較低。
  • ec2 - 使用了由 UplinkLabs 從默認 Arch Linux 內核修改而來的,針對 EC2 進行優化的內核,存放於獨立的源內:參見 https://git.uplinklabs.net/steven/ec2-packages.git

兩個內核都已在多種 EC2 實例上經過測試(t2,t3,t3a,m/r/c5,m/r/c6 以及帶有多 GPU 等高級硬件的實例上)並能正常啟動。

注意: 截止至 2023-06-12,已確認到 UplinkLabs 提供的 EC2 優化內核在使用 XEN 虛擬化管理器的實例(例如 t2-micro)上啟動時會卡住,原因是 XEN 內核模塊默認沒有打包進最新的內核裡。請確保僅使用新的 Nitro 虛擬化管理器實例 - 參見 Instances build on Nitro。這些實例仍可以使用 EC2 優化內核。
注意: ec2 倉庫除 linux-ec2 內核外也提供了其它的包。默認情況下,ec2 被設置為 pacman.conf 中最頂層的鏡像,導致 ec2 中的包比官方倉庫擁有更高的優先級。取決於具體的包版本,這可能會導致一些一致性問題。

未構建使用 LTS 內核的 AMI。

使用 REST API 獲取 AMI 列表[編輯 | 編輯原始碼]

可以使用如下 REST API 獲取 JSON 格式的可用 AMI 列表:

注意: API 終端已配置為自定義域名,應不會出現更改。

初次運行[編輯 | 編輯原始碼]

注意: AMI 內置的鏡像源清單在鏡像構建時生成,使用位於德國的伺服器。

啟動了 AMI 後,建議/必須執行以下步驟以初始化 pacman 並選擇最快的軟件源:

# pacman-key --init
# pacman-key --populate
# reflector --country "ISO 3166-1 Alpha-2 Country Code" --protocol https,http --score 20 --sort rate --save /etc/pacman.d/mirrorlist
# pacman -Syu

Reflector 包已隨 AMI 附帶。

建議在 /etc/xdg/reflector/reflector.conf 配置設置,然後啟用定時服務來自動定時更新鏡像清單。具體信息請參考 Reflector 文檔。

你也可以使用自己的鏡像源清單,而不使用 reflector。

構建流程[編輯 | 編輯原始碼]

注意: 該部分簡單介紹了 AMI 是如何構建的。

整個構建流程位於 AWS 上,並完全自動化進行。

構建流程由 AWS Step Function 控制,並隨一個 Amazon EventBridge 定時事件周期運行。

Step function 負責啟動構建,在更複雜的功能上結合使用了一系列本地調用及 AWS Lambda 函數來達成。

新的 AMI 構建流程為:使用舊的 AMI 啟動一台 EC2 實例作為 工作/構建機器,該實例上帶了一套特殊的構建腳本,使用了 pacstrap 和一些額外步驟來生成鏡像。大致步驟在下一節進行介紹。

完成 AMI 構建後,新的 AMI 會在新的 EC2 實例上進行 測試啟動 以驗證其可以正常啟動。成功後,AMI 將會被分發到各個地域,並在一個 DynamoDB 數據庫上進行記錄。數據庫內容可以由 REST API 進行調取。舊 AMI 將從各個地域及 DynamoDB 數據庫中刪除。

致謝[編輯 | 編輯原始碼]

感謝來自 UplinkLabs 的 Steven 協助解析構建流程,並測試了鏡像的早期質量。同時感謝 Mathcom 的腳本(遺憾的是文章已被移除),幫助加快了構建流程的基礎搭建。

你可以發送評論和建議(不保證會被查看)到:arch-ami 'at' drzee.net

未來工作[編輯 | 編輯原始碼]

  • 在默認 Arch Linux 源中加入官方的 EC2/雲平台優化內核
  • 在默認 Arch Linux 源中加入 AWS CLI v2(v1 已在源內,但未來可能會停止更新) - 感謝 yan12125 提供的 aws-cli-v2AUR

構建 Arch AMI[編輯 | 編輯原始碼]

你也可以自己構建 Arch Linux AMI,具體步驟可以參考 [1]