BuildRoot 2020.02.10中的RISC-V 64的默认模拟器是QEMU4.2.0,其启动参数可以在board/qemu/riscv64-vir/readme.txt中看到,内容如下:
Run Linux in emulation with:
qemu-system-riscv64 -M virt -kernel output/images/fw_jump.elf \
-device loader,file=output/images/Image,addr=0x80200000 \
-append "rootwait root=/dev/vda ro" \
-drive file=output/images/rootfs.ext2,format=raw,id=hd0 \
-device virtio-blk-device,drive=hd0 \
-netdev user,id=net0 -device virtio-net-device,netdev=net0 \
-nographic
The login prompt will appear in the terminal that started Qemu.
Tested with QEMU 3.1
经测试,BuildRoot自带编译输出的QEMU 4.2.0,使用上述参数能够正常输出启动log,运行正常。
但是目前QEMU官方最新的QEMU版本是QEMU 5.2.0,使用上述参数进行启动,则无法正常启动,QEMU会报错。查看QEMU官方ChangeLog可以看到,QEMU 5.2.0开始,模拟器内部集成了OpenSBI,因此上述启动参数会无法正常工作。修改启动参数如下,则QEMU可以正常启动。
qemu-system-riscv64 -M virt -kernel output/images/Image \
-append "rootwait root=/dev/vda ro" \
-drive file=output/images/rootfs.ext2,format=raw,id=hd0 \
-device virtio-blk-device,drive=hd0 \
-netdev user,id=net0 -device virtio-net-device,netdev=net0 \
-nographic
经后续分析,QEMU 5.2.0使用BuildRoot编译出的OpenSBI和Linux Kernel,运行方法如下:
qemu-system-riscv64 -M virt -bios output/images/fw_jump.bin \
-kernel output/images/Image -append "rootwait root=/dev/vda ro" \
-drive file=output/images/rootfs.ext2,format=raw,id=hd0 \
-device virtio-blk-device,drive=hd0 \
-netdev user,id=net0 -device virtio-net-device,netdev=net0 -nographic
更新网卡,使用tap参数启动:
qemu-system-riscv64 -M virt -nographic \
-bios output/images/fw_jump.bin \
-kernel output/images/Image -append "rootwait root=/dev/vda ro" \
-drive file=output/images/rootfs.ext2,format=raw,id=hd0 \
-device virtio-blk-device,drive=hd0 \
-netdev tap,id=net0,ifname=qemutap,script=no,downscript=no \
-device virtio-net-device,netdev=net0
版权声明:本文为orz365原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。