
Introduction of QEMU, explaining the difference among system emulation, user emulation, and virtualization.
Demonstrate how to install QEMU binary on Linux and how to make QEMU build from source code.
Demonstrates installing Alpine Linux on VM. And enables host port forwarding and accelerator of KVM.
Introduces system emulation, including the options specifying machine type, CPU model, and accelerator.
Introduces the options of CPUs and memory, including how to add/remove hot-pluggable CPU and memory.
Introduces the options for NUMA emulation.
Introduces the three ways to define block devices.
Introduces the file based block device, and the create and info command of qemu-img tool.
Introduces image file format raw, and the sub option of preallocation.
Introduces image file format qcow2.
Introduces backing file, and the create, commit, and rebase command of qemu-img.
Introduces how to create, list, apply, and delete snapshots from QEMU monitor and with qemu-img.
Introduces the format options of qcow2, cluster_size, preallocation, and refcount.
Introduces image file format of luks.
Introduces the protocol-based block device, NBD and 9PFS. The image file can be exposed locally or remotely via network with NBD. With 9PFS, the host can mount the image file with Plan 9 Filesystem protocol.
Introduces the display option of gtk, vnc, non, and -nographic.
Introduces QEMU user network, and how to have two VMs using user network talk to each other.
Introduces Bridge + TAP network, including network backend of tap and bridge.
Introduces Socket network, including the TCP-based one, and the UDP multicasting one.
Introduce Stream network, using inet socket, unix domain socket, or file descriptor.
Introduces DGRAM network, including UDP multicasting and bidirectional UDP channels.
Introduces Passt server and Passt network, including how to make system emulator with Passt support for Passt network backend.
Summaries the network backends of user, bridge, tap, socket, stream, dgram, and passt.
Introduces the options of -boot, -bios, -pflash, -kernel, -append, and -initrd.
Introduces serial port and character device, -serial and -chardev.
QEMU is the open-source tool for system emulation, user-space emulation, and virtualization. It contains a lot of features and options for emulation. This course will teache you how to use QEMU for system emulation. It includes the following topics.
1. Install QEMU with binary and make QEMU from source code;
2. Install and start virtual machine with QEMU system emulator;
3. Define machine type, virtual CPUs, and memory for virtual machine with QEMU system emulator;
4. Define NUMA nodes for the emulation of NUMA architecture machine;
5. Introduce QEMU image file formats like raw, qcow2, and luks, and demonstrate how to use them;
6. Demonstrate the qcow2 features of backing file, and snapshots;
7. Define the emulated block device with QEMU image file, NBD (Network Block Device), and 9PFS (Plan 9 Filesystem);
8. Introduce QEMU display options like VNC;
9. Introduce the virtual networks like user network, bridge + tap network, socket network, stream network, dgram network, and passt network;
10. Introduce QEMU boot options like -boot, -bios, -pflash, -kernel, -append, and -initrd;
11. Introduce the serial port option and the character devices like file, stdio, socket, pty, and hub.
This course provides many sample script files of the above QEMU features, and demonstrates them with script files, so that you can set up your own virtual machine referring to them.