Table of Contents
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 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 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 Displayport Guide on ODROID Forums
Kernel Sources
Kernel sources for ODROID-XU3 is on our 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