AnsweredAssumed Answered

Changing kernel provider in Yocto doesn't update sdcard image

Question asked by Craig McQueen on Nov 10, 2014
Latest reply on Nov 10, 2014 by Fabio Estevam

I'm trying out Yocto to build core-image-minimal for imx28evk. I was able to build with the linux-imx kernel provider (which builds a 2.6.35 kernel), and then switch to linux-fslc kernel provider (3.14.19 kernel). That seemed fine.

 

But now I am trying to switch back to linux-imx kernel provider, to check some things with the 2.6.35 kernel. But when I write the sdcard image then boot, I find the sdcard image still contains the 3.14.19 kernel.

 

I tried:

 

bitbake -c cleansstate linux-fslc
bitbake -c cleansstate linux-imx
bitbake core-image-minimal

 

But still the sdcard image contains the 3.14.19 kernel.

 

I had a closer look at what's in the build/tmp/deploy/images/imx28evk directory. Here is the latest .sdcard file, and the latest uImage file:

 

-rw-r--r-- 1 craigm craigm 83886080 Nov 10 16:25 core-image-minimal-imx28evk-20141110052334.rootfs.sdcard
-rw-r--r-- 2 craigm craigm  2612944 Nov 10 17:13 uImage--2.6.35.3-r45-imx28evk-20141110060936.bin

 

I check the uImage file:

 

file uImage--2.6.35.3-r45-imx28evk-20141110060936.bin
uImage--2.6.35.3-r45-imx28evk-20141110060936.bin: u-boot legacy uImage, Linux-2.6.35.3-maintain+yocto+gb, Linux/ARM, OS Kernel Image (Not compressed), 2612880 bytes, Mon Nov 10 17:12:44 2014, Load Address: 0x40008000, Entry Point: 0x40008000, Header CRC: 0x35886962, Data CRC: 0x37FEB8CE

 

So the uImage has been built fine. But it looks as though the core-image-minimal-imx28evk-xxxx.rootfs.sdcard has not been subsequently rebuilt. Perhaps the .sdcard file is only rebuilt if the root file system changes, but not if the kernel only changes.

 

To confirm this, I mount the SD card and check its contents, and I see the uImage still contains a 3.14.19 kernel:

 

file /media/craigm/Boot\ imx28e/uImage
/media/craigm/Boot imx28e/uImage: u-boot legacy uImage, Linux-3.14.19-fslc+g00e4721, Linux/ARM, OS Kernel Image (Not compressed), 3586912 bytes, Mon Nov 10 12:10:21 2014, Load Address: 0x40008000, Entry Point: 0x40008000, Header CRC: 0x9CFC9D94, Data CRC: 0x7C476150

 

Is it possible to update the recipe that builds the .sdcard file, to ensure it will run after any kernel change? Meanwhile as a work-around, what is the command to manually re-run this step?

Outcomes