由于有了这个答案和这些 网站,我已经非常接近让Amazon Linux在VirtualBox中启动。我已采取的步骤的快速概述:
- 使用Amazon Linux 2011.09 64位AMI启动EC2实例
dd
将EBS卷的内容转移ssh
到本地图像文件中。- 将映像文件安装为回送设备,然后再安装到本地安装点。
- 创建一个新的空磁盘映像文件,为启动加载程序分配一个具有偏移量的分区,然后创建一个ext4文件系统。
- 挂载新映像的分区,并复制EC2映像中的所有内容。
- 安装grub(使用Ubuntu的
grub-legacy-ec2
软件包,而不是grub2)。 - 使用将图像文件转换为vmdk
qemu-img
。 - 使用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?