#!/usr/bin/env bash # Custom Kernel Build end script # Custom RaspberryPi Kernel builder # Written by Guy Sheffer # GPL V3 ######## set -x set -e # Source error handling, leave this in place source /common.sh install_cleanup_trap function copy_and_save(){ if [ "$KERNEL_EXPORT" == "yes" ]; then copy_and_export "${KERNEL_EXPORT_NAME}" $@ else cp -v $@ fi } function copy_and_save_folder(){ if [ "$KERNEL_EXPORT" == "yes" ]; then copy_and_export_folder "${KERNEL_EXPORT_NAME}" $@ else cp -va $@ fi } function build_kernel(){ KERNEL_SELECT=$1 pushd /home/pi pushd linux if [ "$KERNEL_SELECT" == "kernel7" ]; then KERNEL="kernel7" make ARCH=arm bcm2709_defconfig elif [ "$KERNEL_SELECT" == "kernel" ]; then KERNEL="kernel" make ARCH=arm bcmrpi_defconfig elif [ "$KERNEL_SELECT" == "kernel7l" ]; then KERNEL="kernel7l" make ARCH=arm bcm2711_defconfig fi echo "${KERNEL_CONFIG_APPEND}" >> .config # CROSS_COMPILE=arm-linux-gnueabihf- make -j4 zImage modules dtbs ARCH=arm mkdir kernel-rt INSTALL_MOD_PATH=kernel-rt make modules_install copy_and_save arch/arm/boot/Image /"${BASE_BOOT_MOUNT_PATH}"/${KERNEL_SELECT}.img # TODO: figure out which dtbo to move copy_and_save arch/arm/boot/dts/overlays/*.dtb* /"${BASE_BOOT_MOUNT_PATH}"/overlays/ copy_and_save arch/arm/boot/dts/overlays/README /"${BASE_BOOT_MOUNT_PATH}"/overlays/ pushd arch/arm/boot/dts if [ "$KERNEL" == "kernel7" ]; then copy_and_save bcm2709-rpi-2-b.dtb bcm2710-rpi-3-b.dtb bcm2710-rpi-cm3.dtb bcm2710-rpi-3-b-plus.dtb /"${BASE_BOOT_MOUNT_PATH}"/ elif [ "$KERNEL" == "kernel" ]; then copy_and_save bcm2708-rpi-0-w.dtb bcm2708-rpi-b-plus.dtb bcm2708-rpi-b.dtb bcm2708-rpi-cm.dtb bcm2708-rpi-zero.dtb bcm2708-rpi-zero-w.dtb bcm2708-rpi-cm.dtb /"${BASE_BOOT_MOUNT_PATH}"/ elif [ "$KERNEL" == "kernel7l" ]; then copy_and_save bcm2711-rpi-4-b.dtb /"${BASE_BOOT_MOUNT_PATH}"/ fi popd copy_and_save_folder kernel-rt/lib / rm -rf kernel-rt popd popd } pushd /home/pi pushd linux if [ "$KERNEL_TYPE" == "both" ] || [ "$KERNEL_TYPE" == "all" ] || [ "$KERNEL_TYPE" == "v6" ]; then build_kernel "kernel" fi if [ "$KERNEL_TYPE" == "both" ] || [ "$KERNEL_TYPE" == "all" ] || [ "$KERNEL_TYPE" == "v7" ]; then build_kernel "kernel7" fi if [ "$KERNEL_TYPE" == "all" ] || [ "$KERNEL_TYPE" == "v8" ]; then build_kernel "kernel7l" fi make clean popd if [ "$KERNEL_SOURCE_CLEANUP" == "yes" ]; then rm -rf linux rm "${KERNEL_COMMIT}.tar.gz" fi echo "$KERNEL_COMMIT" > /etc/kernel_commit popd