Requisitos Link para o cabeçalho
Alguma verção do Clang compilado pela Google para o android é nessesário, usar um dos exemplos abaixo.
Pre-builts:
Requistos do Debian para compilar o kernel.
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig clang axel xz-utils make ccache openssl libssl-dev bc gcc-aarch64-linux-gnu python-is-python3 android-tools-adb android-tools-fastboot
Codigo Fonte Link para o cabeçalho
git clone <codigo_fonte> ./kernel
cd kernel
# Caso queira KernelSU
curl -LSs "https://raw.githubusercontent.com/tiann/KernelSU/main/kernel/setup.sh" | bash -s main
# Caso queira KernelSU-Next
curl -LSs "https://raw.githubusercontent.com/KernelSU-Next/KernelSU-Next/next/kernel/setup.sh" | bash -
Compilando Link para o cabeçalho
Defconfig Link para o cabeçalho
Configurações do modelo estarão disponiveis em arch/aarch64/config ou arch/aarch64/config/vendor
Procedimento Link para o cabeçalho
Imagens do kernel(Image, Image-dtbo, …) estarão na pasta out/arch/aarch64/boot/
# Set env
SRC_DIR=$(pwd)
TC_DIR=<CLANG-PREBUILT>
JOBS=$(nproc)
MAKE_PARAMS="-j$JOBS -C $SRC_DIR O=$SRC_DIR/out ARCH=arm64 CC=clang CLANG_TRIPLE=aarch64-linux-gnu- LLVM=1 CROSS_COMPILE=$TC_DIR/bin/llvm- CONFIG_SECTION_MISMATCH_WARN_ONLY=y CONFIG_FRAME_WARN=0"
export PATH="$TC_DIR/bin:$PATH"
make mrproper # Clean kernel build
make $MAKE_PARAMS <DEF_CONFIG>
make $MAKE_PARAMS
Criando boot.img
Link para o cabeçalho
Requisistos: Link para o cabeçalho
git clone https://github.com/osm0sis/mkbootimg.git
CC=clang make
sudo make install
Procedimento: Link para o cabeçalho
Baixe a imagen boot.img original do aparelho de algum lugar(XDA, do propio celular…) e crie uma pasta contendo a imagen.
unpackbootimg -i boot.img | tee > KERNEL_CONFIG
Vai criar alguns arquivos, substitua o arquivo boot.img-kernel com o kernel que vc compilou(Image) e execute mkbootmg -h para saber quais opções estão disponiveis para criar a nova imagen boot.img e utilize o arquivo KERNEL_CONFIG para preecher elas.
Exemplo: Link para o cabeçalho
mkbootimg --kernel kernel --ramdisk ramdisk --cmdline 'console=null androidboot.hardware=qcom androidboot.memcg=1 lpm_levels.sleep_disabled=1 video=vfb:640x400,bpp=32,memsize=3072000 msm_rtb.filter=0x237 service_locator.enable=1 androidboot.usbcontroller=a600000.dwc3 swiotlb=0 loop.max_part=7 cgroup.memory=nokmem,nosocket firmware_class.path=/vendor/firmware_mnt/image pcie_ports=compat loop.max_part=7 iptable_raw.raw_before_defrag=1 ip6table_raw.raw_before_defrag=1 printk.devkmsg=on' -o boot.img --os_patch_level '2025-12' --os_version '11.0.0' --header_version 3
Testando Kernel (Não funciona com dispositivos que utilizam fastbootd, exemplo Samsung) Link para o cabeçalho
Reinicie o dispositivo no modo fastboot e execute:
fastboot boot boot.img
Se o celular iniciar corretamente procure uma forma de instalar o kernel permanentemente, exp:
fastboot flash boot.img