# ‘virt’ generic virtual platform

The `virt` board is a platform which does not correspond to any real hardware; it is designed for use in virtual machines. It is the recommended board type if you simply want to run a guest such as Linux and do not care about reproducing the idiosyncrasies and limitations of a particular bit of real-world hardware.

## Supported devices

> - PCI/PCIe devices

> - 8 virtio-mmio transport devices

> - 16550A UART

> - Goldfish RTC

> - SiFive Test device for poweroff and reboot

> - SMP (OpenRISC multicore using ompic)

## Boot options

The virt machine can be started using the `-kernel` and `-initrd` options to load a Linux kernel and optional disk image. For example:

    $ 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 guest kernel configuration

The ‘virt_defconfig’ for Linux openrisc kernels includes the right drivers for the `virt` machine.

### Hardware configuration information

The `virt` board automatically generates a device tree blob (“dtb”) which it passes to the guest. This provides information about the addresses, interrupt lines and other configuration of the various devices in the system.

The location of the DTB will be passed in register `r3` to the guest operating system.