Erstellung eines Echtzeit-Linux-Kernels in Ubuntu mit PREEMPT_RT

Um eine Echtzeit-Rechenleistung in Linux zu erreichen und Linux effektiv in ein RTOS zu verwandeln, können die meisten Distributionen mit dem als PREEMPT_RT bekannten Echtzeit-Kernel-Patch gepatcht werden.

15. März, 2023 8:00

Einführung

Wir haben bereits gezeigt, wie einfach es ist, einen Echtzeit-Linux-Kernel in Ubuntu 22.04 zu aktivieren, da Canonical diesen Kernel als Option anbietet. Es ist aber auch nicht sehr schwierig, den Standard-Linux-Kernel zu patchen, um einen eigenen Echtzeit-Linux-Kernel für Ihre Distribution zu erstellen. Die grundlegenden Schritte bestehen darin, die Kernelquellen und den PREEMPT_RT-Patch herunterzuladen, den Kernel zu patchen, den Kernel zu bauen, das System neu zu starten und den neuen Echtzeit-Kernel auszuwählen. Weitere Informationen über das Real Time Linux-Projekt, einschließlich der neuesten stabilen Version des RT_PREEMPT-Patches, finden Sie auf der Projektseite der Linux Foundation.

Voraussetzungen

Anweisungen

Wir beginnen mit dem Standard-Linux-Kernel, der in Ubuntu 22.04 enthalten ist: Version 5.15.0-43-generic.

  1. Erstellen Sie ein Arbeitsverzeichnis.

mkdir ~/kernel
cd ~/kernel

  1. Laden Sie die Kernel-Quelldateien und Echtzeit-Patchdateien für Ihre spezielle Linux-Kernel-Version von kernel.org herunter.

wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.15.96.tar.gz
wget https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/5.15/patch-5.15.96-rt61.patch.xz

  1. Entpacken Sie die Quelldateien.

tar -xzf linux-5.15.96.tar.gz
xz -d patch-5.15.96-rt61.patch.xz
cd linux-5.15.96
patch -p1 <../patch-5.15.96-rt61.patch

  1. Konfigurieren Sie die Kernel-Erstellungsoptionen und installieren Sie Paketabhängigkeiten.

cp /boot/config-5.15.0-43-generic .config
sudo apt update
sudo apt install make gcc libncurses-dev libssl-dev flex libelf-dev bison
make menuconfig

    1. Aktivieren Sie die Option "Fully Preemptible Kernel (Real-Time)" unter "General setup" / "Preemption Model", dann SAVE und EXIT.

  1. Bauen Sie den Kernel (Achtung: dies kann einige Zeit dauern). Für den Erstellungsprozess müssen wahrscheinlich mehrere Abhängigkeiten installiert werden (einige davon wurden im vorherigen Schritt behandelt). Wenn Sie also auf Erstellungsfehler stoßen, prüfen Sie bitte, ob weitere Pakete speziell für Ihr System erforderlich sind.

sudo make

  1. Installieren Sie die Kernel-Module.

sudo make modules_install

  1. Installieren Sie die Kernel-Module.

sudo make install

  1. Starten Sie neu und wählen Sie den neu erstellten PREEMPT_RT-Kernel anstelle des Standardkernels. Möglicherweise müssen Sie Ihre Grub-Konfiguration bearbeiten, um auf den Bootloader-Bildschirm zuzugreifen und den neuen Echtzeit-Kernel auszuwählen. Weitere Informationen und Hilfe zum Grub-2-Bootloader finden Sie unter https://help.ubuntu.com/community/Grub2.

  1. Überprüfen Sie, ob der neue Echtzeit-Kernel in Gebrauch ist. Sie sollten "-rt" im Kernel-Namen sehen.

Fazit

Wie Sie sehen können, ist es nicht schwierig, einen Echtzeit-Linux-Kernel in Ubuntu zu patchen, zu erstellen und zu installieren, nachdem Sie die obigen Schritte ausgeführt haben. Der Prozess ist für andere Linux-Distributionen derselbe. Für eine bessere Echtzeit-Performance empfehlen wir, die Firmware und das BIOS gemäß unseren Empfehlungen in unserem Developer Center einzurichten: https://developer.acontis.com/rt-faq/items/FAQ1013.html and https://developer.acontis.com/pcob.html.

Nun sind Sie auf dem besten Weg, Echtzeitanwendungen unter Linux zu entwickeln.