我正在尝试确定 buildroot(版本 2017.02.4)配置,我需要将与内核相关的问题与软件环境问题分开。
所以我尝试构建一个简单的磁盘映像,它可以在 Buildroot 环境和真实机器中工作。
我采用了一个通用配置,将其构建为映像,将其转换为 vdi,并将其附加到 Virtualbox VM。
make pc_x86_64_bios_defconfig
make clean
make
VBoxManage output/images/disk.img output/images/disk.vdi
这启动,但挂在“启动Buildroot
”
我也使用 qemu_x86_64_defconfig (稍作修改以使用 genimage 创建 grub2 磁盘映像)执行此操作并得到相同的结果。几年前我做过这个,所以我不明白为什么它现在不起作用。
什么配置导致这个挂起?
Virtualbox 来宾是否需要一个特殊的钩子才能正确启动?
更新:这些图像似乎可以在 qemu 中使用kvm
,因此它必须是 Virtualbox 配置或规范问题。
pc_x86_64_bios_defconfig
好像是64位的。在 Oracle VirtualBox 中,所有 64 位 VM 都需要对虚拟化(Intel VT-x 或 AMD-v)的硬件支持,即使主机操作系统是 64 位也是如此。KVM 只是以不同的方式进行虚拟化。因为 Virtualbox 不知道字符串“Buildroot”,所以在创建机器时,它提供类型“Other”和版本“Other / Unknown”。
由于这个名字看起来很笼统,我认为这意味着它是按位不可知的*。
在引擎盖下,这是一个 32 位选项,并且有一个名为“其他/未知(64 位)”的“版本”。
一旦我将其更改为 64 位选项,一切正常。它可能工作了一半,因为 Grub 对早期 CPU 状态很聪明,主要是 32 位代码。
*一些网站暗示 VT 只是从主机传递比特大小,在我的例子中是 64 位,这进一步加剧了我的假设。