In OnApp Cloud platform, we can create the custom template (Image) of any running reference VM, which can be used to create VMs with similar configuration.
Sometimes, when we create a VM using a user template, it may not boot. If we get into the console, the booting process will be stuck at GRUB with the error message:
Error 15: File not found
This means that the defined kernel image in the grub.conf couldn’t be found.
How does this could happen? We created an image from a perfectly running VM, but the cloned VM fails to boot. Here comes the OnApp play its role.
The OnApp will overwrite many configurations including /etc/fstab, ifcfg-eth0 etc with new one matching with new VM environment. For the grub.conf, it keeps many versions for different virtualization and overwrites the grub.conf with one of the templates matching with the virtualization of the new VM.
/boot/grub/grub.conf.kvm /boot/grub/grub.conf.kvm_virtio /boot/grub/grub.conf.xen
When we update the Kernel over time, the new kernel images will be added to grub.conf and old ones will be removed too. These changes won’t be added to the grub templates automatically.
The reference VM will boot into the new kernel after reboot. But, the VMs created using its template will try to load the old kernel image defined in the grub template.
To fix this, simply update the grub templates matching with the current configuration. Each grub template differs in the root device’s path.
An example is given below:
title CentOS (2.6.32-696.18.7.el6.x86_64) root (hd0,0) kernel /boot/vmlinuz-2.6.32-696.18.7.el6.x86_64 ro root=/dev/xvda1 rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=auto console=tty0 initrd /boot/initramfs-2.6.32-696.18.7.el6.x86_64.img
The root device in the above entry is root=/dev/xvda1 which for Xen virtualization technology.
The different root device names are given below:
|Virtualization||GRUB template name||Root device name|
|KVM (Virt IO)||grub.conf.kvm_virtio||root=/dev/vda1|