Arch Linux AMIs for Amazon Web Services
開放社區的 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://git.uplinklabs.net/steven/ec2-packages.git
兩個內核都已在多種 EC2 實例上經過測試(t2,t3,t3a,m/r/c5,m/r/c6 以及帶有多 GPU 等高級硬件的實例上)並能正常啟動。
t2-micro
)上啟動時會卡住,原因是 XEN 內核模塊默認沒有打包進最新的內核裡。請確保僅使用新的 Nitro 虛擬化管理器實例 - 參見 Instances build on Nitro。這些實例仍可以使用 EC2 優化內核。pacman.conf
中最頂層的鏡像,導致 ec2 中的包比官方倉庫擁有更高的優先級。取決於具體的包版本,這可能會導致一些一致性問題。未構建使用 LTS 內核的 AMI。
使用 REST API 獲取 AMI 列表[編輯 | 編輯原始碼]
可以使用如下 REST API 獲取 JSON 格式的可用 AMI 列表:
- 獲取所有 AMI:
https://arch-ami-api.drzee.net/
- 獲取各個地域最新 AMI 的清單:
https://arch-ami-api.drzee.net/latest
(與 http://arch-ami-list.drzee.net/ 的內容相同,但格式為 JSON) - 獲取單個地域內的的所有 AMI:
https://arch-ami-api.drzee.net/region
- 將region
替換為要查看的地域:例如eu-north-1
,eu-west-1
,us-east-1
等等。 - 按照 CPU 架構列出地域中的所有 AMI:
https://arch-ami-api.drzee.net/region/arch
- 將arch
替換為x86_64
- 按照 CPU 架構和內核類型列出地域中的所有 AMI:
https://arch-ami-api.drzee.net/region/arch/type
- 將type
替換為std
或者ec2
- 按照 CPU 架構和內核類型列出地域中的最新 AMI:
https://arch-ami-api.drzee.net/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 附帶。
建議在 /etc/xdg/reflector/reflector.conf
配置設置,然後啟用定時服務來自動定時更新鏡像清單。具體信息請參考 Reflector 文檔。
你也可以使用自己的鏡像源清單,而不使用 reflector。
構建流程[編輯 | 編輯原始碼]
整個構建流程位於 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]。