この回答とこれらの ウェブサイトのおかげで、VirtualBox内でAmazon Linuxを起動できるようになりました。私がとったステップの簡単な概要:
- Amazon Linux 2011.09 64ビットAMIでEC2インスタンスを起動する
dd
EBSボリュームのコンテンツをssh
ローカルイメージファイルに保存します。- イメージファイルをループバックデバイスとしてマウントしてから、ローカルマウントポイントにマウントします。
- 新しい空のディスクイメージファイルを作成し、ブートローダーのオフセットでパーティションを作成し、ext4ファイルシステムを作成します。
- 新しいイメージのパーティションをマウントし、EC2イメージからすべてをコピーします。
- grubをインストールします(
grub-legacy-ec2
grub2ではなくUbuntuのパッケージを使用)。 - を使用してイメージファイルを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にできるだけ近づけることができますか?