開放社區的 Arch 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://arch-linux-ami.s3.amazonaws.com/repo/$arch[失效連結 2022-09-17 ⓘ](參見 https://git.uplinklabs.net/steven/ec2-packages.git)
兩個內核都已在多種 EC2 實例上經過測試(t2,t3,t3a,m/r/c5,m/r/c6 以及帶有多 GPU 等高級硬體的實例上)並能正常啟動。
未構建使用 LTS 內核的 AMI。
使用 REST API 獲取 AMI 列表
可以使用如下 REST API 獲取 JSON 格式的可用 AMI 列表:
- 獲取所有 AMI:
https://5nplxwo1k1.execute-api.eu-central-1.amazonaws.com/prod
- 獲取各個地域最新 AMI 的清單:
https://5nplxwo1k1.execute-api.eu-central-1.amazonaws.com/prod/latest
(與 http://arch-ami-list.drzee.net/ 的列表內容相同,格式變為 JSON) - 獲取單個地域內的的所有 AMI:
https://5nplxwo1k1.execute-api.eu-central-1.amazonaws.com/prod/region
- 將region
替換為要查看的地域:例如eu-north-1
,eu-west-1
,us-east-1
等等。 - 按照 CPU 架構列出地域中的所有 AMI:
https://5nplxwo1k1.execute-api.eu-central-1.amazonaws.com/prod/region/arch
- 將arch
替換為x86_64
- 按照 CPU 架構和內核類型列出地域中的所有 AMI:
https://5nplxwo1k1.execute-api.eu-central-1.amazonaws.com/prod/region/arch/type
- 將type
替換為std
或者ec2
- 按照 CPU 架構和內核類型列出地域中的最新 AMI:
https://5nplxwo1k1.execute-api.eu-central-1.amazonaws.com/prod/region/arch/type/latest
- 替換region
、arch
和type
初次運行
啟動了 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 附帶。
構建流程
整個構建流程位於 AWS 上,並完全自動化進行。
構建流程由 AWS Step Function 控制,並隨一個 Amazon EventBridge 定時事件周期運行。
Step function 負責啟動構建,在更複雜的功能上結合使用了一系列本地調用及 AWS Lambda 函數來達成。
新的 AMI 構建流程為:使用舊的 AMI 啟動一台 EC2 實例作為 工作/構建機器,該實例上帶了一套特殊的構建腳本,其內容很大程度上參考了以下連結,並做了一些增改:http://mathcom.com/arch.aws.ami.html 。因為我們不需要獨立防火牆,所以跳過了步驟 7.4 。
完成 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 已在源內,但未來可能會停止更新)
構建 Arch AMI
你也可以自己構建 Arch Linux AMI,可以參考下列指南:
- linux-ec2AUR 在 Arch Linux 內核中啟用了 Xen 模塊及 XSAVE 補丁。另外,部分實例也可以在默認 Arch Linux 內核下運行。
- Uplink Labs 上有關於構建流程的手冊。
- 也可以參考這份教程來構建你自己的 AMI:https://gitlab.com/anemos-io/archlinux-ec2
- Mathcom 提供了一份只使用了核心的 Arch 工具的指南:http://mathcom.com/arch.aws.ami.html
來自 Uplink Labs 的 AMI 鏡像
Uplink Labs 每月約構建兩次新鏡像。鏡像在數個地域提供,並包含了下列配置:
- ebs hvm x86_64 lts
- s3 hvm x86_64 lts
- ebs hvm x86_64 stable
- s3 hvm x86_64 stable
AMI 的連結及更多附加信息可參考:https://www.uplinklabs.net/projects/arch-linux-on-ec2/