Linux kernel can be easily built using Ltib. On Ltib menu, just select:
[*] Configure the Kernel
When you exit this menu, Ltib will show the Kernel Menuconfig as below:
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
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
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.
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
For general Linux information, see About Linux