Конвертирование EC2 AMI в образ vmdk

18

Благодаря этому ответу и этим веб-сайтам я подошел к тому, чтобы заставить Amazon Linux загружаться внутри VirtualBox . Краткий обзор шагов, которые я предпринял:

  1. Запустите экземпляр EC2 с 64-битным AMI Amazon Linux 2011.09
  2. ddсодержимое тома EBS sshв локальный файл изображения.
  3. Смонтируйте файл образа как устройство с обратной связью, а затем в локальную точку монтирования.
  4. Создайте новый пустой файл образа диска, раздел со смещением для загрузчика и создайте файловую систему ext4.
  5. Смонтируйте раздел нового образа и скопируйте все из образа EC2.
  6. Установите grub (используя grub-legacy-ec2пакет Ubuntu , а не grub2).
  7. Преобразуйте файл изображения в vmdk, используя qemu-img.
  8. Создайте новую виртуальную машину VirtualBox с помощью vmdk.

Теперь 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?

Рид Г. Лоу
источник
Делал работу, похожую на тебя, и нашел решение по другой ссылке .. поделился с тобой тоже. Протестировал это, и это сработало для меня ... blog.zorangagic.com/2015/03/…
Pratap

Ответы:

7

Я так старался, и я сдавался, но в конце концов мне это удалось!

Мне удалось загрузиться с Amazon Linux AMI, портированной под vmware!

Я почти новичок, но я сделал это, после нескольких часов испытаний, заменив оригинальное ядро ​​amazon на vmlinuz-2.6.32-38-generic, взятый из дистрибутива ubuntu 64 10.04.

Я просто получаю много ошибок, потому что конфигурация amazon внутри AMI ищет что-то по внутреннему адресу, который, очевидно, не находит. Думаю, это / usr / bin / cloud-init.

Но я могу войти внутрь, и кажется, что все работает!

Спасибо за вашу помощь!!

Я написал этот пост с пошаговыми инструкциями по переходу с AMI на Vmware.

Надеюсь это поможет!

Эмануэле Преда
источник
Кстати, Рид, я прибыл именно в ту точку, о которой вы заявили (dracut, говоря: «корневое устройство не найдено» ... Вы продвинулись дальше?
Эмануэле Преда
Я пришел к тому же решению, которое вы сделали: скопировать ядро ​​из Ubuntu. Это работает, но на данный момент я не знаю, насколько система будет работать с Amazon Linux AMI.
Рид Г. Лоу
Пожалуйста, также посмотрите мой ответ здесь , который предоставляет 2 альтернативных обновленных метода для экспорта в VirtualBox / VMWare VMDK, а также инструкции по использованию вновь созданного VMDK с Vagrant
Code Bling
2

Официальное ядро ​​Amazon получило их в своем выпуске 2011.09, то есть 2.6.35.14.

Вы, вероятно, можете получить исходный пакет для Amazon get_reference_source, но я бы не ожидал, что он все равно будет работать за пределами Amazon.

Пьер Карьер
источник
1

Люди из Cloudify поделились тем, как они создают коробку Vagrant, готовую для VirtualBox, без доступа к голым железным машинам - они используют AWS.

9 шагов до небес:

  • Создайте исходное изображение (AMI) [...] с помощью Packer.
  • Запустите рабочий экземпляр в AWS с моментальным снимком или исходным изображением в качестве одного из дисков.
  • На рабочем образе: создайте необработанный том изображения в виде файла и создайте на нем раздел ext4.
  • Скопируйте данные с диска исходного образа в ранее созданный раздел ext4.
  • Установите загрузчик (extlinux) на раздел ext4.
  • Преобразуйте необработанный образ в VMDK.
  • Объедините VMDK, используя дескриптор OVF и метаданные Vagrant, и создайте файл tar с расширением content и .box.
  • Загрузить на 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

Фредрик Вендт
источник