我最近一直在摆弄 Buildroot 及其为 Raspberry Pi 计算机创建自定义图像的功能。
但在成功构建后,我意识到我实际上没有合适的电缆将我的 Raspberry Pi 4b 连接到显示器,而且我真的不想在 Buildroot 中设置 SSH。
我读过几篇关于在 VirtualBox 中模拟 .img 文件的帖子,但没有一篇是专门针对这个问题的,而且他们的修复方法似乎都不起作用。我也试过 QEMU,但它也没用,而且它似乎对我的目的来说有点高级。
在 VirtualBox 中,我尝试将文件添加为软盘,将扩展名更改为.iso
,并使用 VBoxManage 工具将其转换为.vbi
文件。但都出现了某种错误。
任何有关在 VirtualBox 中设置 Raspberry Pi 环境的帮助都将不胜感激!
答案1
Qemu 刚开始使用时可能比较棘手,但是习惯之后我发现它是一种非常强大且可靠的工具。
如果您或其他人愿意尝试,请尝试以下操作:
获取内核、dtb 以及可能预制的 Rasbian SD 卡映像https://github.com/dhruvvyas90/qemu-rpi-kernel和https://www.raspberrypi.com/software/分别。
qemu-system-arm \
-M versatilepb -cpu arm1176 -m 256 \
-drive "file=2022-09-22-raspios-bullseye-armhf-lite.img,if=none,index=0,media=disk,format=raw,id=disk0" \
-device "virtio-blk-pci,drive=disk0,disable-modern=on,disable-legacy=off" \
-net "user,hostfwd=tcp::5022-:22" \
-dtb versatile-pb-buster-5.4.51.dtb \
-kernel kernel-qemu-5.4.51-buster \
-append 'root=/dev/vda2 panic=1' -no-reboot
首先尝试这些,使其启动。然后用您制作的 buildroot 结果替换内核和 dtb,这样您就可以确保您的 Qemu 设置可以使用已知的良好文件。如果需要,请更改 qemu 命令行以适合您的特定 HOST 网络(例如,点击用于 wifi 互联网共享的设备https://wiki.gentoo.org/wiki/Network_bridge举个例子)
作为测试,我遵循了以下做法:https://ltekieli.com/buildroot-with-raspberry-pi-what-where-and-how/ 基本上下载或者克隆构建根:
cd buildroot
make raspberrypi_defconfig
make -j8
(改变 j 标志来对应您喜欢用于编译的线程数量)
我能够启动新的 buildroot sdcard 映像,它位于 buildroot/output/images/ 中,但当然,内核和 dtb 不是为 qemu 中使用的这个特定 cpu 制作的,qemu 也不了解 raspberrypi 特定的 cpu。现在您必须使用其他内核。
这是道路的分叉。你需要虚拟 Pi 做什么?如果只是编辑和测试,这个设置可能就足够了,使用 buildroot 你甚至可以专门针对 arm1176 cpu 并为虚拟 pi 生成一个有效的 dtb。编辑,连接到互联网,设置 SSH。
取决于你现在的需求。我猜你现在已经想通了,甚至拿到了那根电缆。https://pimylifeup.com/raspberry-pi-virtualbox/可能是针对虚拟盒的答案。但同样,我更喜欢 Qemu,它对于在没有真正的 Pi 的情况下诊断和调试软件很有帮助。