Linux Kernel

This page describes how to get the sunxi specific linux kernel built for your device.

= History =

Public Linux Kernel support for the sunxi family (Allwinner A10, A13, ...) started with a source drop of 2.6.36 made by Ainol, followed by an official release of 2.6.36 sources by Allwinner. Developement jumped forward after a source release of 3.0.8 made by Qware

Initially living in amery's github now our community driven sunxi kernel repo is located in the linux-sunxi's github.

= Repository =

The main sunxi kernel repository is available at our projects github.

You can clone this repository by running:

git clone https://github.com/linux-sunxi/linux-sunxi.git

= Kernel versions =

There are several branches in our kernel tree. Unless you wish to do some specific development, you should probably stick to the sunxi-3.4 branch as this will get the most out of your hardware quickly.

If unsure, use the sunxi-3.4 branch.

= Compilation =

Get a toolchain
If you haven't done so before, get a suitable toolchain installed and added to your PATH.

Clone the repository
git clone -b sunxi-3.4 https://github.com/linux-sunxi/linux-sunxi.git

Configure
For A10 use:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sun4i_defconfig

For A13 use: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sun5i_defconfig

For A20 use: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- sun7i_defconfig

At this point you can fine-tune your kernel configuration by running: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

Build
make -j4 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage modules

The -j4 option runs 4 make instances in parallel to speed up compilation. Please adjust this to the number of CPUs available.

As a final step, create the full module tree: make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=output modules_install

Install
Now you have the following sitting in your kernel tree:

arch/arm/boot/uImage output/lib/modules/3.4.XXX/

The uImage file needs to be started by u-boot, and the modules directory needs to be copied to the /lib/modules on the target rootfs.

= Upstream code =

There is some sunxi code available in Linus' tree. But this is not suited for normal use yet, and will likely need a lot more work to get there. For more information, see our mainline kernel howto.

= External links =
 * Official linux-sunxi git repository

= References =