Благодаря этому ответу и этим веб-сайтам я подошел к тому, чтобы заставить Amazon Linux загружаться внутри VirtualBox . Краткий обзор шагов, которые я предпринял:
- Запустите экземпляр EC2 с 64-битным AMI Amazon Linux 2011.09
dd
содержимое тома EBSssh
в локальный файл изображения.- Смонтируйте файл образа как устройство с обратной связью, а затем в локальную точку монтирования.
- Создайте новый пустой файл образа диска, раздел со смещением для загрузчика и создайте файловую систему ext4.
- Смонтируйте раздел нового образа и скопируйте все из образа EC2.
- Установите grub (используя
grub-legacy-ec2
пакет Ubuntu , а не grub2). - Преобразуйте файл изображения в vmdk, используя
qemu-img
. - Создайте новую виртуальную машину 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?