<!DOCTYPE html> <html> <head> <style type="text/css"> body { width: 16cm; margin: auto; } </style> <title>Building a VM with virt-install</title> </head> <body> <h1>Building a VM with virt-install</h1> <h2>Introduction</h2> <p>This assumes that the network will be used in <em>macvtap</em> mode. This is the preferred method, as it is faster than a regular bridge and does not need any additional network configuration on the host.</p> <p>The disadvantage of macvtap is that host-to-vm and vm-to-host communication is blocked. This can be worked around with an <em>internal</em> switch, or by having the macvtap connection bind to a second interface.</p> <h2>Creating the VM</h2> <p>The following command assumes the machine type is <em>linux2020</em> and the network card is <em>eno1</em>. It should be run as the root user or with sudo, and should be run inside tmux for safety.</p> <pre><kbd>virt-install --name <mark>rhel9</mark> \ --osinfo linux2020 \ --boot uefi \ --cdrom <mark>/var/lib/libvirt/isos/rhel-baseos-9.1-x86_64-dvd.iso</mark> \ --disk <mark>/var/lib/libvirt/images/rhel9.qcow2,size=20</mark> \ --network type=direct,source=<mark>enp2s0</mark>,source_mode=bridge \ --graphics vnc \ --console pty,target.type=virtio \ --autoconsole none</kbd></pre> <p>Highlighted paths and names should be changed as appropriate. The VNC port can be found for this example by running <kbd>virsh vncdisplay rhel9</kbd>.</p> <h2>Alternative install options</h2> <p>Import a template image by copying the template into place and replacing <code>--cdrom /path/to/disc.iso</code> with <code>--import</code>. The file size is not needed in the <code>--disk</code> option in this case.</p> <p>PXE-boot a VM by replacing the <code>--cdrom /path/to/disc.iso</code> option with <code>--pxe</code>.</p> <h2>Tips</h2> <p>For a virtio network card on Windows machines, add <code>model=virtio</code> to the <code>--network</code> option.</p> <p>Other useful options are <code>--memory 4096</code> for 4 GB RAM, and <code>--vcpus 2</code> for a dual-CPU guest.</p> <p>A list of supported operating systems can be found by running <kbd>virt-install --osinfo list</kbd>.</p> <p>If the host hypervisor has a bridged network set up already, such as <em>br0</em>, replace the <code>--network</code> option with <code>--network bridge=br0</code>.</p> </body> </html>