将EC2 AMI转换为vmdk映像


18

由于有了这个答案这些 网站,我已经非常接近让Amazon Linux在VirtualBox中启动。我已采取的步骤的快速概述:

  1. 使用Amazon Linux 2011.09 64位AMI启动EC2实例
  2. dd将EBS卷的内容转移ssh到本地图像文件中。
  3. 将映像文件安装为回送设备,然后再安装到本地安装点。
  4. 创建一个新的空磁盘映像文件,为启动加载程序分配一个具有偏移量的分区,然后创建一个ext4文件系统。
  5. 挂载新映像的分区,并复制EC2映像中的所有内容。
  6. 安装grub(使用Ubuntu的grub-legacy-ec2软件包,而不是grub2)。
  7. 使用将图像文件转换为vmdk qemu-img
  8. 使用vmdk创建一个新的VirtualBox VM。

现在,VM启动,加载grub并找到了内核。但是在尝试挂载根设备时失败:

dracut Warning: No root device "block:/dev/xvda1" found

dracut Warning: Boot has failed. To debug this issue add "rdshell" to the kernel command line.


dracut Warning: Signal caught!

dracut Warning: Boot has failed. To debug this issue add "rdshell" to the kernel command line.
Kernel panic - not syncing: Attempted to kill init!
Pid: 1, comm: init Not tainted 2.6.35.14-107.1.39.amzn1.x86_64 #1

我尝试更改/boot/grub/menu.lst以通过标签和UUID查找根设备,但是没有任何效果。我猜xen内核与VirtualBox不兼容。

所有这些工作背后的原因是要使Vagrant盒与生产环境尽可能接近,因此可以在本地测试部署。我知道在EC2上进行测试很便宜,但连接性差通常会破坏体验。另外,在生产环境中拥有虚拟机也非常好,这样同事不必为了在应用程序开发中启动和运行而在阳光下安装所有设备。

如果我尝试运行其他内核,那么我可以使哪个内核尽可能接近Amazon Linux 2011.09?


正在做与您相似的工作,并在其他链接上找到了解决方案..也与您共享。经过测试,它对我有用
Pratap

Answers:


7

我做了很多尝试,但我还是放弃了,但最终我成功了!

我设法通过在vmware下移植的Amazon Linux AMI进行引导!

我几乎是个新手,但经过数小时的试用,我还是从ubuntu 64 10.04发行版中获取的vmlinuz-2.6.32-38-generic代替了原始的Amazon内核

我只是收到很多错误,因为AMI内部的亚马逊配置正在内部地址中寻找显然找不到的东西。我认为是/ usr / bin / cloud-init。

但是我可以登录内部,看来一切正常!

谢谢你的帮助!!

我已经写了这篇博客,其中包含从AMI迁移到Vmware的分步说明。

希望这可以帮助!


顺便说一句,里德,我恰好到达了您所说的要点(草稿告诉“没有找到根设备” ...您有进一步行动吗?
Emanuele Preda

我得到的解决方案基本相同:从Ubuntu复制内核。它可以工作,但是到那时我还不知道该系统与Amazon Linux AMI的性能如何相似。
Reed G. Law

也请在此处查看我的答案,其中提供了2种替代的更新方法,用于导出到VirtualBox / VMWare VMDK,以及有关将新创建的VMDK与Vagrant一​​起使用的说明
代码Bling

2

官方内核Amazon在其2011.09发行版( 2.6.35.14)中派生了它们。

您可能可以通过使用来获得Amazon的源软件包get_reference_source,但是我不希望它在Amazon之外也能正常工作。


1

Cloudify的人们分享了他们如何创建VirtualBox就绪的Vagrant框,而无需访问裸机-他们使用AWS。

通往天堂的9个步骤:

  • 使用Packer创建源图像(AMI)。
  • 使用快照或源映像作为其磁盘之一在AWS中启动工作程序实例。
  • 在辅助映像上:将原始映像卷创建为文件,并在其上创建ext4分区。
  • 将数据从源映像磁盘复制到先前创建的ext4分区。
  • 在ext4分区上安装引导程序(extlinux)。
  • 将原始映像转换为VMDK。
  • 使用OVF描述符和Vagrant元数据将VMDK捆绑在一起,并创建具有content和.box扩展名的tar文件。
  • 上传到S3 [或您喜欢的任何内容]。
  • 清理。

来源http//www.developer.com/design/creating-a-reproducible-and-portable-development-environment.html上的博客文章,包含上述9个步骤

代码https : //github.com/cloudify-cosmo/cloudify-packager/tree/3.2m4/image-builder

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.