====== RealTime (RT) Kernel ======
basierend auf : https://www.raspberrypi.com/documentation/computers/linux_kernel.html#building
===== Compilieren =====
* ''sudo apt install git bc bison flex libssl-dev make libncurses5-dev'' #I think this is all the tools required
* ''mkdir kernel && cd kernel/''
* ''git clone %%--%%depth=1 %%--%%branch rpi-6.12.y https://github.com/raspberrypi/linux''
* ''wget https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/6.12/patch-6.12.39-rt11.patch.gz'' \\ https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/6.12/
* ''cd linux/''
* ''zcat ../patch-6.12.39-rt11.patch.gz | patch -p1 %%--%%dry-run'' #check the patch fits
* ''zcat ../patch-6.12.39-rt11.patch.gz | patch -p1''
* ''KERNEL=kernel8''
* ''make ARCH=arm64 bcm2711_defconfig''
* ''make ARCH=arm64 menuconfig''
* General setup --->
*
Preemption Model (Preemptible Kernel (Low-Latency Desktop)) --->
[*] Fully Preemptible Kernel (Real-Time)
[ ] Preemption behaviour defined on boot
* CPU Power Management aus !
* Beim Exit Config Save -> Yes
* ''nano .config'' \\ ''CONFIG_LOCALVERSION=%%"%%-V8_DrKlipper_RT%%"%%''
* :!: Hier auf gar keinen Fall Leerzeichen einbauen. Gibt sonst am Ende Compile und Kopierfehler!
* ''time make -j6 ARCH=arm64 Image.gz modules dtbs''
* CPU Cores * 1,5 -> ''nproc''
==== Lokale Installation ====
echo $KERNEL
sudo make modules_install
sudo cp arch/arm64/boot/dts/broadcom/*.dtb /boot/
sudo cp arch/arm64/boot/dts/overlays/*.dtb* /boot/overlays/
sudo cp arch/arm64/boot/dts/overlays/README /boot/overlays/
sudo cp arch/arm64/boot/Image.gz /boot/$KERNEL.img
==== Kopier Installation ====
* **Der erste Part passiert auf einem Raspberry Pi 4 - Kompilierzeit ca. 2 Stunden**
* USB Stick mounten \\ ''sudo mkdir /mnt/copy'' \\ ''sudo mount -t ext4 /dev/sdb1 /mnt/copy'' \\ ''sudo chown -R pi:pi /mnt/copy''
* Module kopieren \\ ''sudo make ARCH=arm64 INSTALL_MOD_PATH=/mnt/copy modules_install''
* Overlays und Kernel kopieren \\ ''sudo mkdir -p /mnt/copy/boot/firmware/overlays'' \\ ''sudo cp arch/arm64/boot/Image.gz /mnt/copy/boot/firmware/$KERNEL.img'' \\ ''sudo cp arch/arm64/boot/dts/broadcom/*.dtb /mnt/copy/boot/firmware/'' \\ ''sudo cp arch/arm64/boot/dts/overlays/*.dtb* /mnt/copy/boot/firmware/overlays/'' \\ ''sudo cp arch/arm64/boot/dts/overlays/README /mnt/copy/boot/firmware/overlays/''
* ''sudo umount /mnt/copy/''
* **Der zweite Part dann auf dem Raspberry Pi Zero 2W**
* Libs kopieren \\ ''sudo cp -r /mnt/copy/lib/modules/* /lib/modules/''
* Kernel und Overlays kopieren \\ ''KERNEL=kernel8'' \\ ''sudo cp -n /mnt/copy/boot/firmware/*.dtb /boot/firmware/'' \\ ''sudo cp -n /mnt/copy/boot/firmware/overlays/*.dtb* /boot/firmware/overlays/'' \\ ''sudo cp -n /mnt/copy/boot/firmware/overlays/README /boot/firmware/overlays/'' \\ ''sudo cp /mnt/copy/boot/firmware/$KERNEL.img /boot/firmware/$KERNEL.img''
''
* ''sudo reboot''
===== Links =====
* https://www.raspberrypi.com/documentation/computers/linux_kernel.html
* Ursprung: https://forums.raspberrypi.com/viewtopic.php?t=344994
* https://blog.emlid.com/raspberry-pi-real-time-kernel/
* ISO erstellen mit RT Kernel \\ https://github.com/remusmp/rpi-rt-kernel