Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Programming
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Databases
Mail Systems
openSolaris
Eclipse Documentation
Techotopia.com
Virtuatopia.com
Answertopia.com

How To Guides
Virtualization
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Windows
Problem Solutions
Privacy Policy

  




 

Problem: A Xen Guest OS fails to boot with a "Xen Guest OS Fails to Boot with Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)" error message.


The most common cause of this problem is that the guest operating system requires a RAM Disk as part of the intial phases boot process and one has not been defined in the Xen configuration file.

A typical Xen configuration file which causes this problem to occur might appear as follows:

kernel = "/boot/vmlinuz-2.6.18-53.1.14.el5xen"
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"

The key line missing from the above configuration file is the "ramdisk = " directive.

There are couple of options to address this issue. One option is to use the RAM Disk already installed on the system (assuming compatibility between the host and guest operating systems). This is located in the /boot directory of the root filesystem of the host operating system. It is important to use the version of the RAM Disk file that matches the kernel specified in the Xen guest configuration file. The current kernel release can be obtained using the ''uname'' command:

uname -r
2.6.18-53.1.14.elxen

In order to find the kernel and RAM Disk files associated with the release of the kernel we can execute the following command:

ls /boot/*$(uname -r)*
/boot/config-2.6.18-53.1.14.el5xen      /boot/System.map-2.6.18-53.1.14.el5xen
/boot/initrd-2.6.18-53.1.14.el5xen.img  /boot/vmlinuz-2.6.18-53.1.14.el5xen
/boot/symvers-2.6.18-53.1.14.el5xen.gz

In the above output we can see that the kernel file is named vmlinuz-2.6.18-53.1.14.el5xen, while the corresponding RAM Disk is called initrd-2.6.18-53.1.14.el5xen.img. To specifiy this file in our Xen configuration file we need to add the a ramdisk line as follows:

kernel = "/boot/vmlinuz-2.6.18-53.1.14.el5xen"
ramdisk = "/boot/initrd-2.6.18-53.1.14.el5xen.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"

Unfortunately, using the system supplied RAM Disk can sometimes lead to boot problems assocated with conflicts with SCSI drivers. Another, and better option is to create a new RAM Disk file that does not contain SCSI modules and then reference this file in the Xen configuration file:
mkinitrd --omit-scsi-modules --with=xennet --with=xenblk --preload=xenblk initrd-$(uname -r).img $(uname -r)

 
 
  © Copyright 2005-2010 Linuxtopia. All Rights Reserved.