First, a few details about the setup:
- Linux-3.14.1
- ARM am335x chip
- U-Boot bootloader
What I am trying to achieve:
- U-Boot loads a kernel that contains an initramfs (call this kernel 1).
- U-Boot executes this kernel.
- Kernel 1 loads kernel 2, which contains no embedded initramfs. It uses an NFS root.
- Kernel 1 executes kernel 2.
The problem:
Kernel 1 fails to execute kernel 2; this is the last thing I see:
[ 8.819174] Starting new kernel [ 8.822539] Bye!
Key Points:
- Kernel 1 and kernel 2 both have the same configuration apart from the initramfs-related settings. They both have kexec enabled.
- Kernel 1 can kexec another kernel 1, and this can successfully bootloop.
- Kernel 2 can be booted directly from U-Boot successfully.
- Kernel 1 and 2 use the same device tree.
Possible Problems:
- I may have the kernel command line options wrong for the NFS root; however, these were mostly copied from what worked with U-Boot.
- I think if there were a problem with the root file system, I would see at least something on the console.
Further thoughts:
- Maybe it is something to do with large difference in kernel sizes (k1=4523344, k2=2859240).
Any help is much appreciated.