>> >But the kernel prints the boot parameters just fine. >> >> Maybe because i defined it in kernel configuration! But from u-boot i don?t >> get any arguments.
>Then you must be using a wrong image type. Are you sure you use "make >uImage" to build your kernel image for U-Boot? No, i?m using kernel 2.6.11.6 from kernel.org. It?s compiled with the actual ELDK and made with "make uImage". >> I thougt i can give the linux kernel position from u-boot where initrd is >> located, but i have the same problem. >You don;t. U-Boot passes this information automatically. >> RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize >> loop: loaded (max 8 devices) >> VFS: Cannot open root device "<NULL>" or unknown-block(3,1) >> Please append a correct "root=" boot option >> Kernel panic - not syncing: VFS: Unable to mount root fs on >> unknown-block(3,1) >Block device 3, 1 is /dev/hda1 - is your ramdisk known to be working? Ramdisk is from ELDK build with mkimage like mentioned in FAQ. I debugged to see what happens. First of all machine init in \arch\ppc\kernel\setup.c is called. In this function a call to platform_init is made. But the platform init of my own board files are called not the implementation of setup.c which is only available if CONFIG_PPC_MULTIPLATFORM is set. In my own platform_init is only a call to find_bootinfo which is resulting in NULL because rec->tag is 0. That?s the reason why parse_bootinfo don?t set the CMD_LINE, etc.. struct bi_record *find_bootinfo(void) { struct bi_record *rec; rec = (struct bi_record *)_ALIGN((ulong)__bss_start+(1<<20)-1,(1<<20)); if ( rec->tag != BI_FIRST ) { /* * This 0x10000 offset is a terrible hack but it will go away when * we have the bootloader handle all the relocation and * prom calls -- Cort */ rec = (struct bi_record *)_ALIGN((ulong)__bss_start+0x10000+(1<<20)-1,(1<<20)); if ( rec->tag != BI_FIRST ) return NULL; } return rec; } In this line rec is set to 0xc0300000 rec = (struct bi_record *)_ALIGN((ulong)__bss_start+(1<<20)-1,(1<<20)); if definitions are in both lines true because rec->tag is 0 in this line rec address is also 0xc0300000 rec = (struct bi_record *)_ALIGN((ulong)__bss_start+0x10000+(1<<20)-1,(1<<20)); The following line in my own board.c platform_init gets the board information. So u-boot pass the informations quite well. if (r3) __res = *(bd_t *)(r3 + KERNELBASE); So what is wrong with my find_bootinfo function? Why is rec->tag zero? Thx for advice, David