Build from Source
It’s recommended to use Ubuntu 18.04 (64-bit) for building the Android. All further instructions are given for exactly that distribution. Please make sure that your hardware meets the requirements specified in Android build requirements document: - At least 300 GiB of drive space - At least 16 GiB of RAM; if you have less – please make sure your swap partition is 32 GiB or more.
- Installing build dependencies
-
$ sudo apt update$ sudo apt install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig gcc make perl libncurses5-dev libssl-dev bc bison flex minicom vim git python
-
- Install the repo tool
-
$ mkdir ~/bin$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo$ chmod a+rx ~/bin/repo$ export PATH=$HOME/bin:$PATH
-
- Download and unpack the baremetal AArch64 GCC toolchain
-
$ wget "https://developer.arm.com/-/media/Files/downloads/gnu-a/9.2-2019.12/binrel/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf.tar.xz"$ sudo tar xJvf gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf.tar.xz -C /opt$ rm gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf.tar.xz
-
- Configure basic Git settings (needed for repo tool to work properly):
-
$ git config --global user.email "you@example.com"$ git config --global user.name "Your Name"
-
- Obtaining the software
- Obtain Android-Q source code:
-
$ mkdir -p ~/repos/android-q$ cd ~/repos/android-q$ repo init -u https://gitlab.com/Linaro/96boards/e850-96/platform/manifest.git -b android10-e850-96$ repo sync -j32
-
- Obtain Linux kernel 4.14 source code:
-
$ cd ~/repos$ git clone https://gitlab.com/Linaro/96boards/e850-96/kernel.git$ cd kernel$ git checkout android-exynos-4.14-linaro
-
- Obtain LittleKernel bootloader source code:
-
$ cd ~/repos$ git clone https://gitlab.com/Linaro/96boards/e850-96/lk.git$ cd lk$ git checkout 3830-ww-dev-linaro-e850-96
-
- Obtain Android-Q source code:
- Building the software
- Building the Android-Q: Android-Q source code contains prebuilt files for Linux kernel, bootloader, etc. So it’s possible to build just Android-Q (and skip building the kernel and bootloader), which will generate all needed images. Output images will be located in out/target/product/erd850/ directory.
-
$ cd ~/repos/android-q$ source build/envsetup.sh$ lunch full_erd850-eng$ make
-
- Building the kernel
$ cd ~/repos/kernel-
$ prebuilts_path=~/repos/android-q/prebuilts$ clang_path=$prebuilts_path/clang/host/linux-x86/clang-r328903$ gcc_path=$prebuilts_path/gcc/linux-x86/aarch64/aarch64-linux-android-4.9$ export LLVM_AR=$clang_path/bin/llvm-ar$ export LLVM_DIS=$clang_path/bin/llvm-dis$ export LTO_LLVM_LIB_BASE=$clang_path/lib64$ export PATH=$gcc_path/bin:$PATH$ export CROSS_COMPILE=aarch64-linux-android-$ export PATH=$clang_path/bin:$PATH$ export CLANG_TRIPLE=aarch64-linux-gnu-$ export ARCH=arm64 $ fragments/make-config.sh e850-96 android-full$ make -j32 CC=clang$ scripts/dtc/rebuild-dtbx.sh
- Building the bootloader
-
$ cd ~/repos/lk$ export PATH=/opt/gcc-arm-9.2-2019.12-x86_64-aarch64-none-elf/bin:$PATH$ export ARCH_arm64_TOOLCHAIN_PREFIX=aarch64-none-elf- $ make -j16 erd3830
-
- Rebuild Android with custom kernel
-
$ cd ~/repos/android-q$ source build/envsetup.sh$ lunch full_erd850-eng -
$ cp ~/repos/kernel/arch/arm64/boot/dts/exynos/exynos3830.dtb device/samsung/erd850-prebuilts/dtb.img$ cp ~/repos/kernel/arch/arm64/boot/dts/exynos/exynos3830-e850-96-*.dtbo device/samsung/erd850-prebuilts/$ cp ~/repos/kernel/arch/arm64/boot/Image device/samsung/erd850-prebuilts/kernel$ cp ~/repos/kernel/vmlinux device/samsung/erd850-prebuilts/$ cp ~/repos/lk/build-erd3830/lk.bin device/samsung/erd850-prebuilts/bootloader.img -
$ cd device/samsung/erd850-prebuilts/$ ./create-dtboimg.sh$ rm *.dtbo$ cd - $ make
-
- Building the Android-Q: Android-Q source code contains prebuilt files for Linux kernel, bootloader, etc. So it’s possible to build just Android-Q (and skip building the kernel and bootloader), which will generate all needed images. Output images will be located in out/target/product/erd850/ directory.
- Flashing the Software
- To flash the images, enter the fastboot mode:
- Connect the power cable to your E850-96 board
- Press “POWER” button (SW2) for 1 sec to start booting the bootloader
- Press and hold the “VOL_UP” button (SW4) for 7 seconds
-
$ cd ~/repos/android-q$ source build/envsetup.sh$ lunch full_erd850-eng$ cd out/target/product/erd850/$ ./ff_erd3830_all.sh
- To flash the images, enter the fastboot mode: