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

Почему общий образ Buildroot pc_x86_64_bios_defconfig зависает в Virtualbox?

Я пытаюсь закрепить конфигурацию buildroot (версия 2017.02.4), и мне нужно отделить проблемы, связанные с ядром, от проблем с программной средой.

Итак, я попытался создать простой образ диска, который будет работать как в среде Buildroot, так и на реальной машине.

Я взял общую конфигурацию, встроил ее в образ, преобразовал в vdi и прикрепил к виртуальной машине Virtualbox.

make pc_x86_64_bios_defconfig
make clean
make
VBoxManage output/images/disk.img output/images/disk.vdi

Это загружается, но зависает при загрузке Buildroot'

Я сделал это также с qemu_x86_64_defconfig (немного изменен для создания образа диска grub2 с использованием genimage) и получил тот же результат. Я делал это раньше несколько лет назад, поэтому не понимаю, почему сейчас это не сработает.

Какая конфигурация вызывает зависание?

Нужен ли гостям Virtualbox специальный перехватчик для правильной загрузки?

ОБНОВЛЕНИЕ: эти изображения работают в qemu kvm, поэтому это должна быть проблема конфигурации или спецификации Virtualbox.

Поскольку строка «Buildroot» не известна Virtualbox, при создании машины она предлагает тип «Другой» и версию «Другой / Неизвестный».

Поскольку имя казалось очень общим, я предположил, что это означало, что оно было независимым от побитовых *.

Под капотом это 32-битный вариант, и есть «версия» под названием «Другое / Неизвестно (64-бит)».

Как только я изменил это на 64-битный вариант, все заработало. Вероятно, это наполовину сработало, потому что Grub, хорошо разбираясь в раннем состоянии процессора, в основном представляет собой 32-битный код.

* Некоторые веб-сайты подразумевали, что VT просто передавал битовый размер от хоста, который в моем случае был 64-битным, что еще больше усугубляло мои предположения.

В pc_x86_64_bios_defconfig вроде бы 64бит. В Oracle VirtualBox аппаратная поддержка виртуализации (Intel VT-x или AMD-v) требуется для всех 64-битных виртуальных машин, даже если ОС хоста является 64-битной. KVM просто делает виртуализацию иначе.