web-dev-qa-db-ja.com

EC2 AMIをvmdkイメージに変換する

この答えthesewebsites のおかげで、Amazon LinuxをVirtualBox内で起動できるようになりました。私が取ったステップの簡単な概要:

  1. Amazon Linux 2011.09 64ビットAMIでEC2インスタンスを起動する
  2. ddローカルイメージファイルへのsshを介したEBSボリュームの内容。
  3. イメージファイルをループバックデバイスとしてマウントしてから、ローカルマウントポイントにマウントします。
  4. 新しい空のディスクイメージファイルを作成し、ブートローダーのオフセットを使用してパーティションを作成し、ext4ファイルシステムを作成します。
  5. 新しいイメージのパーティションをマウントし、EC2イメージからすべてをコピーします。
  6. Grubをインストールします(grub2ではなくUbuntuのgrub-legacy-ec2パッケージを使用)。
  7. qemu-imgを使用して、イメージファイルをvmdkに変換します。
  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でテストを実行するのは安上がりですが、接続性が悪いと、エクスペリエンスが台無しになることがあります。さらに、本番環境を備えた仮想マシンがあり、同僚がアプリの開発を開始して実行するためだけにSunの下にすべてをインストールする必要がないようにするのは本当にいいことです。

別のカーネルを実行してみると、どのカーネルをAmazon Linux 2011.09にできるだけ近づけることができますか?

18
Reed G. Law

頑張って諦めましたが、結局成功しました!

vmwareに移植されたAmazon Linux AMIで起動できました!

私はほとんど初心者ですが、何時間もの試行錯誤の末、元のAmazonカーネルをvmlinuz-2.6.32-38-genericに置き換える ubuntu 64 10.04ディストリビューションから取得しました。

AMI内のAmazon構成が、明らかに見つからない内部アドレスで何かを探しているため、多くのエラーが発生します。/usr/bin/cloud-initだと思います。

しかし、私は内部でログインできます、そしてすべてがうまくいっているようです!

ご協力いただきありがとうございます!!

this AMIからVMwareに移行するための手順を追ったブログ記事を書きました。

お役に立てれば!

7
Emanuele Preda

Amazonの公式カーネルは、2011.09ディストリビューションで派生したie 2.6.35.14です。

おそらくget_reference_sourceを使用してAmazonのソースパッケージを取得できますが、Amazonの外部で動作することは期待できません。

2
Pierre Carrier

Cloudifyのスタッフは、ベアメタルマシンにアクセスせずに、VirtualBox対応のVagrantボックスを作成する方法を共有しました。AWSを使用しています。

天国への9つのステップ:

  • Packerを使用してソースイメージ(AMI)[...]を作成します。
  • ディスクの1つとしてスナップショットまたはソースイメージを使用して、AWSでワーカーインスタンスを起動します。
  • ワーカーイメージ上:rawイメージボリュームをファイルとして作成し、そこに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 =

1
Fredrik Wendt