Ein Betriebssystem - viele Kernel

11.
Dezember
2023
Veröffentlicht von: Cesar Orban

Ist es nicht verwirrend, dass UEK7 die Bezeichnung „5.15.0“ trägt und nicht sämtliche Oracle Linux Kernels „uek“ in ihrer Bezeichnung haben? Dieser Monatstipp soll  zu den Kernel-Editionen und -Versionen unter Oracle Linux Klarheit bringen und zeigen wie man Kernels in einem System verwaltet.. 

Einleitung

Oracle Enterprise Linux, alias OEL, ermöglicht den Betrieb mit verschiedenen Kernels. Da dieses Thema nicht allzu einfach ist, wollen wir uns das Ganze näher betrachten. Dieser Artikel wendet sich an User mit grundlegenden Kenntnissen über die Linux-Architektur, die bereits das ein oder andere Mal mit OEL gearbeitet haben. Grundlegendes Verständnis von Paket Managern wird vorausgesetzt. DNF-Befehle werden unter Oracle Linux 7 und älter mit YUM statt DNF abgesetzt.

Unbreakable Enterprise Kernel (UEK)

Der UEK, ist der empfohlene Kernel für den Betrieb von OEL. Die Verwendung dieses Kernels ist kostenfrei und es lassen sich zahlreiche weitere premium Funktionen mittels einer kostenpflichtigen Subscription nutzen.

Red Hat Compatible Kernel (RHCK)

Bei RHCK handelt es sich um das Kernel Äquivalent von Red Hat. Dieser ist für die anpassungsfreie Ausführung von Software für Red Hat Linux unter Oracle Linux vorhanden. Der RHCK soll laut Oracle nur verwendet werden, wenn der Betrieb unter OEL anders nicht zu realisieren ist, da dieser die mögliche Performance von Oracle Linux einschränkt. Die Verwendung dieses Kernels war schon ein paar Mal ein Workaround für Bugs mit dem UEK. 

UEK-Versionierung

Die einzelnen Versionen des UEK tragen recht lange Bezeichnungen wie z. B. „5.15.0-105.125.6“, wobei der Teil vor den Bindestrich hier „5.15.0“ das Kernel Release ist. Oracle gibt den Kernel Releases durchnummerierte Aliase UEK1 bis UEK7, welche im Alltag griffiger sind. Die folgende Tabelle dient der Zuordnung zwischen dem Release und dem dazugehörigen Akronym.
 

 Kernel Release  Akronym
 5.15.0  UEK7
 5.4.17  UEK6
 4.14.35  UEK5
 4.1.12  UEK4
 3.8.13  UEK3
 2.6.39  UEK2
 2.6.32  UEK1


Mit neuen Releases werden dem Kernel neue Funktionen hinzugefügt und auch alte entfernt. Ein unbedachter Wechsel des UEK-Release kann die Funktionsfähigkeit der Systeme einschränken, da die Releases nicht vollständig untereinander kompatibel sind. Bei einer Oracle Datenbank sollte sichergestellt werden, dass das Release der Datenbank für das entsprechenden UEK-Release zertifiziert ist. Aktuell gibt es dazu einen interessanten Artikel von Mike Dietrich.
Oracle versorgt mehrere Releases des UEK zeitgleich mit Updates. Bei einem Systemupdate mittels „dnf update -y“ wird immer nur die neuste Version des aktuellen Kernel Release installiert und nicht der neuste Kernel. Der Wechsel des UEK-Release benötigt eine Anpassung der Konfiguration des Systems und wird noch zu einem späteren Zeitpunkt thematisiert.
 
Der zweite Teil der Bezeichnung nach dem Bindestrich (im Beispiel  „5.15.0-105.125.6“), der Teil „105.125.6“, ist seitens Oracle nicht genauer definiert und wird im Folgenden einfach als Patch Level bezeichnet. In gewissen Abständen veröffentlicht Oracle untergeordnete Major Releases. Diese Major Releases repräsentieren größere Sprünge des Patch Levels, wodurch Major Releases einen gewissen Teil des Patch Levels vorgeben und mehrere Patch Levels einen Update zuzuordnen sind. Wie bei den Releases des UEK gibt es auch für die Major Releases entsprechende Akronyme, die ebenfalls durchnummeriert sind und die Zahl mit einen vorangestellten „U“ für Update an das Akronym des jeweiligen Releases angehängt wird. Folgende Tabelle stehlt die Major Releases von UEK7 mit ihren Akronymen entgegen. 
 

 Kernel Akronym  Major Release
 UEK7U2  5.15.0-20*
 UEK7U1  5.15.0-10*
 UEK7  5.15.0


Der Stern ist in diesen Kontext als Platzhalter für eine beliebige Fortsetzung der Version zu sehen. So sind die Versionen „5.15.0-105.125.6.2“ und „5.15.0-106.131.4“ Patch Levels des Major Release UEK7U1. Stets aktuelle und vollständige Informationen zu Releases und Versionen findent man hier.

Infos zum laufenden Kernel

Standardmäßig wird immer die neuste Version des UEK verwendet, welche auf dem System installiert ist. Die Bezeichnung des laufenden Kernels erhält man mit folgendem Befehl:

# uname -r
5.4.17-2136.325.5.el7uek.x86_64

Der erste Teil der Bezeichnung ist die Version. Der zweite Teil el7 steht für Enterprise Linux 7 und gibt an, dass der Beispiel-Kernel für das OEL Releas 7 vorgesehen ist. Das Kürzel uek steht dafür, dass es sich um ein UEK handelt, bei einen RHCK ist kein Hinweis auf diesen im Output enthalten. Der letzte Teil gibt die vorgesehene Architektur des Prozessors an, in diesem Fall „X86-64“.

Folgender Befehl gibt den Veröffentlichungszeitpunkt des aktuell laufenden Kernels aus, auch wenn die generische MAN-Page es anders beschreibt:

# uname -v
#2 SMP Thu Oct 19 15:40:03 PDT 2023


Der nächste Befehl ist überaus nützlich, denn er gibt die Fixe der neueren Kernel-Versionen aus:

# dnf updateinfo list updates kernel-uek

Advisory ID     Advisory Art   Fixed ab Version
ELSA-2021-9176  Important/Sec. kernel-uek-4.14.35-1902.306.2.4…
ELBA-2021-9295  bugfix         kernel-uek-4.14.35-1902.306.2.5…


Oracle betitelt die Fixes/Einträge als Advisories. Davon gibt es drei Arten:

  • ELBA - Enterprise Linux Bug Advisory
  • ELSA - Enterprise Linux Security Advisory
  • ELEA - Enterprise Linux Enhancement Advisory

Der restliche Teil der Bezeichnung eines Advisory besteht aus dem jeweiligen Release Jahr und eine fortlaufende Zahl, die bei jedem neuen Advisory des jeweiligen Jahres um eins erhöht wird.
 
Genauere Informationen zu einem Advisory erhält man mit folgendem Befehl:

# dnf updateinfo info <Advisory>


Aufbewahrung alter Kernel

Oracle Linux installiert bei jedem Update eines Kernels den vollständigen Kernel in der jeweiligen Version neu und alte Kernel bleiben dem System erstmal erhalten, was im Falle eines defekten Kernels den Rücksprung auf den Vorherigen ermöglicht. OEL hebt standardmäßig jeweils die drei neusten Versionen des UEK und RHCK auf. Die Anzahl der aufbewahrten Kernels kann angepasst werden, jedoch kann die Größe der „/boot“ Partition zum limitierenden Faktor werden.
Mit dem Parameter „installonly_limit“ in der Datei „/etc/dnf/dnf.conf“ können die Anzahl der aufgehobenen UEKs und RHCKs von drei erhöhen oder verkleinern:
 

[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False

Zwei ist das Minimum, da diese Datei beim Update berücksichtigt wird, weshalb bei einem theoretischen Wert von Eins der Paket Manager den laufenden Kernel löschen müsste. Bei Oracle Linux 7 und älter finden sie den Parameter „installonly_limit“ unter „/etc/yum.conf“.


Übersicht der installierten Kernels

Zur Ausgabe der aktuell auf einem System befindlichen Kernel bietet sich folgender Befehl an:

grubby --info=ALL | grep ^kernel
kernel=/boot/vmlinuz-3.10.0-1160.105.1.0.1.el7.x86_64
kernel=/boot/vmlinuz-4.14.35-2047.531.2.1.el7uek.x86_64
kernel=/boot/vmlinuz-4.14.35-1902.3.2.el7uek.x86_64
kernel=/boot/vmlinuz-3.10.0-1062.el7.x86_64
kernel=/boot/vmlinuz-0-rescue-d279196d16b52d43937f07df8d070861


Installieren neuer Kernels

Kernels sind für den Paketmanager nur weitere RPMs, welche mit der genauen Paketbezeichnung in der jeweiligen Version installiert werden können:

# dnf install <Kernel UEK Packet>

In Regel werden Kernel mit den Systemupdates mittels „dnf update -y“ aktualisiert.


Suchen neuer Kernels

Mit Hilfe des folgenden Befehls werden die verfügbaren UEK-Versionen ausgegeben:

# dnf whatprovides kernel-uek


Löschen einzelner Kernel

Einzelne Kernels werden, wie andere RPM, mittels folgendem Befehles entfernt:

# dnf remove <genaue Paketbezeichnung>


Wechsel des Default-Kernels

Der Default-Kernel ist der "Kernel“, der verwendet wird, sofern beim Start des Systems nichts anderes angegeben wird. Den aktuellen Default-Kernel erhält man über folgenden Befehl:

# grubby --default-kernel 


Mit diesem Befehl wird ein Kernel mittels seines Pfads als Default-Kernel festgelegt. Den Pfad kann man der Ausgabe der installierten Kernels entnehmen:

# grubby --set-kernel <PFAD KERNEL> 


Hauptversions Wechsel des UEK

Für den Wechsel muss man wissen, dass Oracle für jede Hauptversions des UEK ein eigenes Repository zur Verfügung stellt. Für den Wechsel der Hauptversion muss man das Repository der alten Version deaktivieren und das der neuen aktivieren. Das Durchführen eines Systemupdates installiert den neuen Kernel und der Updateprozess wird abgeschlossen. Am einfachsten verwendet man den nachfolgenden Workflow.

Deaktivieren des alten UEK Release Repository:

# dnf config-manager --enable <Repository>


Aktivieren des neuen UEK Release Repository:

# dnf config-manager --disable <Repository>


Aktualisieren des Systems:

# dnf update -y


Leider unterscheidet sich der Prozess in den Details bei jedem Versionssprung.


Versionsmatrix

Nicht jede Version von Oracle Linux kann mit jeder Version vom UEK betrieben werden. Deshalb ist eine Kompatibilitätsmatrix notwendig. Die nachfolgende Übersicht beschränkt sich auf Oracle Linux 8.
 

 Oracle Linux Version  UEK6 unterstützt  UEK7 untrstützt
 OL8U9  ja  ja, Standard
 OL8U8  ja  ja, Standard
 OL8U7  ja   ja, Standard
 OL8U6  ja, Standard  ja
 OL8U5  ja, Standard  ja
 Ol8U4  ja, Standard  nein 
 OL8U3  ja, Standard  nein
 Ol8U2  ja, Standard  nein
 OL8U1  ja, Standard  nein
 OL8  ja  nein


Als Standard gilt hier ein Kernel, sofern er bei der Installation der jeweiligen Oracle Linux Version ausgeliefert wird und damit den ersten Kernel des jeweiligen Systems nach der Installation darstellt. Eine vollständige und immer aktuelle Kompatibilitätsmatrix findet man  hier.


Fazit

Sie sollten jetzt über das notwendige Wissen verfügen, um sich über die verschiedenen Kernels auf Ihrem System ein Bild machen zu können. Zum Schluss noch folgender Tipp zu Release Updates des UEK:
Bei Systemen, die ausschließlich Software aus Repositories von Oracle verwenden, sollte das Upgrade des UEK-Releas kein Problem darstellen, sofern Sie nicht unmittelbar nach dem Release updaten. Bei der Verwendung von Spezialsoftware wie einer Oracle Datenbank sollten Sie sich versichern, dass die Version der Software mit dem Release des UEK zertifiziert ist. Im Idealfall testen Sie den Betrieb mit einem neuen UEK-Release in einer entsprechenden Testumgebung. 
 

 

Jede Menge Know-how für Sie!

In unserer Know-How Datenbank finden Sie mehr als 300 ausführliche Beiträge zu den Oracle-Themen wie DBA, SQL, PL/SQL, APEX und vielem mehr.
Hier erhalten Sie Antworten auf Ihre Fragen.