AnsweredAssumed Answered

Problem for making kernel for imx6DQ board

Question asked by Qian Cui on Dec 23, 2014
Latest reply on Jan 14, 2015 by alejandrolozano

Dear all.


Because of the project requriement, I need to compile the kernel to replace the original one. Lacking of the Android compiling environment, so I decided to unpacking the original boot.img, and replace the kernel image and then pack it again through the tools mkbootimg


  1. I followed the User Guide to compile the kernel using make uImage, and then cp the uImage to the path where I wanted to pack boot.img, but it didn't work.
  2. Then I compared the uImage and orginal kernel image which I got from unpacking, and I found that the uImage owned an external header including some description of the kernel. My informatin is like this, 'Linux-3.0.35-06522-xxxxxxx' and other dump information
  3. So I suspected that maybe zImage should be the right one. After the test, I got that point.


So my question is what's the function of uImage. As the User Guide said, the uboot can only boot the image which is added by 'mkimage' tool. But the truth is not like that.


Here the text I extract from the User Guilde elaborating the function of mkimage


Any image that should be loaded by U-Boot must have an unique image head. For

example, data must be added at the head of the loaded image to tell U-Boot about the

image (i.e., it's a kernel, or ramfs, etc) and how to load the image (i.e., load/execute

address). Before you can load any image into RAM by U-Boot, you need a tool to add

this information and generate a new image which can be recognized by U-Boot. The tool

is delivered together with U-Boot. After you set up U-Boot using the steps outlined

above, you can find the tool (mkimage) under tools/. The process of using mkimage to

generate an image (for example, kernel image and ramfs image), which is to be loaded by

U-Boot, is outlined in the subsequent sections of this document.