title: How does U-Boot find the kernel? Does it need to know exact address
body: <p>I am new to Linux programming on embedded systems. I wish to understand more about embedded bootloaders and U-boot. My main question no doubt is generic, but i'm trying to understand how U-boot finds the Linux kernel exactly.</p>
  
  <p>Being more specific, I am using a BeagleBone Black. I have an SD card partitioned as follows (taken from an online example) , a FAT32 partition containing the MLO + U-Boot, an EXT4 partition containing the kernel + device tree and another EXT4 partition containing the rootfs.</p>
  
  <p>I understand that the ROM primary bootloader loads first, locates the MLO file in the FAT partition which then passes control to U-Boot. </p>
  
  <p>How does U-Boot then finally locate the kernel exactly? Is this related to the uEnv.txt boot configuration file? I understand that there is a learning curve with U-Boot which takes some reading, but just to get some knowledge in advance.</p>
  
  <p>What happens now if I change the SD card image and put more partitions and try to boot from it, with the kernel on a different partition? Do I need to tell U-Boot specifically where to find the kernel, or will it keep searching until it finds it?</p>