Install Patch linux kernel 5.0 with PREEMPT RT

From Lofaro Lab Wiki
Jump to: navigation, search

Patch linux kernel 5.0.21 with PREEMPT_RT for pseudo real time performance

Backup all important files before starting this process

Open a terminal

If you are working over a network start a screen

 $ screen

screen can be installed with

 $ sudo apt-get update
 $ sudo apt-get install screen

Install dependencies

 $ sudo apt-get update
 $ sudo apt-get install libncurses-dev libssl-dev bison flex

Download the 5.0 linux kernel to patch

 $ wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.0.tar.gz

Download the PREEMPT_RT patch

 $ wget https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/5.0/patch-5.0.21-rt16.patch.gz

Extract the linux kernel

 $ tar -xzvf linux-5.0.tar.gz

Move into the kernel director and patch the kernel

 $ cd linux-5.0/
 $ gzip -cd ../patch-5.0.21-rt16.patch.gz | patch -p1 --verboses

configure the kernel

 $ make menuconfig

Use UI to configure the kernel

 General setup -->
 Preemption Model (Voluntary Kernel Preemption (Desktop)) [Enter]
 Fully Preemptible Kernel (RT) [Enter] #Select
 [Esc][Esc]
 [Right Arrow][Right Arrow]
 <Save> [Enter]
 .config
 <Okay> [Enter]
 <Exit> [Enter]
 [Esc][Esc]
 [Right Arrow]
 <Exit> [Enter]

Compile and install the configured kernel

 $ make -j20
 $ sudo make modules_install -j20
 $ sudo make install -j20

Verify the installation

 $ cd /boot
 $ ls
 $ sudo update-grub

Verify that there menuentry containing the text "menuentry 'Ubuntu, with Linux 5.0.21-rt16'" in grub.cfg

 $ vim /boot/grub/grub.cfg

To change default kernel in grub, edit the GRUB_DEFAULT value in /etc/default/grub to your desired kernel.

0 is the first menuentry.

 $ sudo vim /etc/default/grub

reboot and verify the kernel

 $ sudo reboot

This could take a couple of minutes Once rebooted check the kernel version

$ uname -a

If done properly you should see something like

Linux robotRT 5.0.21-rt16 #1 SMP PREEMPT RT Fri Mar 20 11:22:40 EDT 2020 x86_64 x86_64 x86_64 GNU/Linux