Я пытаюсь закрепить конфигурацию 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 просто делает виртуализацию иначе.