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]。