Virtualization with QEMU, KVM and Libvirt Training Course


14 hours (usually 2 days including breaks)


General Linux command line skills, working TCP/IP knowledge


This practical course contains topics addressed to system administrators, developers, embedded developers and ordinary desktop users (including managers) who would like to have an introduction to virtualization in general. After this course, administrators will be able to create private clouds for use in production, and developers will be able to test their code on multiple operating systems without needing a second PC or a non-x86 board.

We understand that the set of topics presented in this course covered a wide range of subjects that might not be applicable for all customers. When booking this course, please specify what you wish to achieve using QEMU or KVM, and we will customize it by reallocating time from less relevant topics to the ones that would be important for you.

Course Outline

Day 1

  • “Big picture” of the virtualization ecosystem
  • History of QEMU development
  • CPU features related to virtualization
  • Installing QEMU from packages
  • Installing QEMU from source
  • Full-system emulators
  • Using the QEMU console
  • Available machine types and peripheral devices
  • VirtIO
  • Guest drivers
  • Disk image formats
  • Managing virtual machine snapshots
  • Networking in virtual machines
  • Graphics adapters
  • Audio devices
  • Nested virtualization
  • User-level emulators
  • Registration of foreign binaries through binfmt-misc
  • Cross-architecture chroots and containers

Day 2

  • The role of Libvirt in the virtualization ecosystem
  • Supported hypervisors and container technologies
  • QEMU Machine protocol (QMP)
  • Running QEMU headless
  • QXL video card and SPICE display
  • Available SPICE viewers
  • Creating virtual machines with “virt-install” and “virt-clone” command-line tools
  • Using “virt-manager” graphical application to create and run virtual machines
  • Editing virtual machine configuration and libvirt settings with “virsh” low-level tool
  • Using libguestfs tools (guestfish, virt-sysprep) to manipulate disk image contents
  • Networking and firewall in libvirt
  • Accessing libvirt remotely
  • Overview of web-based frontends for libvirt
  • Highlights from recent KVM-related conferences

Bonus topics available in classroom only (i.e. only short descriptions, not demonstrations, are available in remote courses):

  • Running Mac OS X in KVM (if at least one participant has a Mac with Linux installed)
  • 3D graphics with VirGL
  • 3D graphics with Intel GPU (must be of Broadwell, Skylake or early Kabylake family, i.e. 5th-7th generation, not later) and igvtg, or the equivalent “mediated passthrough” for NVidia Quadro and Tesla cards
  • Video card passthrough (if there is a desktop available with two video cards, ideally AMD)
  • USB device pass-through

Leave a Reply

Your email address will not be published. Required fields are marked *