A Xen Guest OS fails to boot with a "switchroot: mount failed: No such file or directory error message" error message.
The typical full output from this type of Xen Guest OS boot failure is as follows:
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 Booting has failed.
The most common cause of this problem is a conflict of SCSI modules. In order to resolve this it is necessary to create a new initrd initialization RAM Disk without SCSI modules, and then use this to boot the guest Linux operating system. This can be achieved using the following command:
mkinitrd --omit-scsi-modules --with=xennet --with=xenblk --preload=xenblk initrd-$(uname -r)-no-scsi.img $(uname -r)
Once the new initrd image file has been generated simply refer to it in the "ramdisk" line of the Xen configuration file, for example:
kernel = "/boot/vmlinuz-2.6.18-53.1.14.el5xen" ramdisk = "/home/xen/initrd-2.6.18-53.1.14.el5xen-no-scsi.img" memory = 512 name = "centos.5-1" vif = [ '' ] dhcp = "dhcp" disk = ['tap:aio:/home/nas/xen/byhand/centos.img,xvda1,w', 'tap:aio:/home/nas/xen/byhand/centos.swap,xvda2,w'] root = "/dev/xvda1 ro"