将 EC2 AMI 转换为 vmdk 映像

将 EC2 AMI 转换为 vmdk 映像

我已经接近让 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?

答案1

我尝试了很多次,甚至一度放弃,但最后我成功了!

我已经设法使用在 vmware 下移植的 Amazon Linux AMI 进行启动!

我几乎是个新手,但经过几个小时的尝试,我做到了,使用 vmlinuz-2.6.32-38-generic 替换原始 amazon 内核取自 ubuntu 64 10.04 发行版。

我收到很多错误,因为 AMI 中的 amazon 配置正在内部地址中查找某些内容,但显然找不到。我认为是 /usr/bin/cloud-init。

但我可以从内部登录,而且看起来一切正常!

感谢您的帮助!!

我写过博客文章提供了从 AMI 迁移到 Vmware 的分步说明。

希望这可以帮助!

答案2

亚马逊的官方内核是在其 2011.09 发行版中衍生出来的,IE2.6.35.14.

您可能可以通过 获取 Amazon 的源包get_reference_source,但无论如何我并不指望它能在 Amazon 之外工作。

答案3

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

通往天堂的九个台阶:

  • 使用 Packer 创建源图像(AMI)。
  • 在 AWS 中启动一个工作实例,并使用快照或源映像作为其磁盘之一。
  • 在工作映像上:创建原始映像卷作为文件,并在其上创建 ext4 分区。
  • 将数据从源映像磁盘复制到之前创建的 ext4 分区。
  • 在 ext4 分区上安装引导加载程序 (extlinux)。
  • 将原始图像转换为 VMDK。
  • 使用 OVF 描述符和 Vagrant 元数据捆绑 VMDK,并创建具有内容和 .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

相关内容