Cross-compiling the ARM Linux Kernel in Ubuntu 12.04 LTS
Yesterday I installed Ubuntu 12.04 ‘Precise’ Beta 1 in Virtual Box to give it a try (I could not manage to have HUD working btw), and today, I’ve noticed an article entitled “Ubuntu 12.04 ‘precise’ and cross compilation of ARM kernels” explaining how to build Linaro ARM kernel in Ubuntu 12.04. So I’ve decided to give it a try, especially it seems straightforward. I followed the instructions in the aforementioned link, it basically worked except I had to install dpkg-dev package that also installed the build essentials (gcc, g++, etc…) and use sudo for some commands.
You’ll notice the name change for the ARM gcc toolchain as it now uses hard-float by default which seems to provide quite a boost in performance for the Pandaboard.
Here are the steps I followed:
- Install the ARM GCC cross compiler and the development package of dpkg:
sudo apt-get install gcc-arm-linux-gnueabihf dpkg-dev
- Retrieve the kernel source:
apt-get source linux-source-3.2.0
- Install the packages required to build the Linux kernel:
sudo apt-get build-dep linux-source-3.2.0
- Build the kernel:
cd linux-3.2.0; dpkg-buildpackage -b -aarmhf
That’s it. The build took an awful lot of time (5 to 6 hours) in my machine as many features and modules (2288) are enabled. The binary images (presumably for TI OMAP 4) are located in ./debian/build/build-omap/arch/arm/boot:
ls -l ./debian/build/build-omap/arch/arm/boot: drwxrwxr-x 2 jaufranc jaufranc 4096 Mar 27 22:15 compressed -rwxrwxr-x 1 jaufranc jaufranc 7668532 Mar 27 22:15 Image -rwxrwxr-x 1 jaufranc jaufranc 3728392 Mar 27 22:15 zImage