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