Sony link: How to build and flash a Linux Kernel for AOSP
Unlock bootloader
See Unlock Bootloader on sony.com
Download cross compiler
Linaro or clang
Clang:
git clone https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86 -b android-10.0.0_r39 clang-linux-x86
Linaro GCC: Download
gcc-arm-9.2-2019.12-mingw-w64-i686-arm-none-linux-gnueabihf.tar.xz
and
gcc-arm-9.2-2019.12-mingw-w64-i686-aarch64-none-linux-gnu.tar.xz
from the ARM website, extract the files.
Export cross compiler
Linaro GCC:
export CROSS_COMPILE=<android-dir>/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-
export CROSS_COMPILE_ARM32=<android-dir>/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-
For clang:
export CC=clang-linux-x86/clang-r353983c1/bin
export CLANG_TRIPLE=aarch64-linux-gnu
Download kernel source
git clone https://github.com/sonyxperiadev/kernel
cd kernel
Also techpack/audio, data-kernel, wifi modules
Identify defconfig
The defconfig name
is constructed using this schema:
aosp_<platform>_<codename>_defconfig
.
As for the codename
, search the
Sony Devices overview for the device Code name
, e.g. kagura
for the Xperia XZ.
For platform
, use the “board” name, e.g. tone
for Xperia XZ.
So, Xperia XZ becomes aosp_tone_kagura_defconfig
.
For easier reference, here’s an overview:
Device name | defconfig | DTBO |
---|---|---|
Xperia X | aosp_loire_suzu_defconfig |
false |
Xperia X Compact | aosp_loire_kugo_defconfig |
false |
Xperia Touch | aosp_loire_blanc_defconfig |
false |
Xperia X Performance | aosp_tone_dora_defconfig |
false |
Xperia XZ | aosp_tone_kagura_defconfig |
false |
Xperia XZs | aosp_tone_keyaki_defconfig |
false |
Xperia XZ Premium | aosp_yoshino_maple_defconfig |
false |
Xperia XZ1 | aosp_yoshino_poplar_defconfig |
false |
Xperia XZ1 Compact | aosp_yoshino_lilac_defconfig |
false |
Xperia XA2 | aosp_nile_pioneer_defconfig |
false |
Xperia XA2 Ultra | aosp_nile_discovery_defconfig |
false |
Xperia XA2 Plus | aosp_nile_voyager_defconfig |
false |
Xperia XZ2 | aosp_tama_akari_defconfig |
true |
Xperia XZ2 Compact | aosp_tama_apollo_defconfig |
true |
Xperia XZ3 | aosp_tama_akatsuki_defconfig |
true |
Xperia 10 | aosp_ganges_kirin_defconfig |
true |
Xperia 10 Plus | aosp_ganges_mermaid_defconfig |
true |
Xperia 1 | aosp_kumano_griffin_defconfig |
true |
Xperia 5 | aosp_kumano_bahamut_defconfig |
true |
Xperia 10 II | aosp_seine_pdx201_defconfig |
true |
Configure kernel
make ARCH=arm64 CROSS_COMPILE=$CROSS_COMPILE CROSS_COMPILE_ARM32=$CROSS_COMPILE_ARM32 <device_defconfig>
For clang:
make ARCH=arm64 CC=$CC CLANG_TRIPLE=$CLANG_TRIPLE CROSS_COMPILE=$CROSS_COMPILE CROSS_COMPILE_ARM32=$CROSS_COMPILE_ARM32 <device_defconfig>
Build kernel
make \
ARCH=arm64 \
CROSS_COMPILE=$CROSS_COMPILE \
CROSS_COMPILE_ARM32=$CROSS_COMPILE_ARM32 \
-j $(nproc)
For clang:
make \
ARCH=arm64 \
CC=$CC \
CLANG_TRIPLE=$CLANG_TRIPLE \
CROSS_COMPILE=$CROSS_COMPILE \
CROSS_COMPILE_ARM32=$CROSS_COMPILE_ARM32 \
-j $(nproc)
Copy kernel and dtbo
Devices with appended DTB
Copy <kernel>/arch/arm64/boot/Image.gz-dtb
to
<android-dir>/kernel/sony/msm-4.14/common-kernel/kernel-dtb-<device>
.
DTBO devices
Copy <kernel>/arch/arm64/boot/Image.gz
to
<android-dir>/kernel/sony/msm-4.14/common-kernel/kernel-dtb-<device>
.
Then, build mkdtimg
from inside your Android tree and run it:
export MKDTIMG=<android-dir>/out/host/linux-x86/bin/mkdtimg
$MKDTIMG create <android-dir>kernel/sony/msm-4.14/common-kernel/dtbo-<device>.img \
`find <kernel-dir>/arch/arm64/boot/dts -name "*.dtbo"`
Build bootimage and dtboimage
Navigate into top-level Android directory.
source build/envsetup.sh && lunch
make -j $(nproc) bootimage
The DTBO image will be generated automatically when building boot image.
See also: Marijn’s oot script.
See also: Handling Android Images.
Download fastboot
On Linux: Install fastboot package
On Windows: Link to drivers
Flash via fastboot
Make sure the current slot is correct:
$ fastboot getvar current-slot
-> "a"
Else, set it:
fastboot set_active a
Then, flash images:
fastboot flash boot out/target/product/<device>/boot.img
# For DTBO devices:
fastboot flash dtbo out/target/product/<device>/dtbo.img
Finally:
fastboot reboot
# https://t.me/PixelExperienceSony/34425
#!/bin/bash
export ANDROID_ROOT=/home/kgvarunkanth/kgv/arrow
export KERNEL_TOP=$ANDROID_ROOT/kernel/sony/msm-4.14
export KERNEL_TMP=$ANDROID_ROOT/out/kernel-4.14
export CC=$ANDROID_ROOT/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/
export CC32=$ANDROID_ROOT/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/
export CLANG=$ANDROID_ROOT/prebuilts/clang/host/linux-x86/clang-r353983c/bin/
export PATH=$CC:$CC32:$CLANG:$PATH
rm -rf $KERNEL_TMP
make O=$KERNEL_TMP clean
make O=$KERNEL_TMP mrproper
make O=$KERNEL_TMP ARCH=arm64 aosp_yoshino_maple_defconfig
make O=$KERNEL_TMP ARCH=arm64 CC=clang CLANG_TRIPLE=aarch64-linux-gnu- CROSS_COMPILE=aarch64-linux-android- CROSS_COMPILE_ARM32=arm-linux-androideabi- -j1