'virt' 通用虚拟平台

virt 不对应真实硬件,专为虚拟机设计。如果只想运行 Linux 等客户机, 不需要复现具体硬件的特殊行为和限制,推荐使用它。

支持的设备

  • PCI/PCIe 设备

  • 8 个 virtio-mmio 传输设备

  • 16550A UART

  • Goldfish RTC

  • 用于关机和重启的 SiFive Test 设备

  • SMP(通过 ompic 实现 OpenRISC 多核)

启动选项

用 -kernel 和 -initrd 加载内核及可选磁盘镜像,例如:

$ qemu-system-or1k -cpu or1220 -M or1k-sim -nographic \
      -device virtio-net-device,netdev=user -netdev user,id=user,net=10.9.0.1/24,host=10.9.0.100 \
      -device virtio-blk-device,drive=d0 -drive file=virt.qcow2,id=d0,if=none,format=qcow2 \
      -kernel vmlinux \
      -initrd initramfs.cpio.gz \
      -m 128

Linux 客户机内核配置

Linux OpenRISC 的 virt_defconfig 包含 virt 所需驱动。

硬件配置信息

virt 自动生成并传递设备树 DTB,描述设备地址、中断线及其他配置。

通过 r3 寄存器向客户机传入 DTB 地址。