Назад | Перейти на главную страницу

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

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

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

Теперь виртуальная машина загружается, загружается 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?

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

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

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

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

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

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

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

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

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

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

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

9 шагов в рай:

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