blob: d267e8ed4d71403e6eef800b0e26f2c3587d836f (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
QEMU does not reload kernel image on guest reboot (direct kernel boot)
Description of problem:
I am using virtiofs as root filesystem with QEMU direct kernel boot. The kernel is loaded from the guests directory structure that is exported from the host.
The problem is that QEMU does not reload the kernel image file from disk during a guest reboot. This means it is not possible to update the kernel from inside the guest and do a simple reboot to load it. A full power cycle of the guest is required to load the updated kernel image.
Steps to reproduce:
1. Migrate a Linux guest to virtiofs as root fs.
2. Enable QEMU direct kernel boot and point to guest's kernel in the exported root filesystem.
3. Boot.
4. Update the kernel inside the guest. Overwrite the existing kernel image
5. Issue `reboot` inside the guest.
6. When the guest reboots, the old kernel is still booted, even though the image file was overwritten.
7. Issue `poweroff` inside the guest.
8. Issue `virsh start <guest-vm>`
9. Now the new kernel image is booted.
Additional information:
XML:
```
<type arch='x86_64' machine='pc-q35-7.0'>hvm</type>
<kernel>/media/vm/libvirt/images/alpine-q/root/boot/vmlinuz-virt</kernel>
<initrd>/media/vm/libvirt/images/alpine-q/root/boot/initramfs-virt</initrd>
<cmdline>rootfstype=virtiofs root=root rw</cmdline>
<boot dev='hd'/>
<bootmenu enable='no'/>
</os>
...
<filesystem type='mount' accessmode='passthrough'>
<driver type='virtiofs'/>
<binary path='/usr/libexec/virtiofsd' xattr='on'>
<cache mode='always'/>
<lock posix='on' flock='on'/>
</binary>
<source dir='/media/vm/libvirt/images/alpine-q/root'/>
<target dir='root'/>
<address type='pci' domain='0x0000' bus='0x09' slot='0x00' function='0x0'/>
</filesystem>
```
|