===== 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