61 lines
2.2 KiB
Text
61 lines
2.2 KiB
Text
Building a VM with virt-install
|
||
|
||
|
||
Introduction
|
||
|
||
This assumes that the network will be used in "macvtap" 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.
|
||
|
||
The disadvantage of macvtap is that host-to-vm and vm-to-host
|
||
communication is blocked. This can be worked around with an
|
||
"internal" switch, or by having the macvtap connection bind to a
|
||
second interface.
|
||
|
||
|
||
Creating the VM
|
||
|
||
The following command assumes the OS is "rhel9.1" and the network
|
||
card is "eno1". It should be run as the root user or with sudo, and
|
||
should be run inside tmux for safety.
|
||
|
||
virt-install --name rhel9 \
|
||
--osinfo rhel9.1 \
|
||
--boot uefi \
|
||
--cdrom /var/lib/libvirt/isos/rhel-baseos-9.1-x86_64-dvd.iso \
|
||
--disk /var/lib/libvirt/rhel9.qcow2,size=20 \
|
||
--network type=direct,source=enp2s0,source_mode=bridge \
|
||
--graphics vnc \
|
||
--console pty,target.type=virtio \
|
||
--autoconsole none
|
||
|
||
Paths and names should be changed as appropriate. The VNC port can be
|
||
found for this example by running "virsh vncdisplay rhel9".
|
||
|
||
|
||
Alternative install options
|
||
|
||
Import a template image by copying the template into place and
|
||
replacing "--cdrom /path/to/disc.iso" with "--import". The file size
|
||
is not needed in the --disk option in this case.
|
||
|
||
PXE-boot a VM by replacing the "--cdrom /path/to/disc.iso" option
|
||
with "--pxe".
|
||
|
||
|
||
Tips
|
||
|
||
For a virtio network card on Windows machines, add "model=virtio" to
|
||
the --network option.
|
||
|
||
Other useful options are "--memory 4096" for 4 GB RAM, and
|
||
"--vcpus 2" for a dual-CPU guest.
|
||
|
||
A list of supported operating systems can be found by running:
|
||
|
||
virt-install --osinfo list
|
||
|
||
If the host hypervisor has a bridged network set up already, such as
|
||
br0, replace the --network option with:
|
||
|
||
--network bridge=br0
|