Skip to content

Instantly share code, notes, and snippets.

@Lua12138
Last active July 28, 2024 13:38
Show Gist options
  • Save Lua12138/b0bd3052cad9295a6b3f57a5a77fb562 to your computer and use it in GitHub Desktop.
Save Lua12138/b0bd3052cad9295a6b3f57a5a77fb562 to your computer and use it in GitHub Desktop.
Script for compiling Xiaomi kernel
#!/bin/bash
set -e
# The working directory for all the following operations
export WORK_DIR=/home/workspaces
# Compiled file output directory
export OUTPUT_DIR=/dev/shm/
# Default kernel configuration
export DEFCONFIG=raphael_user_defconfig
# For Qualcomm SoCs, you must use its toolchain
export LLVM_DIR=/opt/qcom/Qualcomm_Snapdragon_LLVM_ARM_Toolchain_OEM/8.0.8.0/bin
# The branch name of the kernel code
export MIUI_KERNEL_BRANCH=cepheus-q-oss
export GCC_TOOLCHAIN_COMMIT=043dc0ad16a73e0e1973132d00fa6265ab4fa6ba
export DTC_EXT=dtc
export TOOLCHAIN=$WORK_DIR/toolchain
export ARCH=arm64
export SUBARCH=arm64
export CROSS_COMPILE=${TOOLCHAIN}/bin/aarch64-linux-android-
# Install dependency
sudo apt update
sudo apt install -y bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev unzip openjdk-8-jdk language-pack-zh-hans python-networkx
curl -o /tmp/dtc.deb https://launchpad.net/ubuntu/+source/device-tree-compiler/1.4.7-1/+build/15279267/+files/device-tree-compiler_1.4.7-1_amd64.deb
sudo apt install /tmp/dtc.deb
rm /tmp/dtc.deb
# Get the kernel code
git clone https://github.com/MiCode/Xiaomi_Kernel_OpenSource -b $MIUI_KERNEL_BRANCH --depth 1 $WORK_DIR/kernel
# Get the toolchain
git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9 $WORK_DIR/toolchain
cd $WORK_DIR/toolchain
git reset --hard $GCC_TOOLCHAIN_COMMIT
# For Android Q and above kernels, you need to use Qualcomm toolchain version 8.0.0 or above:
# https://developer.qualcomm.com/software/snapdragon-llvm-compiler-android/tools
# curl https://developer.qualcomm.com/download/sdllvm/snapdragon-llvm-compiler-android-linux64-609.tar.gz
# tar vxzf snapdragon-llvm-compiler-android-linux64-609.tar.gz
# For some other operations, this path needs to be set to the LLVM_DIR variable.
cd $WORK_DIR/kernel
# make O=$OUTPUT_DIR clean
# make mrproper
make O=$OUTPUT_DIR REAL_CC=${LLVM_DIR}/clang CLANG_TRIPLE=aarch64-linux-gnu- $DEFCONFIG
make O=$OUTPUT_DIR -j$(nproc) REAL_CC=${LLVM_DIR}/clang CLANG_TRIPLE=aarch64-linux-gnu- 2>&1 | tee kernel.log
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment