Preparing The Build Environment
Preparing the Build Process
The following packages need to be installed on your build machine, you will need them sooner or later in the build process.
git squashfs-tools kpartx multistrap qemu-user-static samba debootstrap parted dosfstools qemu binfmt-support lzop chrpath gawk texinfo libsdl1.2-dev whiptail diffstat cpio libssl-dev
qemu-utils (only needed if x86 will be built with the machine too )
Special Requirement for Rockchip on Debian jessie
Jessie's u-boot tool 'mkimage' is too old to support a "rksd"-type image, needed for u-boot creation with Rockchip SoC's (see "Compiling U-Boot").
In case you build for Rockchip, you need to download a newer version, at least 2016.11+dfsg1-4, and install it over jessie's 2014.10+dfsg1-5:
wget http://ftp.debian.org/debian/pool/main/u/u-boot/u-boot-tools_2016.11+dfsg1-4_amd64.deb dpkg -i u-boot-tools_2016.11+dfsg1-4_amd64.deb rm u-boot-tools_2016.11+dfsg1-4_amd64.deb
You need to crosscompile for arm, this means you need the proper toolchain and also take care to use the correct version.
For older kernels and u-boot we used GCC-4.9.3 (Odroids, arm and aarch64), some require GCC-5, newer ones (like our build example with the Asus Tinkerboard) now require gcc-6.1
You can download the toolchain from the Linaro organisation: http://releases.linaro.org/components/toolchain/gcc-linaro/
Create a folder /opt/toolchains and extract the tarball in it (example with gcc-4.9.3)
sudo mkdir -p /opt/toolchains sudo tar xvf gcc-linaro-arm-linux-gnueabihf-4.9-2014.11_linux.tar.xz -C /opt/toolchains/
Add the path to PATH and set environment variables, best to add them to $HOME/.bashrc, just add the following lines:
export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabihf- export PATH=/opt/toolchains/gcc-linaro-4.9-2014.11-x86_64_arm-linux-gnueabihf/bin/:$PATH
You can apply the change by logging out and in again or evaluate $HOME/.bashrc with source command.
Check if the toolchain works properly by checking its version, if you can find gcc version string at the end of the output, you’re OK.
arm-linux-gnueabihf-gcc -v Using built-in specs … … … … gcc version 4.9.3 20141031 (prerelease) (Linaro GCC 2014.11)