Last active
July 28, 2024 13:38
-
-
Save Lua12138/b0bd3052cad9295a6b3f57a5a77fb562 to your computer and use it in GitHub Desktop.
Script for compiling Xiaomi kernel
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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