我已经用 Buildroot for i386 编译了一个嵌入式 Linux。我没有修改太多,只是默认。现在我想在qemu下运行它。但我唯一看到的是:
我正在使用以下选项运行 qemu:
qemu-system-i386 -kernel vmlinux -hda rootfs.ext2 -m 256
为什么会发生这种情况?我已经像 buildroot 文档中的示例一样进行了编译。
答案1
有效的命令
为了绝对确保它能够工作,我们可以让 Buildroot 为我们构建 QEMU,并使用 Buildroot 提供的确切 QEMU CLI:https://github.com/buildroot/buildroot/blob/2019.05/board/qemu/x86_64/readme.txt
git clone https://github.com/buildroot/buildroot
cd buildroot
git checkout 2019.05
make qemu_x86_64_defconfig
printf '
BR2_CCACHE=y
BR2_PACKAGE_HOST_QEMU=y
BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE=n
BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y
BR2_PACKAGE_HOST_QEMU_VDE2=y
' >> .config
make olddefconfig
time make BR2_JLEVEL="$(nproc)" HOST_QEMU_OPTS='--enable-sdl --with-sdlabi=2.0'
./output/host/bin/qemu-system-x86_64 \
-M pc \
-kernel output/images/bzImage \
-drive file=output/images/rootfs.ext2,if=virtio,format=raw \
-append "rootwait root=/dev/vda" \
-net nic,model=virtio \
-net user \
;
您现在处于 shell 中,可以使用用户名root
(无密码)登录。
但请注意,默认的 Buildroot 版本默认情况下没有像 X11 这样有趣的 GUI,因为这不是该项目最常见的用例。我已经在以下位置对此进行了介绍:如何在我自己的Linux Buildroot系统上安装X11?
但由于 Buildroot 没有足够关注我的需求的运行部分(更多自动化、更多启动类型、GDB 步骤调试),我在这个项目上使用一些额外的脚本对其进行了扩展:https://github.com/cirosantilli/linux-kernel-module-cheat
其他 ISA 提及于:https://cirosantilli.com/linux-kernel-module-cheat/#buildroot-hello-world
Buildroot 2019.08 QEMU 构建失败,因为 QEMU 3.1.1 版本的 x86_64 构建已损坏...QEMU 3.1.1 构建失败
在 Ubuntu 19.04 中测试。