Skip to main content
  1. Posts/

Direct Kernel Boot in Libvirt

2 mins
libvirt libvirt kvm
Table of Contents

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

Related

Mengubah Data SMBIOS System Information di libvirt
2 mins
libvirt libvirt kvm
Menghubungkan USB Host ke KVM Libvirt
1 min
libvirt kvm libvirt
Using QEMU Guest Agent with libvirt
1 min
libvirt kvm libvirt
How to Use QEMU to Emulate Storages Devices
5 mins
libvirt kvm libvirt
Mengatasi Error Disk SCSI Tidak Terdeteksi di KVM Libvirt
1 min
libvirt kvm libvirt
KVM guest with SSD and NVMe in Libvirt
3 mins
libvirt kvm libvirt