Direct Kernel Boot in Libvirt

Direct kernel boot memungkinkan VM dapat booting menggunakan kernel yang tersimpan di Host server sehingga sering kali berguna jika Anda menghadapi case dimana VM tidak dapat booting karena kernel yang rusak atau corrupt.

Get Kernel

Anda bisa menggunakan kernel baik dari Host server atau mengambil dari VM yang lain dengan perintah virt-get-kernel

virt-get-kernel [--options] -d domname

virt-get-kernel [--options] -a disk.img

Saya sarankan untuk menggunakan versi kernel yang sama, misalkan VM dengan kernel yang rusak sebelumnya memakai kernel 4.x maka kernel untuk direct boot harus sama 4.x atau Anda dapat mengambilnya dari VM dengan sistem operasi yang sama. Hal ini agar module kernel dapat diload dengan baik dan service yang terinstall bisa berjalan normal.

# virt-get-kernel -d domname -o /var/lib/libvirt/boot/
download: /boot/vmlinuz-4.18.0-477.10.1.el8_8.x86_64 -> /var/lib/libvirt/boot/vmlinuz-4.18.0-477.10.1.el8_8.x86_64
download: /boot/initramfs-4.18.0-477.10.1.el8_8.x86_64.img -> /var/lib/libvirt/boot/initramfs-4.18.0-477.10.1.el8_8.x86_64.img

Configure XML

Setelah file kernel tersimpan, selanjutnya edit XML pada VM yang akan digunakan untuk direct boot.

virsh edit domname
<os>
  <type arch='x86_64' machine='pc-q35-6.2'>hvm</type>
  <kernel>/var/lib/libvirt/boot/vmlinuz-4.18.0-477.10.1.el8_8.x86_64</kernel>
  <initrd>/var/lib/libvirt/boot/initramfs-4.18.0-477.10.1.el8_8.x86_64.img</initrd>
  <cmdline>root=/dev/vda2 ro console=ttyS0,115200n8</cmdline>
  <boot dev='hd'/>
</os>

Pastikan Anda mengeditnya dibawah attribut <os> dan pada element <cmdline> sesuaikan dengan partisi root yang digunakan.

Start VM untuk memulai pengetesan.

virsh start domname

Kemudian akses console VM.

$ virsh console domname 
Connected to domain 'domname' Escape character is ^] (Ctrl + ])

Rocky Linux 8.8 (Green Obsidian)
Kernel 4.18.0-477.10.1.el8_8.x86_64 on an x86_64

Activate the web console with: systemctl enable --now cockpit.socket

domname login:

Jika versi Kernel sama maka percobaan direct boot berhasil.

Kernel 4.18.0-477.10.1.el8_8.x86_64 on an x86_64