如何从头创build基于EBS的EC2 AMI?

在亚马逊宣布新的基于EBS的AMI后 ,我想知道是否可以创build不基于现有Fedora / Windows AMI的AMI。 该文件说:

最简单的方法包括从现有的公共AMI开始并根据您的要求进行修改。 这适用于Amazon EBS支持的和Amazon S3支持的AMI,在“从现有的AMI开始”中进行了描述。

另一种方法是在独立的机器上或通过环回安装的空文件系统上构build新的安装。 这仅适用于Amazon S3支持的AMI,需要从头开始构build操作系统安装。

这听起来像所有未来的AMI必须基于现有的AMI,但这将是非常有限的。 我是否正确理解这一点,或者是否有其他方法来创build不基于现有AMI的方法? 我会对创buildUbuntu AMI感兴趣。

对于Ubuntu尤其是你可以尝试这些说明http://alestic.com/2010/01/vmbuilder-ebs-boot-ami

下面是我用来构build一个使用可下载的Ubuntu服务器文件系统作为基础的Git / gitolite服务器AMI的脚本:

https://github.com/alestic/alestic-git/blob/master/bin/alestic-git-build-ami

以下是关于EC2的Alestic Git服务器项目的更多信息:

http://alestic.com/alestic-git/

我在Alestic.com上写过的vmbuilder-ebs-boot-ami文章现在已经过时了。

AMI不一定要以现有的AMI为基础,但是从EC2创build一个AMI是错综复杂的,因为它为您提供了一个远程访问和硬件configuration的计算机,但没有控制台input。

这里的技巧是如果ISO镜像包含引导扇区,则可以直接从硬盘引导。 另外,新OS的安装需要完全自动化,因为在安装程序运行时您将无法与控制台交互。

您将需要使用三个EBS磁盘,并切换哪些磁盘:开发,安装程序和最终结果。

  1. 用现有的AMI启动一个EC2实例。
  2. 编辑您的新操作系统的ISO映像进行无人值守安装(即回送安装,复制文件,编辑,mkisofs,isohybrid)。 对于Ubuntu,您需要编辑预先定义的文件和isolinux.cfg。 安装必须写入新的EBS磁盘,这将成为新的AMI。
  3. 将编辑的ISO映像复制到第三个EBS磁盘并从中启动。

我使用这种方法为Linux Mint 18.2创build了一个AMI(从Amazon AMI Linux开始),详细描述如下。