将 EC2 AMI 转换为 vmdk 映像

Ree*_*Law 18 virtualbox kernel disk-image amazon-ec2

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

  1. 使用 Amazon Linux 2011.09 64 位 AMI 启动 EC2 实例
  2. ddEBS 卷的内容转移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
Run Code Online (Sandbox Code Playgroud)

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

所有这些努力背后的原因是制作一个尽可能接近生产环境的 Vagrant box,因此可以在本地测试部署。我知道在 EC2 上进行测试运行很便宜,但连接性差通常会破坏体验。另外,在生产环境中拥有一个虚拟机真的很棒,这样同事们就不必为了启动和运行应用程序开发而安装所有东西。

如果我尝试运行不同的内核,我可以使用哪种内核尽可能接近 Amazon Linux 2011.09?

Ema*_*eda 7

我尝试了这么多,我放弃了,但最终我成功了!

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

我几乎是新手,但经过数小时的试验,我做到了,从 ubuntu 64 10.04 发行版中获取的 vmlinuz-2.6.32-38-generic 替换了原始的亚马逊内核

我只是收到很多错误,因为 AMI 中的亚马逊配置正在寻找内部地址中的某些内容,但显然它没有找到。我认为是 /usr/bin/cloud-init。

但是我可以在里面登录,看起来一切正常!

谢谢你的帮助!!

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

希望这可以帮助!