Building a Xenomai kernel

Hello friends,

I am trying to learn how to compile a BeagleBoard kernel so that I can use Xenomai for realtime work. I installed 64 bit Ubuntu 12.04 on a new drive and got the 64bit crosscompiler for ARM from Then I expanded the tar file under a directory. I downloaded the latest kernel (3.6.2) from and the corresponding defconfig file from Robert Nelson ( I copied his defconfig to my .config file. Then I executed this command:
make ARCH=“arm” CROSS_COMPILE="…/…/toolchains/gcc-4.6.3-nolibc/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-" -j4 uImage

Now I am not sure about the last part of the CROSS_COMPILE parameter because my own bin directory has no other directory called “arm-unknown-linux-gnueabi-” under it, just a bunch of executables which match this up to the final dash character. But I was following the instructions outlined in an article by Jon Masters (

I ended up with the following error messages.

make[2]: *** [arch/arm/boot/compressed/decompress.o] Error 1
make[2]: *** Waiting for unfinished jobs…
make[1]: *** [arch/arm/boot/compressed/vmlinux] Error 2
make: *** [uImage] Error 2

Do they mean anything to anybody?

Am I wrong in assuming that using Xenomai means re-compiling the whole thing?



Try to remove the -j4 ... If it doesn't solve the issue, it will help.

Best regards,


When I removed the multi-processor flag -j4, I just got the error messages sooner.
The solution that I found was to remove the -Werror-implicit-function-declaration line from KBUILD_CFLAGS



14 Ekim 2012 Pazar 00:15:22 UTC+3 tarihinde Flavio Alves yazdı:

In other words I fixed Makefile.

14 Ekim 2012 Pazar 09:31:34 UTC+3 tarihinde dos360 yazdı:

I found uImage under arch/arm/boot and copied it to the FAT32 partition of my sdcard. I booted up my BeagleBoard-XM with this sdcard. Guess what happened? I am STILL running the old kernel, Angstrom’s 2.6.32 and not the 3.6.2 kernel that I have just built.

What is going on? Is there a special procedure for setting up the boot partition? I didn’t touch MLO and U-Boot files assuming that they had to be on specific sectors but why can’t I boot with my newly copied kernel having the correct name?


14 Ekim 2012 Pazar 13:17:25 UTC+3 tarihinde dos360 yazdı:

I had this problem myself some time ago. If you replaced uImage on the boot-partition and you’re still booting the old kernel try to look for uImage on the rootfs partition.
There may be a link on the boot partition that links to another uImage on the rootfs.


Yes, the FAT partition kernel is the fallback; if one is found on the rootfs under /boot (IIRC) then that will be used before the one on the fat boot partition.


Thank you Chris and Jack.

Now BeagleBoard-XM finds the correct kernel but cannot load it.

Texas Instruments X-Loader 1.5.0 (Mar 27 2011 - 17:37:56)
Beagle xM
Reading boot sector
Loading u-boot.bin from mmc

U-Boot 2011.03-rc1-00000-g9a3cc57-dirty (Apr 01 2011 - 17:41:42)

OMAP3630/3730-GP ES2.1, CPU-OPP2, L3-165MHz, Max CPU Clock 1 Ghz
OMAP3 Beagle board + LPDDR/NAND
I2C: ready
DRAM: 512 MiB
*** Warning - readenv() failed, using default environment

In: serial
Out: serial
Err: serial
Beagle xM Rev C
No EEPROM on expansion board
Die ID #50fc00029ff800000168301016030018
Hit any key to stop autoboot: 0
The user button is currently NOT pressed.
SD/MMC found on device 0
reading uEnv.txt

150 bytes read
Loaded environment from uEnv.txt
Importing environment from mmc …
Loading file “/boot/uImage” from mmc device 0:2 (xxa2)
2685936 bytes read
Booting from mmc …
## Booting kernel from Legacy Image at 80200000 …
Image Name: Linux-3.6.2
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2685872 Bytes = 2.6 MiB
Load Address: 00008000
Entry Point: 00008000
Verifying Checksum … OK
Loading Kernel Image …

Should I have changed u-Boot-img or MLO to match the kernel?
Or is does this look like ap problem within the kernel itself?


15 Ekim 2012 Pazartesi 10:38:42 UTC+3 tarihinde ChrisSchuku yazdı:

I'm really no expert on this but at a guess it may be an issue with your environment and the serial console that it is outputting to. What does your uEnv.txt file contain?


No changes were made to uEnv.txt shown below:

dvimode=“hd720 omapfb.vram=0:8M,1:4M,2:4M”
console=“tty0 console=ttyS2,115200n8”

The serial console was minicom using ttyUSB0 and it works with the other kernel. The green leds were supposed to be blinking but they were were switched on and then froze.


15 Ekim 2012 Pazartesi 12:42:01 UTC+3 tarihinde Jack Mitchell yazdı: