19ca019c1SAndrea Bolognani# q35 - VirtIO guest (graphical console) 29ca019c1SAndrea Bolognani# ========================================================= 39ca019c1SAndrea Bolognani# 49ca019c1SAndrea Bolognani# Usage: 59ca019c1SAndrea Bolognani# 69ca019c1SAndrea Bolognani# $ qemu-system-x86_64 \ 79ca019c1SAndrea Bolognani# -nodefaults \ 89ca019c1SAndrea Bolognani# -readconfig q35-virtio-graphical.cfg 99ca019c1SAndrea Bolognani# 109ca019c1SAndrea Bolognani# You will probably need to tweak the lines marked as 119ca019c1SAndrea Bolognani# CHANGE ME before being able to use this configuration! 129ca019c1SAndrea Bolognani# 139ca019c1SAndrea Bolognani# The guest will have a selection of VirtIO devices 149ca019c1SAndrea Bolognani# tailored towards optimal performance with modern guests, 159ca019c1SAndrea Bolognani# and will be accessed through a graphical console. 169ca019c1SAndrea Bolognani# 179ca019c1SAndrea Bolognani# --------------------------------------------------------- 189ca019c1SAndrea Bolognani# 199ca019c1SAndrea Bolognani# Using -nodefaults is required to have full control over 209ca019c1SAndrea Bolognani# the virtual hardware: when it's specified, QEMU will 219ca019c1SAndrea Bolognani# populate the board with only the builtin peripherals 229ca019c1SAndrea Bolognani# plus a small selection of core PCI devices and 239ca019c1SAndrea Bolognani# controllers; the user will then have to explicitly add 249ca019c1SAndrea Bolognani# further devices. 259ca019c1SAndrea Bolognani# 269ca019c1SAndrea Bolognani# The core PCI devices show up in the guest as: 279ca019c1SAndrea Bolognani# 289ca019c1SAndrea Bolognani# 00:00.0 Host bridge 299ca019c1SAndrea Bolognani# 00:1f.0 ISA bridge / LPC 309ca019c1SAndrea Bolognani# 00:1f.2 SATA (AHCI) controller 319ca019c1SAndrea Bolognani# 00:1f.3 SMBus controller 329ca019c1SAndrea Bolognani# 339ca019c1SAndrea Bolognani# This configuration file adds a number of other useful 349ca019c1SAndrea Bolognani# devices, more specifically: 359ca019c1SAndrea Bolognani# 369ca019c1SAndrea Bolognani# 00:01.0 VGA compatible controller 379ca019c1SAndrea Bolognani# 00:1b.0 Audio device 389ca019c1SAndrea Bolognani# 00.1c.* PCI bridge (PCI Express Root Ports) 399ca019c1SAndrea Bolognani# 01:00.0 SCSI storage controller 409ca019c1SAndrea Bolognani# 02:00.0 Ethernet controller 419ca019c1SAndrea Bolognani# 03:00.0 USB controller 429ca019c1SAndrea Bolognani# 439ca019c1SAndrea Bolognani# More information about these devices is available below. 449ca019c1SAndrea Bolognani 459ca019c1SAndrea Bolognani 469ca019c1SAndrea Bolognani# Machine options 479ca019c1SAndrea Bolognani# ========================================================= 489ca019c1SAndrea Bolognani# 499ca019c1SAndrea Bolognani# We use the q35 machine type and enable KVM acceleration 509ca019c1SAndrea Bolognani# for better performance. 519ca019c1SAndrea Bolognani# 529ca019c1SAndrea Bolognani# Using less than 1 GiB of memory is probably not going to 539ca019c1SAndrea Bolognani# yield good performance in the guest, and might even lead 549ca019c1SAndrea Bolognani# to obscure boot issues in some cases. 559ca019c1SAndrea Bolognani 569ca019c1SAndrea Bolognani[machine] 579ca019c1SAndrea Bolognani type = "q35" 584477035eSThomas Huth 594477035eSThomas Huth[accel] 609ca019c1SAndrea Bolognani accel = "kvm" 619ca019c1SAndrea Bolognani 629ca019c1SAndrea Bolognani[memory] 639ca019c1SAndrea Bolognani size = "1024" 649ca019c1SAndrea Bolognani 659ca019c1SAndrea Bolognani 669ca019c1SAndrea Bolognani# PCI bridge (PCI Express Root Ports) 679ca019c1SAndrea Bolognani# ========================================================= 689ca019c1SAndrea Bolognani# 699ca019c1SAndrea Bolognani# We create eight PCI Express Root Ports, and we plug them 709ca019c1SAndrea Bolognani# all into separate functions of the same slot. Some of 719ca019c1SAndrea Bolognani# them will be used by devices, the rest will remain 729ca019c1SAndrea Bolognani# available for hotplug. 739ca019c1SAndrea Bolognani 749ca019c1SAndrea Bolognani[device "pcie.1"] 759ca019c1SAndrea Bolognani driver = "pcie-root-port" 769ca019c1SAndrea Bolognani bus = "pcie.0" 779ca019c1SAndrea Bolognani addr = "1c.0" 789ca019c1SAndrea Bolognani port = "1" 799ca019c1SAndrea Bolognani chassis = "1" 809ca019c1SAndrea Bolognani multifunction = "on" 819ca019c1SAndrea Bolognani 829ca019c1SAndrea Bolognani[device "pcie.2"] 839ca019c1SAndrea Bolognani driver = "pcie-root-port" 849ca019c1SAndrea Bolognani bus = "pcie.0" 859ca019c1SAndrea Bolognani addr = "1c.1" 869ca019c1SAndrea Bolognani port = "2" 879ca019c1SAndrea Bolognani chassis = "2" 889ca019c1SAndrea Bolognani 899ca019c1SAndrea Bolognani[device "pcie.3"] 909ca019c1SAndrea Bolognani driver = "pcie-root-port" 919ca019c1SAndrea Bolognani bus = "pcie.0" 929ca019c1SAndrea Bolognani addr = "1c.2" 939ca019c1SAndrea Bolognani port = "3" 949ca019c1SAndrea Bolognani chassis = "3" 959ca019c1SAndrea Bolognani 969ca019c1SAndrea Bolognani[device "pcie.4"] 979ca019c1SAndrea Bolognani driver = "pcie-root-port" 989ca019c1SAndrea Bolognani bus = "pcie.0" 999ca019c1SAndrea Bolognani addr = "1c.3" 1009ca019c1SAndrea Bolognani port = "4" 1019ca019c1SAndrea Bolognani chassis = "4" 1029ca019c1SAndrea Bolognani 1039ca019c1SAndrea Bolognani[device "pcie.5"] 1049ca019c1SAndrea Bolognani driver = "pcie-root-port" 1059ca019c1SAndrea Bolognani bus = "pcie.0" 1069ca019c1SAndrea Bolognani addr = "1c.4" 1079ca019c1SAndrea Bolognani port = "5" 1089ca019c1SAndrea Bolognani chassis = "5" 1099ca019c1SAndrea Bolognani 1109ca019c1SAndrea Bolognani[device "pcie.6"] 1119ca019c1SAndrea Bolognani driver = "pcie-root-port" 1129ca019c1SAndrea Bolognani bus = "pcie.0" 1139ca019c1SAndrea Bolognani addr = "1c.5" 1149ca019c1SAndrea Bolognani port = "6" 1159ca019c1SAndrea Bolognani chassis = "6" 1169ca019c1SAndrea Bolognani 1179ca019c1SAndrea Bolognani[device "pcie.7"] 1189ca019c1SAndrea Bolognani driver = "pcie-root-port" 1199ca019c1SAndrea Bolognani bus = "pcie.0" 1209ca019c1SAndrea Bolognani addr = "1c.6" 1219ca019c1SAndrea Bolognani port = "7" 1229ca019c1SAndrea Bolognani chassis = "7" 1239ca019c1SAndrea Bolognani 1249ca019c1SAndrea Bolognani[device "pcie.8"] 1259ca019c1SAndrea Bolognani driver = "pcie-root-port" 1269ca019c1SAndrea Bolognani bus = "pcie.0" 1279ca019c1SAndrea Bolognani addr = "1c.7" 1289ca019c1SAndrea Bolognani port = "8" 1299ca019c1SAndrea Bolognani chassis = "8" 1309ca019c1SAndrea Bolognani 1319ca019c1SAndrea Bolognani 1329ca019c1SAndrea Bolognani# SCSI storage controller (and storage) 1339ca019c1SAndrea Bolognani# ========================================================= 1349ca019c1SAndrea Bolognani# 1359ca019c1SAndrea Bolognani# We use virtio-scsi here so that we can (hot)plug a large 1369ca019c1SAndrea Bolognani# number of disks without running into issues; a SCSI disk, 1379ca019c1SAndrea Bolognani# backed by a qcow2 disk image on the host's filesystem, is 1389ca019c1SAndrea Bolognani# attached to it. 1399ca019c1SAndrea Bolognani# 1409ca019c1SAndrea Bolognani# We also create an optical disk, mostly for installation 1419277d81fSVille Skyttä# purposes: once the guest OS has been successfully 1429ca019c1SAndrea Bolognani# installed, the guest will no longer boot from optical 1439ca019c1SAndrea Bolognani# media. If you don't want, or no longer want, to have an 1449ca019c1SAndrea Bolognani# optical disk in the guest you can safely comment out 1459ca019c1SAndrea Bolognani# all relevant sections below. 1469ca019c1SAndrea Bolognani 1479ca019c1SAndrea Bolognani[device "scsi"] 1489ca019c1SAndrea Bolognani driver = "virtio-scsi-pci" 1499ca019c1SAndrea Bolognani bus = "pcie.1" 1509ca019c1SAndrea Bolognani addr = "00.0" 1519ca019c1SAndrea Bolognani 1529ca019c1SAndrea Bolognani[device "scsi-disk"] 1539ca019c1SAndrea Bolognani driver = "scsi-hd" 1549ca019c1SAndrea Bolognani bus = "scsi.0" 1559ca019c1SAndrea Bolognani drive = "disk" 1569ca019c1SAndrea Bolognani bootindex = "1" 1579ca019c1SAndrea Bolognani 1589ca019c1SAndrea Bolognani[drive "disk"] 1599ca019c1SAndrea Bolognani file = "guest.qcow2" # CHANGE ME 1609ca019c1SAndrea Bolognani format = "qcow2" 1619ca019c1SAndrea Bolognani if = "none" 1629ca019c1SAndrea Bolognani 1639ca019c1SAndrea Bolognani[device "scsi-optical-disk"] 1649ca019c1SAndrea Bolognani driver = "scsi-cd" 1659ca019c1SAndrea Bolognani bus = "scsi.0" 1669ca019c1SAndrea Bolognani drive = "optical-disk" 1679ca019c1SAndrea Bolognani bootindex = "2" 1689ca019c1SAndrea Bolognani 1699ca019c1SAndrea Bolognani[drive "optical-disk"] 1709ca019c1SAndrea Bolognani file = "install.iso" # CHANGE ME 1719ca019c1SAndrea Bolognani format = "raw" 1729ca019c1SAndrea Bolognani if = "none" 1739ca019c1SAndrea Bolognani 1749ca019c1SAndrea Bolognani 1759ca019c1SAndrea Bolognani# Ethernet controller 1769ca019c1SAndrea Bolognani# ========================================================= 1779ca019c1SAndrea Bolognani# 1789ca019c1SAndrea Bolognani# We use virtio-net for improved performance over emulated 1799ca019c1SAndrea Bolognani# hardware; on the host side, we take advantage of user 1809ca019c1SAndrea Bolognani# networking so that the QEMU process doesn't require any 1819ca019c1SAndrea Bolognani# additional privileges. 1829ca019c1SAndrea Bolognani 1839ca019c1SAndrea Bolognani[netdev "hostnet"] 1849ca019c1SAndrea Bolognani type = "user" 1859ca019c1SAndrea Bolognani 1869ca019c1SAndrea Bolognani[device "net"] 1879ca019c1SAndrea Bolognani driver = "virtio-net-pci" 1889ca019c1SAndrea Bolognani netdev = "hostnet" 1899ca019c1SAndrea Bolognani bus = "pcie.2" 1909ca019c1SAndrea Bolognani addr = "00.0" 1919ca019c1SAndrea Bolognani 1929ca019c1SAndrea Bolognani 1939ca019c1SAndrea Bolognani# USB controller (and input devices) 1949ca019c1SAndrea Bolognani# ========================================================= 1959ca019c1SAndrea Bolognani# 1969ca019c1SAndrea Bolognani# We add a virtualization-friendly USB 3.0 controller and 1979ca019c1SAndrea Bolognani# a USB tablet so that graphical guests can be controlled 1989ca019c1SAndrea Bolognani# appropriately. A USB keyboard is not needed, as q35 1999ca019c1SAndrea Bolognani# guests get a PS/2 one added automatically. 2009ca019c1SAndrea Bolognani 2019ca019c1SAndrea Bolognani[device "usb"] 2029ca019c1SAndrea Bolognani driver = "nec-usb-xhci" 2039ca019c1SAndrea Bolognani bus = "pcie.3" 2049ca019c1SAndrea Bolognani addr = "00.0" 2059ca019c1SAndrea Bolognani 2069ca019c1SAndrea Bolognani[device "tablet"] 2079ca019c1SAndrea Bolognani driver = "usb-tablet" 2089ca019c1SAndrea Bolognani bus = "usb.0" 2099ca019c1SAndrea Bolognani 2109ca019c1SAndrea Bolognani 2119ca019c1SAndrea Bolognani# VGA compatible controller 2129ca019c1SAndrea Bolognani# ========================================================= 2139ca019c1SAndrea Bolognani# 2149ca019c1SAndrea Bolognani# We plug the QXL video card directly into the PCI Express 2159ca019c1SAndrea Bolognani# Root Bus as it is a legacy PCI device; this way, we can 2169ca019c1SAndrea Bolognani# reduce the number of PCI Express controllers in the 2179ca019c1SAndrea Bolognani# guest. 2189ca019c1SAndrea Bolognani# 2199ca019c1SAndrea Bolognani# If you're running the guest on a remote, potentially 2209ca019c1SAndrea Bolognani# headless host, you will probably want to append something 2219ca019c1SAndrea Bolognani# like 2229ca019c1SAndrea Bolognani# 2239ca019c1SAndrea Bolognani# -display vnc=127.0.0.1:0 2249ca019c1SAndrea Bolognani# 2259ca019c1SAndrea Bolognani# to the command line in order to prevent QEMU from 2269ca019c1SAndrea Bolognani# creating a graphical display window on the host and 2279ca019c1SAndrea Bolognani# enable remote access instead. 2289ca019c1SAndrea Bolognani 2299ca019c1SAndrea Bolognani[device "video"] 2309ca019c1SAndrea Bolognani driver = "qxl-vga" 2319ca019c1SAndrea Bolognani bus = "pcie.0" 2329ca019c1SAndrea Bolognani addr = "01.0" 2339ca019c1SAndrea Bolognani 2349ca019c1SAndrea Bolognani 2359ca019c1SAndrea Bolognani# Audio device 2369ca019c1SAndrea Bolognani# ========================================================= 2379ca019c1SAndrea Bolognani# 2389ca019c1SAndrea Bolognani# Like the video card, the sound card is a legacy PCI 2399ca019c1SAndrea Bolognani# device and as such can be plugged directly into the PCI 2409ca019c1SAndrea Bolognani# Express Root Bus. 2419ca019c1SAndrea Bolognani 2429ca019c1SAndrea Bolognani[device "sound"] 2439ca019c1SAndrea Bolognani driver = "ich9-intel-hda" 2449ca019c1SAndrea Bolognani bus = "pcie.0" 2459ca019c1SAndrea Bolognani addr = "1b.0" 2469ca019c1SAndrea Bolognani 2479ca019c1SAndrea Bolognani[device "duplex"] 2489ca019c1SAndrea Bolognani driver = "hda-duplex" 2499ca019c1SAndrea Bolognani bus = "sound.0" 2509ca019c1SAndrea Bolognani cad = "0" 251*adf7f6b7SPaolo Bonzini audiodev = "audiodev0" 252*adf7f6b7SPaolo Bonzini 253*adf7f6b7SPaolo Bonzini[audiodev "audiodev0"] 254*adf7f6b7SPaolo Bonzini driver = "none" # CHANGE ME 255