๐ŸŽ New User? Get 20% off your first purchase with code NEWUSER20 ยท โšก Instant download ยท ๐Ÿ”’ Secure checkout Register Now โ†’
Menu

Categories

virt-install Command

Advanced Virtualization man(1)

Create and install KVM virtual machines

๐Ÿ‘ 121 views ๐Ÿ“… Updated: May 1, 2026
SYNTAX
virt-install [OPTIONS]

What Does virt-install Do?

The virt-install command creates new KVM/QEMU virtual machines and begins the guest OS installation process. It provisions VM resources (CPU, memory, disk, network), connects installation media (ISO, network, PXE), and starts the installer โ€” all from the command line.

virt-install is the standard way to create VMs on Linux KVM hosts. It generates the libvirt XML domain definition and handles the complexities of QEMU command-line arguments, making VM creation straightforward. It supports a wide range of installation methods: local ISO files, network installs (HTTP/FTP), PXE boot, existing disk images (cloud images), and import from other hypervisors.

For cloud and automation workflows, virt-install supports cloud-init, unattended installations (preseed/kickstart), and headless operation โ€” enabling fully automated VM provisioning without interactive installers. Combined with virsh for lifecycle management and qemu-img for disk management, virt-install completes the KVM administration toolkit.

Options & Flags

OptionDescriptionExample
--name NAME Set the VM name --name webserver
--ram SIZE Set memory in MB (or --memory) --ram 2048
--vcpus N Set number of virtual CPUs --vcpus 2
--disk Define storage (size, path, format) --disk size=20,format=qcow2
--cdrom FILE Attach ISO for installation --cdrom /iso/ubuntu-22.04.iso
--os-variant NAME Optimize for specific OS --os-variant ubuntu22.04
--network Configure network (bridge, NAT, etc.) --network bridge=br0
--graphics Set display type (vnc, spice, none) --graphics vnc,listen=0.0.0.0
--noautoconsole Do not automatically open console --noautoconsole
--import Import existing disk (skip installation) --import --disk path=/images/cloud.qcow2

Practical Examples

#1 Create VM from ISO

Create a 2GB RAM, 2 vCPU VM with 20GB disk. Boots from Ubuntu ISO with VNC console for installation.
$ virt-install --name webserver --ram 2048 --vcpus 2 --disk size=20,format=qcow2 --cdrom /iso/ubuntu-22.04-server.iso --os-variant ubuntu22.04 --network bridge=br0 --graphics vnc

#2 Create from cloud image

Import a pre-built cloud image with cloud-init for initial configuration. No installation needed.
$ virt-install --name cloudvm --ram 2048 --vcpus 2 --import --disk path=/images/ubuntu-cloud.qcow2 --os-variant ubuntu22.04 --network bridge=br0 --cloud-init root-password-generate=on --noautoconsole

#3 Minimal headless server VM

Network install with serial console only โ€” fully headless. Perfect for server VMs.
$ virt-install --name dbserver --ram 4096 --vcpus 4 --disk size=50 --location https://mirror.example.com/ubuntu/dists/jammy/main/installer-amd64/ --os-variant ubuntu22.04 --network bridge=br0 --graphics none --console pty,target_type=serial --extra-args "console=ttyS0"

#4 Automated install with kickstart

Unattended RHEL installation using a kickstart file. VM installs itself without user interaction.
$ virt-install --name rhelvm --ram 2048 --vcpus 2 --disk size=30 --location /iso/RHEL-9.iso --os-variant rhel9.0 --initrd-inject /path/ks.cfg --extra-args "inst.ks=file:/ks.cfg console=ttyS0" --noautoconsole

#5 VM with multiple disks

Create VM with two disks: 20GB for OS and 100GB for data storage.
$ virt-install --name fileserver --ram 4096 --vcpus 2 --disk size=20 --disk path=/images/data.qcow2,size=100 --cdrom /iso/ubuntu.iso --os-variant ubuntu22.04 --network bridge=br0

#6 List available OS variants

Find the correct --os-variant value. The variant optimizes virtio drivers, disk bus, and other settings.
$ osinfo-query os | grep -i ubuntu

Tips & Best Practices

Always use --os-variant: os-variant optimizes VM hardware for the guest OS (virtio drivers, bus types, timer settings). List options: osinfo-query os or virt-install --osinfo list
Cloud images save time: Use pre-built cloud images with --import instead of installing from ISO. Download from cloud-images.ubuntu.com or similar. Combined with cloud-init, VMs are ready in seconds.
Bridge vs NAT networking: Use --network bridge=br0 for VMs that need to be accessible from the network. Default NAT (--network default) only allows outbound connections from the VM.
Use --noautoconsole for scripting: Add --noautoconsole when running virt-install in scripts. Otherwise the command blocks waiting for you to interact with the console.

Frequently Asked Questions

How do I create a VM in Linux from command line?
virt-install --name myvm --ram 2048 --vcpus 2 --disk size=20 --cdrom /path/to.iso --os-variant generic --network bridge=br0. This creates and starts installation.
How do I create a VM from a cloud image?
Download the cloud image, then: virt-install --name vm --import --disk path=cloud-image.qcow2 --ram 2048 --vcpus 2 --cloud-init root-password-generate=on --noautoconsole
How do I install Ubuntu on KVM?
virt-install --name ubuntu --ram 2048 --vcpus 2 --disk size=25 --cdrom ubuntu-22.04.iso --os-variant ubuntu22.04 --network bridge=br0 --graphics vnc. Connect via virt-viewer or VNC client.
How do I automate VM installation?
Use kickstart (RHEL/CentOS) or preseed (Debian/Ubuntu) with --initrd-inject and --extra-args. Or use cloud images with cloud-init for instant provisioning.

Download Virtualization Cheat Sheet

PDF Virtualization
View all 31 Linux command cheat sheets โ†’

Master Linux with Professional eBooks

Curated IT eBooks covering Linux, DevOps, Cloud, and more

Browse Books โ†’