[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [Fwd: Installing from distribution CDs]



Ian Pratt wrote:

Thanks for looking into this. I wander if it's something to do with the
way xen packages up the module as an initrd for dom0? Maybe there's some
difference between an initrd and a ramdisk?
Didn't have time this afternoon but I was able to look into it more this evening and I found the culprit. In arch/i386/kernel/setup.c there was the following line around L1363:

ROOT_DEV = MKDEV(RAMDISK_MAJOR,0); /*old_decode_dev(ORIG_ROOT_DEV);*/

This defaults the root device to /dev/ram0 instead of trying to get it from the boot loader. I'm not sure why this there (perhaps a part of early development?). I've attached a patch that puts back the old_decode_dev call and the behavior becomes exactly what you'd expect: if no root= is specified, initrd still works but if /linuxrc exits you get a VFS error because no root= is specified.

This is what Linux would normally do.

It's very important to note though that applying this patch means that if people had ramdisk=... lines in their configs and didn't have root=/dev/ram0, their machines won't boot anymore.

A solution would be to add an initrd option to the configuration file and have the ramdisk= option default the root device to /dev/ram0.

I've tested this patch on a couple day old copy of xen-unstable. I'm curious to know what the source of this was though because I don't feel very comfortable with just restoring something that was obviously taken out for a reason..

Regards,
Anthony Liguori

Signed-off-by: Anthony Liguori
--- linux-2.6.10-xen-sparse/arch/xen/i386/kernel/setup.c~       2005-01-25 
22:29:18.000000000 -0600
+++ linux-2.6.10-xen-sparse/arch/xen/i386/kernel/setup.c        2005-02-02 
18:54:52.722236000 -0600
@@ -1360,7 +1360,7 @@
                efi_enabled = 1;
 #endif
 
-       ROOT_DEV = MKDEV(RAMDISK_MAJOR,0); /*old_decode_dev(ORIG_ROOT_DEV);*/
+       old_decode_dev(ORIG_ROOT_DEV);
        drive_info = DRIVE_INFO;
        screen_info = SCREEN_INFO;
        edid_info = EDID_INFO;

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.