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://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/