Linux Kernel

Document created by jesseg Employee on Aug 22, 2012Last modified by Jodi Paul on Jul 12, 2013
Version 5Show Document
  • View in full screen mode

Building Linux Kernel

 

Building Using LTIB

Linux kernel can be easily built using Ltib. On Ltib menu, just select:

[*] Configure the Kernel 

Ltib_kernel1.png

When you exit this menu, Ltib will show the Kernel Menuconfig as below:

Ltib_kernel2.png

This is the Kernel Menuconfig, where it's possible to configure kernel options and drivers.

After exit this menu, kernel will be built and stored at:

<Ltib directory>/rootfs/boot 


Building Outside LTIB

Downloading and installing GNU Toolchain and git

 

 

When you install LTIB, a GNU toolchain is automatically installed on /opt/freescale/usr/local/

 

 

Kernel releases newer than 2.6.34 doesn't build on Toolchain 4.1.2, only on 4.4.1 or later

 

 

Check on your host at /opt/freescale/usr/local/ the current installed Toolchain.

Next step is to install GIT on host. For Ubuntu machines, use:

sudo apt-get install git-core 

 

Building Kernel from Freescale git repository

Freescale provides access to their own git kernel repository and can be viewed at: Freescale Public GIT

 

To download the kernel source code, create a new folder and use the command:

git clone git://git.freescale.com/imx/linux-2.6-imx.git

 

OR

 

git clone http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git

After some minutes, a folder called linux-2.6-imx will be created containing the Linux kernel

Create a local git branch from a remote branch you want to use. Let's use branch origin/imx_3.0.15 as example:

cd linux-2.6-imx 
git checkout -b localbranch origin/imx_3.0.15

 

 

To check all available remote branches, use: git branch -r

 

 

Export the cross compiler, architecture and the toolchain path:

export ARCH=arm 
export CROSS_COMPILE=arm-none-linux-gnueabi-

If using Toolchain 4.1.2:

export PATH="$PATH:/opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/" 

OR If using Toolchain 4.4.4:

export PATH="$PATH:/opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/" 

Copy the config file for the wanted platform on linux folder as example:

cp arch/arm/configs/imx6_defconfig .config 

 

 

All platform config files are located at <linux directory>/arch/arm/configs/

 

 

Call menuconfig and change configuration (if needed)

make menuconfig 

Now it's ready to be built:

make uImage

The zImage and uImage will be located at /arch/arm/boot/ folder.


Building Kernel Mainline


Mainline Kernel can be viewed on this link:

https://git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git

 

To download the kernel source code, create a new folder and use the command:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git

OR

git clone http://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git

OR

git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git

 

After some minutes, a folder called linux will be created containing the Linux kernel

Create a local git branch from a remote branch you want to use. Let's use branch origin/linux-3.8.y as example:

cd linux
git checkout -b localbranch origin/linux-3.8.y

 

 

To check all available remote branches, use: git branch -r

 

 

Export the cross compiler, architecture and the toolchain path:

export ARCH=arm export CROSS_COMPILE=arm-none-linux-gnueabi- 

If using Toolchain 4.4.4:

export PATH="$PATH:/opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/" 

Configure to the platform you want to build kernel. For i.MX family, use imx_v6_v7_defconfig:

make imx_v6_v7_defconfig

 

All platform config files are located at <linux directory>/arch/arm/configs/

 

 

Call menuconfig and change configuration (only if needed, this is an optional step!)

make menuconfig 

Now it's ready to be built:

make -j4 uImage LOADADDR=0x70008000

 

 

- Use -j4 option to speed up your build in case or PC has 4 cores. It's optional.

 

- IMPORTANT: Use the correct address for each processor. You can check the correct address value at linux/arch/arm/mach-imx/Makefile.boot.

 

After build the uImage, build the dtb file (device tree binary). For i.MX53 QSB use:

 

make imx53-qsb.dtb


The uImage will be located at: linux/arch/arm/boot/ folder and

dtb binary will be located at: linux/arch/arm/boot/dts


About Linux

For general Linux information, see About Linux

1 person found this helpful

Attachments

    Outcomes