Differences
This shows you the differences between two versions of the page.
en:xu3_building_kernel_old [2015/02/03 12:40] charles.park created |
en:xu3_building_kernel_old [2015/02/03 12:40] (current) charles.park created |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | |||
+ | ===== 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 ] | ||
+ | |||
+ | <WRAP left round tip 70%> | ||
+ | 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) | ||
+ | </WRAP> | ||
+ | |||
+ | === Copy the cross tool package to /opt/toolchains === | ||
+ | If the '/opt/toolchains' directory does not exist in host pc, then create the directory. | ||
+ | |||
+ | <code> | ||
+ | $ 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 | ||
+ | </code> | ||
+ | |||
+ | === Uncompress the cross tool with tar command === | ||
+ | <code> | ||
+ | $ cd /opt/toolchains | ||
+ | $ sudo tar xvfz arm-eabi-4.6.tar.gz | ||
+ | </code> | ||
+ | |||
+ | === Add Path in your environment file === | ||
+ | Modify your ~/.bashrc file to add a new path with editor (gedit or vi) | ||
+ | <code> | ||
+ | export ARCH=arm | ||
+ | export PATH=${PATH}:/opt/toolchains/arm-eabi-4.6/bin | ||
+ | export CROSS_COMPILE=arm-eabi- | ||
+ | </code> | ||
+ | |||
+ | To apply this change, login again or restart the .bashrc | ||
+ | <code> | ||
+ | $ source ~/.bashrc | ||
+ | </code> | ||
+ | |||
+ | === Check the tool-chain path to see if it is set up correctly or not. === | ||
+ | <code> | ||
+ | $ 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) | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ====== 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** | ||
+ | <code> git clone --depth 1 https://github.com/hardkernel/linux.git -b odroidxu3-3.10.y odroidxu3-3.10.y </code> | ||
+ | - 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. | ||
+ | <code> | ||
+ | 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</code> | ||