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