Sunday, March 20, 2011

More on kernel building

Some notes:

Only required files on boot partition are uImage, u-boot.img, and MLO. I proved this to myself by removing the other files and successfully booting the 2.6.32 kernel.

Process for building:

bitbake virtual/kernel -c [clean -> configure -> compile -> deploy]

(in the above, -> means "followed by").

2.6.29 and 2.6.31 both seem to brick the device after uncompress of uImage file. No further output in minicom, LEDs D6 and D7 stay solid on (typically, during boot, you will see them flashing somewhat randomly). I'm bummed about not being able to boot either of these (at this point at least) since these kernel versions have RT linux kernel patches available for them.

2.6.32 boots no problem into a command prompt.

2.6.37 looks ok, mostly -- LEDs D6 and D7 flash, but no minicom output. I plugged in an ethernet cable and was able to SSH into the device, so it booted. Perhaps the tty configured for the kernel is bogus? Some searching turns up the following:

http://processors.wiki.ti.com/index.php/Kernel_-_Common_Problems_Booting_Linux#Problem_.231_-_No_more_output_is_seen_on_the_console_after_.22Starting_Kernel....22

Angstrom demo builds/mkcard usage

http://www.angstrom-distribution.org/demo/beagleboard/

OE/git link

Maybe this will be useful at some point:

http://ao2.it/en/blog/2010/05/27/neat-compilerun-cycle-git-and-openembedded

Kernel version

When you configure OE using bitbake, it appears that a python function called get_kernelversion() is called to determine the kernel version. This function looks for some headers in your kernel source tree, specifically utsrelease.h. What I wanted is to override this kernel version (in my case, my ubuntu system is 2.6.32) with one that has an RT patch available (e.g., 2.6.29), and build my kernel for that version.

I'm not sure why the kernel version built by bitbake is coupled to the kernel version of the host. Seems like they should be separate.

I posted about this here. A response came in several hours later (which you can read by clicking the link). After making the changes that were suggested, I did:

bitbake virtual/kernel -c clean
bitbake virtual/kernel -c configure
bitbake virtual/kernel -c compile

Was able to get a 2.6.29 uImage file after following the above steps. Next step is to test it.

Wednesday, March 16, 2011

Configuring/Rebuilding kernel

. ~/.oe/environment-2008

(From Koen):

The defconfig is stored in
recipes/linux/linux-omap-//defconfig

What I usually do is:

1) bitbake virtual/kernel -c configure
2) cd tmp/work/foo/bar/git ; make menuconfig

(in my case, appears to be ~/beagleboard/angstromtoolchain/setup-scripts/build/tmp-angstrom_2008_1/work/beagleboard-angstrom-linux-gnueabi/linux-omap-psp-2.6.32-r100+gitr5fc29e7b2a76a64a739f857858ef0b98294aa155/git$ make menuconfig)

3) cp .config
/OE/openembedded/recipes/linux/linux-omap-//defconfig
4) bitbake bitbake virtual/kernel -c compile -f ; bitbake virtual/kernel -c
deploy
5) goto 2)

Step 3 is there to ensure that my changes don't get lost when cleaning the
recipe.


then:

$ bitbake -c compile -f virtual/kernel

Sources:

http://groups.google.com/group/beagleboard/browse_thread/thread/22e77334e3774245

http://groups.google.com/group/beagleboard/browse_thread/thread/5252f87b4fcefd41/99ee235b209fd7fc
http://groups.google.com/group/beagleboard/browse_thread/thread/5089ba5af44e7b0d

Tuesday, March 15, 2011