I finally figured out a small part of the problem... My initrd_start was overwritten (to 0) by the function start_kernel in init/main.c :
#ifdef CONFIG_BLK_DEV_INITRD if (initrd_start && !initrd_below_start_ok && initrd_start < min_low_pfn << PAGE_SHIFT) { printk(KERN_CRIT "initrd overwritten (0x%08lx < 0x%08lx) - " "disabling it.\n",initrd_start,min_low_pfn << PAGE_SHIFT); initrd_start = 0; } #endif I don't really understand this function... Why would my initrd be overwritten?!? Anyways, I commented it out to see what would happen. This time, it opened the root device (in function mount_root()) but didn't go very far: sb = get_super(ROOT_DEV); if (sb) { fs_type = sb->s_type; goto mount_it; } ... panic("VFS: Unable to mount root fs on %s", kdevname(ROOT_DEV)); sb is NULL. Damn.. What now? Is it possible that my initrd has been erased like the kernel told me? What else could it be? I was also wondering if I loaded the kernel correctly. I put my zImage+initrd (zvmlinux.initrd) at address 0 of ram. Since I compiled the kernel with debug symbols, it takes a few Megs... Could it be too large for it's own good? Maybe somebody knows about the answer to that one! By the way, I forgot to mention it in the first email but I'm using linux-2.4.0-test2. S?bastien C?t? ** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/