===== Getting the Right Kernel =====
===== Step-by-Step guide to building a odroid-xu Kernel =====
=== Download the cross tool chain package ===
[ http://dn.odroid.com/ODROID-XU/compiler/arm-eabi-4.6.tar.gz ]
Note
* This toolchain only used to build the kernel.
* This toolchain is included in the Android source package. ($ANDROID_ROOT/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6)
=== Copy the cross tool package to /opt/toolchains ===
If the '/opt/toolchains' directory does not exist in host pc, then create the directory.
$ sudo mkdir /opt/toolchains
$ sudo cp arm-eabi-4.6.tar.gz /opt/toolchains
$ cd /opt/toolchains
$ sudo tar zxvf arm-eabi-4.6.tar.gz
=== Uncompress the cross tool with tar command ===
$ cd /opt/toolchains
$ sudo tar xvfz arm-eabi-4.6.tar.gz
=== Add Path in your environment file ===
Modify your ~/.bashrc file to add a new path with editor (gedit or vi)
export ARCH=arm
export PATH=${PATH}:/opt/toolchains/arm-eabi-4.6/bin
export CROSS_COMPILE=arm-eabi-
To apply this change, login again or restart the .bashrc
$ source ~/.bashrc
=== Check the tool-chain path to see if it is set up correctly or not. ===
$ arm-eabi-gcc -v
Using built-in specs.
COLLECT_GCC=arm-eabi-gcc
COLLECT_LTO_WRAPPER=/opt/toolchain/arm-eabi-4.6/bin/../libexec/gcc/arm-eabi/4.6.x-google/lto-wrapper
Target: arm-eabi
Configured with: /tmp/android-15472/src/build/../gcc/gcc-4.6/configure --prefix=/usr/local --target=arm-eabi --host=x86_64-linux-gnu
--build=x86_64-linux-gnu --with-gnu-as --with-gnu-ld --enable-languages=c,c++ --with-gmp=/tmp/android-15472/obj/temp-install --with-
mpfr=/tmp/android-15472/obj/temp-install --with-mpc=/tmp/android-15472/obj/temp-install --without-ppl --without-cloog --disable-libs
sp --enable-threads --disable-nls --disable-libmudflap --disable-libgomp --disable-libstdc__-v3 --disable-sjlj-exceptions --disable-
shared --disable-tls --disable-libitm --with-float=soft --with-fpu=vfp --with-arch=armv5te --enable-target-optspace --with-abi=aapcs
--with-gcc-version=4.6 --with-binutils-version=2.21 --with-gmp-version=4.2.4 --with-mpfr-version=2.4.1 --with-gdb-version=7.3.x --w
ith-arch=armv5te --with-sysroot=/tmp/android-15472/install/sysroot --with-prefix=/tmp/android-15472/install --with-gold-version=2.21
--enable-gold --disable-gold --disable-multilib --program-transform-name='s&^&arm-eabi-&'
Thread model: single
gcc version 4.6.x-google 20120106 (prerelease) (GCC)
====== Linux ======
Linux ODROID-XU3 works as follow:
It must have at least two partitions.
First Partition must be a FAT32/EXT4 partition.
Second Partition can be whatever the Filesystem that your kernel supports (must be built in).
Note: It is possible to use the first partition as ext4, however its strongly not recommended due to Windows Users lost the capability of changing boot.ini
=== Partition Contents ===
Partition 1:
* Kernel Image (zImage)
* boot.scr
* exynos5422-odroidxu3.dtb
* uInitrd (if applicable)
Partition 2:
* rootfs (a.k.a. File System)
=== Currently Supported Linux Distributions ===
* Ubuntu 14.04 [[http://forum.odroid.com/viewtopic.php?f=95&t=5985|Ubuntu 14.04 Forum Thread]]
Note: More distribution support will come with time.
=== HDMI Support On Linux ===
HDMI support should work out-of-box for everyone including framebuffer console if you experience any issue please contact us on the [[http://forum.odroid.com|ODROID Forums]]
On the provided Ubuntu image there are several examples on how to configure the HDMI to your specific resolution or even lock to a certain resolution.
You can check the configuration file on /media/boot/boot.ini of the Ubuntu Image
=== DisplayPort Support on Linux ===
For displayport configuration please follow this guide [[http://forum.odroid.com/viewtopic.php?f=95&t=5976|Displayport Guide on ODROID Forums]]
=== Kernel Sources ===
Kernel sources for ODROID-XU3 is on our [[http://github.com/hardkernel/linux|Github]].
Branch is **odroidxu3-3.10.y**
defconfig is **odroidxu3_defconfig**
=== Kernel Rebuild Guide ===
Please follow the instructions below to rebuild the Linux Kernel for ODROID.
Those instructions cover native build of the Kernel.
- Install dependencies: **apt-get install build-essential libqt4-dev libncurses5-dev git**
- Clone Repo: **git clone --depth 1 https://github.com/hardkernel/linux.git -b odroidxu3-3.10.y odroidxu-3.10.y**
git clone --depth 1 https://github.com/hardkernel/linux.git -b odroidxu3-3.10.y odroidxu3-3.10.y
- Configure Kernel: **make odroidxu3_defconfig**
- Do changes if you need/want: **make menuconfig** or **make xconfig**
- Build Kernel and Modules: **make -j9**
- Install zImage: **cp arch/arm/boot/zImage /media/boot**
- Install DTB File: **cp arch/arm/boot/dts/exynos5422-odroidxu3.dtb /media/boot**
- Install Modules: **make modules_install**
- Copy .config to /boot for initramfs creation: **cp .config /boot/config-`make kernelrelease`**
- Create initramfs: **update-initramfs -c -k `make kernelrelease`**
- Create uInitrd: **mkimage -A arm -O linux -T ramdisk -C none -a 0 -e 0 -n uInitrd -d /boot/initrd.img-`make kernelrelease` /boot/uInitrd-`make kernelrelease`**
- Install new uInitrd: **cp /boot/uInitrd-`make kernelrelease` /media/boot/uInitrd**
- reboot: **sync && reboot**
Your new kernel should be installed.
Note for your own convenience we provide daily builds of Linux kernel that can be easily installed on Supported distros by using a ODROID Utility.
sudo -s
wget -O /usr/local/bin/odroid-utility.sh https://raw.githubusercontent.com/mdrjr/odroid-utility/master/odroid-utility.sh
chmod +x /usr/local/bin/odroid-utility.sh
odroid-utility.sh