Difference between revisions of "Kernel compiling"

From odroid US
Jump to: navigation, search
(Prerequisites)
Line 2: Line 2:
  
 
DO THIS ON YOUR ODROID, NOT ON YOUR PC!
 
DO THIS ON YOUR ODROID, NOT ON YOUR PC!
 +
 +
These procedures assume you have an Debian-based distribution loaded on your odroid.  The kernel building is not different between the distros, but getting ready to build is. 
 +
 +
Debian/Ubuntu/Mint and others use "Debian packages", .deb files.  They use tools like dpkg, apt, synaptic and so on to manage a package database.
 +
 +
RedHat, Centos, Fedora and Gentoo would not know about apt-get and friends -- so these instructions will not be of much use.
  
 
=== Prerequisites ===
 
=== Prerequisites ===
Line 9: Line 15:
 
# update the list of available packages.  This verifies that your apt-sources are configured
 
# update the list of available packages.  This verifies that your apt-sources are configured
 
# and you have a network connection.  
 
# and you have a network connection.  
 +
# as root:
 
apt-get update
 
apt-get update
 +
# Install the toolchain, including gcc (for hard-floating point ARM, armhf) and bin-utils.
 
apt-get -y install p7zip-full build-essential
 
apt-get -y install p7zip-full build-essential
 
</pre>
 
</pre>

Revision as of 16:03, 13 January 2013

WATCH THE SIZE OF YOUR BOOT PARTITION, MAYBE YOU HAVE TO DELETE SOME OF THE BACKUP FILES!

DO THIS ON YOUR ODROID, NOT ON YOUR PC!

These procedures assume you have an Debian-based distribution loaded on your odroid. The kernel building is not different between the distros, but getting ready to build is.

Debian/Ubuntu/Mint and others use "Debian packages", .deb files. They use tools like dpkg, apt, synaptic and so on to manage a package database.

RedHat, Centos, Fedora and Gentoo would not know about apt-get and friends -- so these instructions will not be of much use.

Prerequisites

make sure you have the neccessary programs installed

# update the list of available packages.  This verifies that your apt-sources are configured
# and you have a network connection. 
# as root:
apt-get update
# Install the toolchain, including gcc (for hard-floating point ARM, armhf) and bin-utils.
apt-get -y install p7zip-full build-essential

Grabbing the source

you can easily build the kernel on your own. grab the source from github:

  1. browse to https://github.com/hardkernel/linux
  2. choose your branch (as of today -2013-01-12- it's odroid-3.0.y)
wget https://github.com/hardkernel/linux/archive/odroid-3.0.y.zip

Unpacking the source

mv odroid-3.0.y.zip /usr/src/linux.zip
cd /usr/src
7z x -y linux.zip > /dev/null
mv linux-odroid* linux

Configuring the kernel

cd /usr/src/linux

make sure to select the correct config for your device in the next step. execute the following to get a list of odroid kernel configs:

ls /usr/src/linux/arch/arm/configs/ | grep odroid

now choose your config and copy it to /usr/src/linux/.config (i chose odroid-x2s ubuntu config)

cp arch/arm/configs/odroidx2_ubuntu_defconfig /usr/src/linux/.config

Text mode:

apt-get install libncurses5-dev
make menuconfig

Graphical mode:

apt-get install qt4-dev-tools
make xconfig

change everything to your needs (use / for searching)

Building the kernel

make -j8
make modules_install
make zImage

Copying the kernel and initramfs to the boot partition

kernelversion=`cat ./include/config/kernel.release`
mount -o bind /media/boot/ /boot
cp /media/boot/zImage /media/boot/zImage.prev
cp /media/boot/uInitrd /media/boot/uInitrd.prev
cp arch/arm/boot/zImage /media/boot
cp .config /boot/config-$kernelversion

optionally:

cp System.map /boot/System.map-$kernelversion

NOT optional:

mkinitramfs -c gzip -o ./initramfs-$kernelversion $kernelversion
mkimage -A arm -O linux -T ramdisk -C none -a 0 -e 0 -n initramfs -d ./initramfs-$kernelversion ./uInitrd
cp uInitrd /media/boot

halt:

shutdown -h 0

power cycle after that.