mach-virt-serial.cfg (6519B)
1 # mach-virt - VirtIO guest (serial console) 2 # ========================================================= 3 # 4 # Usage: 5 # 6 # $ qemu-system-aarch64 \ 7 # -nodefaults \ 8 # -readconfig mach-virt-serial.cfg \ 9 # -display none -serial mon:stdio \ 10 # -cpu host 11 # 12 # You will probably need to tweak the lines marked as 13 # CHANGE ME before being able to use this configuration! 14 # 15 # The guest will have a selection of VirtIO devices 16 # tailored towards optimal performance with modern guests, 17 # and will be accessed through the serial console. 18 # 19 # --------------------------------------------------------- 20 # 21 # Using -nodefaults is required to have full control over 22 # the virtual hardware: when it's specified, QEMU will 23 # populate the board with only the builtin peripherals, 24 # such as the PL011 UART, plus a PCI Express Root Bus; the 25 # user will then have to explicitly add further devices. 26 # 27 # The PCI Express Root Bus shows up in the guest as: 28 # 29 # 00:00.0 Host bridge 30 # 31 # This configuration file adds a number of other useful 32 # devices, more specifically: 33 # 34 # 00.1c.* PCI bridge (PCI Express Root Ports) 35 # 01:00.0 SCSI storage controller 36 # 02:00.0 Ethernet controller 37 # 38 # More information about these devices is available below. 39 # 40 # We use '-display none' to prevent QEMU from creating a 41 # graphical display window, which would serve no use in 42 # this specific configuration, and '-serial mon:stdio' to 43 # multiplex the guest's serial console and the QEMU monitor 44 # to the host's stdio; use 'Ctrl+A h' to learn how to 45 # switch between the two and more. 46 47 48 # Machine options 49 # ========================================================= 50 # 51 # We use the virt machine type and enable KVM acceleration 52 # for better performance. 53 # 54 # Using less than 1 GiB of memory is probably not going to 55 # yield good performance in the guest, and might even lead 56 # to obscure boot issues in some cases. 57 # 58 # Unfortunately, there is no way to configure the CPU model 59 # in this file, so it will have to be provided on the 60 # command line, but we can configure the guest to use the 61 # same GIC version as the host. 62 63 [machine] 64 type = "virt" 65 accel = "kvm" 66 gic-version = "host" 67 68 [memory] 69 size = "1024" 70 71 72 # Firmware configuration 73 # ========================================================= 74 # 75 # There are two parts to the firmware: a read-only image 76 # containing the executable code, which is shared between 77 # guests, and a read/write variable store that is owned 78 # by one specific guest, exclusively, and is used to 79 # record information such as the UEFI boot order. 80 # 81 # For any new guest, its permanent, private variable store 82 # should initially be copied from the template file 83 # provided along with the firmware binary. 84 # 85 # Depending on the OS distribution you're using on the 86 # host, the name of the package containing the firmware 87 # binary and variable store template, as well as the paths 88 # to the files themselves, will be different. For example: 89 # 90 # Fedora 91 # edk2-aarch64 (pkg) 92 # /usr/share/edk2/aarch64/QEMU_EFI-pflash.raw (bin) 93 # /usr/share/edk2/aarch64/vars-template-pflash.raw (var) 94 # 95 # RHEL 96 # AAVMF (pkg) 97 # /usr/share/AAVMF/AAVMF_CODE.fd (bin) 98 # /usr/share/AAVMF/AAVMF_VARS.fd (var) 99 # 100 # Debian/Ubuntu 101 # qemu-efi (pkg) 102 # /usr/share/AAVMF/AAVMF_CODE.fd (bin) 103 # /usr/share/AAVMF/AAVMF_VARS.fd (var) 104 105 [drive "uefi-binary"] 106 file = "/usr/share/AAVMF/AAVMF_CODE.fd" # CHANGE ME 107 format = "raw" 108 if = "pflash" 109 unit = "0" 110 readonly = "on" 111 112 [drive "uefi-varstore"] 113 file = "guest_VARS.fd" # CHANGE ME 114 format = "raw" 115 if = "pflash" 116 unit = "1" 117 118 119 # PCI bridge (PCI Express Root Ports) 120 # ========================================================= 121 # 122 # We create eight PCI Express Root Ports, and we plug them 123 # all into separate functions of the same slot. Some of 124 # them will be used by devices, the rest will remain 125 # available for hotplug. 126 127 [device "pcie.1"] 128 driver = "pcie-root-port" 129 bus = "pcie.0" 130 addr = "1c.0" 131 port = "1" 132 chassis = "1" 133 multifunction = "on" 134 135 [device "pcie.2"] 136 driver = "pcie-root-port" 137 bus = "pcie.0" 138 addr = "1c.1" 139 port = "2" 140 chassis = "2" 141 142 [device "pcie.3"] 143 driver = "pcie-root-port" 144 bus = "pcie.0" 145 addr = "1c.2" 146 port = "3" 147 chassis = "3" 148 149 [device "pcie.4"] 150 driver = "pcie-root-port" 151 bus = "pcie.0" 152 addr = "1c.3" 153 port = "4" 154 chassis = "4" 155 156 [device "pcie.5"] 157 driver = "pcie-root-port" 158 bus = "pcie.0" 159 addr = "1c.4" 160 port = "5" 161 chassis = "5" 162 163 [device "pcie.6"] 164 driver = "pcie-root-port" 165 bus = "pcie.0" 166 addr = "1c.5" 167 port = "6" 168 chassis = "6" 169 170 [device "pcie.7"] 171 driver = "pcie-root-port" 172 bus = "pcie.0" 173 addr = "1c.6" 174 port = "7" 175 chassis = "7" 176 177 [device "pcie.8"] 178 driver = "pcie-root-port" 179 bus = "pcie.0" 180 addr = "1c.7" 181 port = "8" 182 chassis = "8" 183 184 185 # SCSI storage controller (and storage) 186 # ========================================================= 187 # 188 # We use virtio-scsi here so that we can (hot)plug a large 189 # number of disks without running into issues; a SCSI disk, 190 # backed by a qcow2 disk image on the host's filesystem, is 191 # attached to it. 192 # 193 # We also create an optical disk, mostly for installation 194 # purposes: once the guest OS has been successfully 195 # installed, the guest will no longer boot from optical 196 # media. If you don't want, or no longer want, to have an 197 # optical disk in the guest you can safely comment out 198 # all relevant sections below. 199 200 [device "scsi"] 201 driver = "virtio-scsi-pci" 202 bus = "pcie.1" 203 addr = "00.0" 204 205 [device "scsi-disk"] 206 driver = "scsi-hd" 207 bus = "scsi.0" 208 drive = "disk" 209 bootindex = "1" 210 211 [drive "disk"] 212 file = "guest.qcow2" # CHANGE ME 213 format = "qcow2" 214 if = "none" 215 216 [device "scsi-optical-disk"] 217 driver = "scsi-cd" 218 bus = "scsi.0" 219 drive = "optical-disk" 220 bootindex = "2" 221 222 [drive "optical-disk"] 223 file = "install.iso" # CHANGE ME 224 format = "raw" 225 if = "none" 226 227 228 # Ethernet controller 229 # ========================================================= 230 # 231 # We use virtio-net for improved performance over emulated 232 # hardware; on the host side, we take advantage of user 233 # networking so that the QEMU process doesn't require any 234 # additional privileges. 235 236 [netdev "hostnet"] 237 type = "user" 238 239 [device "net"] 240 driver = "virtio-net-pci" 241 netdev = "hostnet" 242 bus = "pcie.2" 243 addr = "00.0"