|  |  | 
  
    |  |  | 
 
  |   |  | 
  
    |  |  | 
  
    |  |  | 
  
    |   xen-devel
Re: [Xen-devel] [Fwd: Installing from distribution CDs] 
| 
Ian Pratt wrote:
 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:
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?
 
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;
 | 
 |  | 
  
    |  |  |