An Xen-based system is started through the GRUB2 bootloader by using (for example) something like: echo 'Loading Xen xen ...' multiboot2 /boot/xen.gz placeholder echo 'Loading Linux 5.4.0-72-lowlatency ...' module2 /boot/vmlinuz-5.4.0-72-lowlatency placeholder root=... ro quiet splash echo 'Loading initial ramdisk ...' module2 --nounzip /boot/initrd.img-5.4.0-72-lowlatency Notice that: - The "xen.gz" executable is used as a kernel - The real kernel (vmlinuz-5.4.0-72-lowlatency) and its initramfs (initrd.img-5.4.0-72-lowlatency) are loaded as modules - Remember? A module is some kind of "binary blob" loaded by the bootloader (integrated in qemu, in this case) without parsing it The "xen.gz" executable will read the first module (the "vmlinuz-..." Linux kernel) from memory, parse it (as a compressed Linux kernel) and relocate it in memory, so that it can be executed. The Linux kernel is then started and finds its compressed initramfs in memory, using it to populate the initial ramdisk filesystem (by uncompressing and extracting the CPIO archive).