[CentOS-virt] Migrating from KVM to XEN - kernel panic

Tue Nov 10 09:35:39 UTC 2009
Pasi Kärkkäinen <pasik at iki.fi>

On Tue, Nov 10, 2009 at 10:20:35AM +0200, Pasi Kärkkäinen wrote:
> On Mon, Nov 09, 2009 at 10:55:48AM -0800, Christopher Hunt wrote:
> >    Pasi,
> >         Thanks very much for the tip.  That did give me some additional
> >    information:
> > 
> >    Scanning and configuring dmraid supported devices
> >    Scanning logical volumes
> >      Reading all physical volumes.  This may take a while...
> >    Activating logical volumes
> >      Volume group "virt01vg00" not found
> >    Creating root device.
> >    Mounting root filesystem.
> >    mount: could not find filesystem '/dev/root'
> >    Setting up other filesystems.
> >    Setting up new root fs
> >    setuproot: moving /dev failed: No such file or directory
> >    no fstab.sys, mounting internal defaults
> >    setuproot: error mounting /proc: No such file or directory
> >    setuproot: error mounting /sys: No such file or directory
> >    Switching to new root and running init.
> >    unmounting old /dev
> >    unmounting old /proc
> >    unmounting old /sys
> >    switchroot: mount failed: No such file or directory
> >    Kernel panic - not syncing: Attempted to kill init!
> >    This brings me back to suspecting the problem is in the different file
> >    structures.  I'm still trying to wrap my head around the other replies in
> >    this thread.
> > 
> 
> Uhmm.. yeah. Sounds like the initrd image is wrong (not correct when
> running as Xen PV guest so it's not setting up the root device properly).
> 
> I recommend take a full backup of the KVM guest disk image, and then continue
> with these steps.
> 
> The easiest way should be, when still running under KVM, to do this in
> the guest:
> 
> - backup /etc/modprobe.conf: cp -a /etc/modprobe.conf /etc/modprobe.conf.backup.kvm
> - edit /etc/modprobe.conf and remove scsi_hostadapter and eth0 lines
> - add these lines:
> alias eth0 xennet
> alias scsi_hostadapter xenblk
> 
> Those changes will make mkinitrd include the correct drivers to initrd
> image.
> 
> Now let's continue in the guest:
> 
> - backup /etc/fstab: cp -a /etc/fstab /etc/fstab.backup.kvm
> - edit /etc/fstab
> - rename /dev/sd* to /dev/xvd* (sda1 becomes xvda1)
> 
> Xen paravirtual guest disks will be called /dev/xvd*
> 
> Now, install kernel-xen: yum install kernel-xen
> 
> After installation check /boot/grub/grub.conf and verify that 
> kernel-xen is the default entry. Also verify the root path kernel
> parameter is correct. Also check the initrd filename for
> kernel-xen, since we'll re-create the initrd image.
> 
> Then create a backup of the kernel-xen initrd image:
> cp -a /boot/initrd-2.6.18-version.img /boot/initrd-2.6.18-version-backup.img
> 
> Then re-create the kernel-xen initrd image, so we can verify it looks correct 
> for a Xen guest:
> 
> mkinitrd -v -f /boot/initrd-2.6.18-version.img 2.6.18-version
> 
> >From the mkinitrd output verify that it includes xenblk and xennet
> drivers (as specified in /etc/modprobe.conf).
> 
> After this shutdown the KVM guest, copy the disk image to Xen host,
> create a Xen configuration file for the guest, and make it use pygrub
> bootloader to load grub settings, kernel and initrd from the guest disk. 
> and try starting it.. 
> 
> (if it still fails, I recommend unpacking the initrd image [1], and
> reading the init script to see where it goes wrong).
>

And here's example /etc/xen/<guest> cfgfile:

name = "testvm"
uuid = "9cf2267d-2513-b6b7-b9d9-19e1962c7bd6"
maxmem = 1024
memory = 1024
vcpus = 1
bootloader = "/usr/bin/pygrub"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
disk = [ "tap:aio:/var/lib/xen/images/testvm.img,xvda,w" ]
vif = [ "mac=00:16:1a:2a:ef:56,bridge=virbr0" ]


or if you're using LVM volumes as storage, then change tap:aio: to phy:
Hopefully those help.

-- Pasi

> Good luck :)
> 
> 
> [1] mkdir /tmp/foo && cd /tmp/foo && zcat /boot/initrd-foo.img | cpio -i -d 
> 
> >    On Sat, Nov 7, 2009 at 2:24 PM, Pasi Kärkkäinen <[1]pasik at iki.fi> wrote:
> > 
> >      On Fri, Nov 06, 2009 at 11:49:41AM -0800, Christopher Hunt wrote:
> >      >    First let me say that I'm not a sysadmin, but am simply wearing
> >      that hat
> >      >    this week so please excuse my ignorance.  I need to temporarily
> >      move some
> >      >    virtual servers from a CentOS-KVM platform to a CentOS-XEN platform
> >      while
> >      >    I do some upgrades to the CentOS box.  I've created a local LV, and
> >      used
> >      >    DD and SCP to transfer the block device from the VKM machine to the
> >      XEN
> >      >    machine.  For quite a while I struggled with the "Error: (2,
> >      'Invalid
> >      >    kernel', 'xc_dom_parse_elf_kernel: ELF image has no shstrtab\n')"
> >      error
> >      >    but thanks to Nick Couchman from
> >      >
> >       [1][2]http://lists.xensource.com/archives/html/xen-users/2008-03/msg00603.html,
> >      >    I've passed that.  Now I'm stuck with a kernel panic situation.
> >      >    Unfortunately the kernel panic error doesn't appear using "xm
> >      console" and
> >      >    flashes so quickly through "virt-viewer" that I can't get any
> >      details.
> >      >
> > 
> >      Stop the guest and edit /etc/xen/<guest> cfgfile.
> > 
> >      Remove (or comment out) the vfb line, and then restart the guest.
> > 
> >      Now you get the full console output to "xm console".
> >      -- Pasi
> > 
> >      _______________________________________________
> >      CentOS-virt mailing list
> >      [3]CentOS-virt at centos.org
> >      [4]http://lists.centos.org/mailman/listinfo/centos-virt
> > 
> > References
> > 
> >    Visible links
> >    1. mailto:pasik at iki.fi
> >    2. http://lists.xensource.com/archives/html/xen-users/2008-03/msg00603.html
> >    3. mailto:CentOS-virt at centos.org
> >    4. http://lists.centos.org/mailman/listinfo/centos-virt
> 
> > _______________________________________________
> > CentOS-virt mailing list
> > CentOS-virt at centos.org
> > http://lists.centos.org/mailman/listinfo/centos-virt
> 
> _______________________________________________
> CentOS-virt mailing list
> CentOS-virt at centos.org
> http://lists.centos.org/mailman/listinfo/centos-virt