Jump to: navigation, search

Linux kernel 3.12

I'm writing down the steps that worked for me in order to compile the BeagleBoard kernel 3.12. 3.12 is mainline the time of this writing.

Get and patch the kernel:

 git clone https://github.com/beagleboard/kernel.git 3.12
 cd 3.12
 git checkout origin/3.12 -b 3.12

Compile the kernel:

 cd kernel
 cp ../configs/beaglebone .config
 mkdir rootfs
 make ARCH=arm CROSS_COMPILE=arm-angstrom-linux-gnueabi- LOADADDR=0x80008000 uImage dtbs
 make ARCH=arm CROSS_COMPILE=arm-angstrom-linux-gnueabi- modules
 make ARCH=arm CROSS_COMPILE=arm-angstrom-linux-gnueabi- INSTALL_MOD_PATH=./rootfs modules_install

Install the kernel on your BeagleBone:

 scp arch/arm/boot/zImage root@
 scp arch/arm/boot/dts/am335x-bone*.dtb root@
 rm rootfs/lib/modules/3.12*/build
 rm rootfs/lib/modules/3.12*/source
 scp -r rootfs/lib/modules/3.12* root@

Log in, move link, sync and reboot:

 ssh root@
 cd /boot/
 rm zImage
 ln -s zImage-3.12.1 zImage


If you make any changes to the git tree under kernel, the make system will add a "-dirty" to the image name. To remove this, update the timestamp on .scmversion:

 touch .scmversion

Thanks to Koen Kooi for this!

If you do not have a toolchain, you can get one from Angstrom:

 wget http://www.angstrom-distribution.org/toolchains/angstrom-eglibc-i686-armv7a-vfp-neon-v2012.12-toolchain.gz
 gunzip angstrom-eglibc-i686-armv7a-vfp-neon-v2012.12-toolchain.gz
 sudo sh angstrom-eglibc-i686-armv7a-vfp-neon-v2012.12-toolchain.gz

When asked for install location, just say ok.

 export PATH=/usr/local/oecore-i686/sysroots/i686-angstromsdk-linux/usr/bin/armv7a-vfp-neon-angstrom-linux-gnueabi/:$PATH