Skip to content

Latest commit

 

History

History
82 lines (57 loc) · 1.93 KB

File metadata and controls

82 lines (57 loc) · 1.93 KB

Compiling PreemptRT for RPi 4B

Cross-compiled on Ubuntu 18.04.

Install dependencies.

sudo apt update
sudo apt install build-essential bison byacc flex

Create build directories.

mkdir ~/rpi-kernel
cd ~/rpi-kernel
mkdir rt-kernel

Clone the raspberry pi kernel repo (preempt rt branch) and tools repo.

git clone https://github.com/raspberrypi/linux.git -b rpi-4.19.y-rt
git clone https://github.com/raspberrypi/tools.git

Set environment variables.

export ARCH=arm
export CROSS_COMPILE=~/rpi-kernel/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-
export INSTALL_MOD_PATH=~/rpi-kernel/rt-kernel
export INSTALL_DTBS_PATH=~/rpi-kernel/rt-kernel

Make the configuration (e.g., for Pi4B, BCM2711).

# For Pi4B
export KERNEL=kernel7l
cd ~/rpi-kernel/linux/
make bcm2711_defconfig

# For Pi 2/3B(+)
#export KERNEL=kernel7
#cd ~/rpi-kernel/linux/
#make bcm2709_defconfig

Compile the kernel.

make -j12 zImage
make -j12 modules
make -j12 dtbs
make -j12 modules_install # make note of the kernel version (e.g., DEPMOD  4.19.71-rt24-v7l+)
make -j12 dtbs_install

mkdir $INSTALL_MOD_PATH/boot
./scripts/mkknlimg ./arch/arm/boot/zImage $INSTALL_MOD_PATH/boot/$KERNEL.img
cd $INSTALL_MOD_PATH/boot
mv $KERNEL.img kernel7_rt.img

Tar/gzip up the files and transfer them to the Pi:

cd $INSTALL_MOD_PATH
tar czf ../rt-kernel.tgz *
cd ..
scp rt-kernel.tgz pi@<pi_address>:/tmp

Now, on the Pi, extract and install the kernel:

cd /tmp
tar xzf rt-kernel.tgz
cd boot
sudo cp -rd * /boot/
cd ../lib
sudo cp -dr * /lib/
cd ../overlays
sudo cp -d * /boot/overlays
cd ..
sudo cp -d bcm* /boot/

Modify /boot/config.txt:

# add
kernel=kernel7_rt.img

Reboot the Pi, and verify the rt kernel is running:

uname -r # should see the kernel version, e.g. 4.19.71-rt24-v7l+