为什么 Buildroot 的通用 pc_x86_64_bios_defconfig 图像在 Virtualbox 中挂起?

为什么 Buildroot 的通用 pc_x86_64_bios_defconfig 图像在 Virtualbox 中挂起?

我正在尝试确定 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 配置或规格问题。

答案1

似乎pc_x86_64_bios_defconfig是 64 位。在 Oracle VirtualBox 中,所有 64 位虚拟机都需要硬件支持虚拟化(Intel VT-x 或 AMD-v),即使主机操作系统是 64 位。KVM 只是以不同的方式进行虚拟化。

答案2

由于 Virtualbox 无法识别字符串“Buildroot”,因此在创建机器时它提供类型“其他”和版本“其他/未知”。

由于这个名字看起来很普通,我推测这意味着它是不可知的按位*。

在引擎盖下,这是一个 32 位选项,并且有一个名为“其他/未知(64 位)”的“版本”。

在此处输入图片描述

当我将其更改为 64 位选项后,一切正常。它可能是半成功了,因为 Grub 对早期 CPU 状态很敏感,大部分是 32 位代码。

*一些网站暗示 VT 只是从主机传递了位大小,在我的情况下是 64 位,这进一步强化了我的假设。

相关内容