ramdisk-base is just where in ram to load the ramdisk. mkelfImage
to 8M. You are setting it to 20M. With the change to kernels to
them to running at 16M that only leaves 4M for the kernel which I expect
to little. Because mkelfImage is old and the hack is crude I don't mkelfImage is to stupid to realize that we have a problem.
20M is indeed to small.
My understanding is that 20M is a location, not a size.
The ramdisk (incl. kernel modules) is on the order of 26M; I've tried setting it to 32M - this setting is what allows the kernel to actually start; however (as previously mentioned), the kernel is unable to mount the ramdisk.
Because the kernel is looking at 20M and you moved it to 32M?
It seems like you need to adjust something else in your process to move the location of the kernel or initrd, or make the kernel smaller so that 16M + kernel < 20M.