
Hi Robert,
Can anybody help me? I'm working on this for a few days...
I'm working on a custom developed board, with Au1200, and I'd like to use the U-Boot as bootloader. I ported the U-Boot to my board, made a Linux kernel image, and a ramdisk image.
To try out the configuration, I burn the U-Boot image into the flash (it works well), and after I start the board, it download the kernel image and the ramdisk image through TFTP. I'm using the following two commands:
tftp 81000000 uImage tftp 81FFFFC0 uRamdisk
I set the bootargs variable to: root=\dev\ram (I used: set bootargs root=/dev/ram)
root=/dev/ram is definitely correct. It was MS-DOS a while ago, which switched the '/'s to ''s on stealing the hierarchical file system concept from Unix ;)
But when I'm trying to start the Linux with the
bootm 81000000 81FFFFC0
the Linux can't find the ramdisk. It write out:
Initrd not found or empty - disabling initrd
But when I set its address into the bootargs (so the bootargs: root=/dev/ram rd_start=0x82000000 rd_size=0x191160), it works well; it successfully find the image, and can mount it.
How does the U-Boot pass the ramdisk information?
This is highly specific to the architecture. Looking into MIPS code, it an environment like datastructure is built and passes that to the kernel (lib_mips/bootm.c).
It sets some kind of environment variables in the bootm.c.
Right, that's what I see also.
But it doesn't work for me. Why?
I can't help you here, the best thing would be to debug this. Maybe the MIPS kernel changed the way the environment is passed?
Cheers Detlev