Patches testen

wchilders@nearce.com Version F38 Last review: 2021-08-11
Eine Kurzanleitung zum Testen, ob ein Patch Ihr Problem behebt.

Gelegentlich werden Sie bei dem Versuch, ein Kernel-Problem zu beheben (insbesondere eines, das spezifisch für Ihre Hardware ist), möglicherweise aufgefordert, einen Patch anzuwenden, um zu überprüfen, ob das Problem behoben ist, bevor der Patch eingebunden wird.

Dies ist eine Kurzanleitung, wie Sie den Quellcode des Fedora-Kernels für Ihre Fedora-Version erhalten, den Patch anwenden und einen Kernel zum Testen erstellen. Diese Anleitung richtet sich an Benutzer, die mit dem Fedora-Kernel-Entwicklungsprozess nicht vertraut sind und setzt nur grundlegende Kenntnisse der zugehörigen Werkzeuge voraus.

Einrichtung

Als Erstes müssen Sie, falls noch nicht geschehen, fedpkg (das RPM-Paketbaudienstprogramm von Fedora) installieren:

sudo dnf install fedpkg

Als Nächstes beschaffen Sie sich den Quellcode (dadurch wird ein neues Unterverzeichnis „kernel“ erstellt, in dem alle notwendigen Dateien abgelegt werden):

fedpkg clone --anonymous kernel

Wechseln Sie anschließend in das erstellte Verzeichnis „kernel“:

cd kernel

Nachdem Sie das Kernel-Verzeichnis gewechselt haben, müssen Sie mit dem folgenden Befehl zum Zweig für Ihre aktuelle Fedora-Version wechseln, wobei „<Fedora-Version>“ Ihre Fedora-Version ist:

fedpkg switch-branch f<Fedora-Version>

Wenn Sie beispielsweise Fedora 34 verwenden, würden Sie Folgendes ausführen:

fedpkg switch-branch f34

Zum Schluss müssen Sie sich mit dem folgenden Befehl zur Gruppe „mock“ hinzufügen, wobei „<Benutzername>“ Ihr Fedora-Benutzername ist:

usermod -a -G mock <Benutzername>

Damit diese Änderung wirksam wird, können Sie sich entweder ab- und wieder anmelden oder den folgenden Befehl ausführen:

newgrp -

Anwenden des Patches

Um den Patch anzuwenden, speichern Sie die von Ihnen angeforderte .patch-Datei im Verzeichnis „kernel“, das im vorherigen Schritt erstellt wurde, wie folgt:

linux-kernel-test.patch

Pakete bauen

Um die Kernel-Pakete zu erstellen, stellen Sie zunächst sicher, dass Sie sich im Verzeichnis „kernel“ befinden.

Dieser nächste Schritt kann eine Weile dauern, warten Sie daher unbedingt, bis Sie genügend Zeit haben, Ihren Computer arbeiten zu lassen.

Führen Sie anschließend folgenden Befehl aus:

fedpkg mockbuild

Gönnen Sie sich zum Schluss ein heißes Getränk, machen Sie einen Spaziergang, spielen Sie mit Ihrem Hund oder entspannen Sie sich auf andere Weise und kommen Sie später wieder.

Installation der Pakete

Um die Pakete zu installieren, stellen Sie zunächst sicher, dass Sie sich im Verzeichnis „kernel“ befinden. Von dort aus wechseln Sie in das Verzeichnis „results_kernel“:

cd results_kernel

Dieses Verzeichnis enthält ein einzelnes Unterverzeichnis mit der Kernel-Versionsnummer. Verwenden Sie den Befehl „ls“, um dessen Namen zu ermitteln, zum Beispiel:

ls
5.13.9

Wechseln Sie in dieses Verzeichnis:

cd 5.13.9

Wiederholen Sie diesen Vorgang noch einmal:

ls
200.fc34
cd 200.fc34

Wenn Sie schließlich den Befehl „ls“ noch einmal ausführen, sehen Sie eine Reihe von „.rpm“-Dateien. Zum Beispiel:

ls -1
build.log
hw_info.log
installed_pkgs.log
kernel-5.13.9-200.fc34.x86_64.src.rpm
kernel-5.13.9-200.fc34.x86_64.rpm
kernel-core-5.13.9-200.fc34.x86_64.rpm
kernel-debug-5.13.9-200.fc34.x86_64.rpm
kernel-debug-core-5.13.9-200.fc34.x86_64.rpm
kernel-debug-debuginfo-5.13.9-200.fc34.x86_64.rpm
kernel-debug-devel-5.13.9-200.fc34.x86_64.rpm
kernel-debuginfo-5.13.9-200.fc34.x86_64.rpm
kernel-debuginfo-common-x86_64-5.13.9-200.fc34.x86_64.rpm
kernel-debug-modules-5.13.9-200.fc34.x86_64.rpm
kernel-debug-modules-extra-5.13.9-200.fc34.x86_64.rpm
kernel-debug-modules-internal-5.13.9-200.fc34.x86_64.rpm
kernel-devel-5.13.9-200.fc34.x86_64.rpm
kernel-modules-5.13.9-200.fc34.x86_64.rpm
kernel-modules-extra-5.13.9-200.fc34.x86_64.rpm
kernel-modules-internal-5.13.9-200.fc34.x86_64.rpm
root.log
state.log

Entfernen Sie alle .src.rpm-Dateien mit folgendem Befehl:

rm *.src.rpm

Die Liste sollte nun etwa so aussehen:

ls -1
build.log
hw_info.log
installed_pkgs.log
kernel-5.13.9-200.fc34.x86_64.rpm
kernel-core-5.13.9-200.fc34.x86_64.rpm
kernel-debug-5.13.9-200.fc34.x86_64.rpm
kernel-debug-core-5.13.9-200.fc34.x86_64.rpm
kernel-debug-debuginfo-5.13.9-200.fc34.x86_64.rpm
kernel-debug-devel-5.13.9-200.fc34.x86_64.rpm
kernel-debuginfo-5.13.9-200.fc34.x86_64.rpm
kernel-debuginfo-common-x86_64-5.13.9-200.fc34.x86_64.rpm
kernel-debug-modules-5.13.9-200.fc34.x86_64.rpm
kernel-debug-modules-extra-5.13.9-200.fc34.x86_64.rpm
kernel-debug-modules-internal-5.13.9-200.fc34.x86_64.rpm
kernel-devel-5.13.9-200.fc34.x86_64.rpm
kernel-modules-5.13.9-200.fc34.x86_64.rpm
kernel-modules-extra-5.13.9-200.fc34.x86_64.rpm
kernel-modules-internal-5.13.9-200.fc34.x86_64.rpm
root.log
state.log

Installieren Sie abschließend alle RPM-Pakete in diesem Verzeichnis mit dnf:

dnf install ./*.rpm

Testen des Kernels

Sobald alles erfolgreich installiert ist, starten Sie den Computer neu. Der von Ihnen erstellte Kernel sollte beim Systemstart automatisch von GRUB ausgewählt werden. Lassen Sie Ihren Computer einfach hochfahren und prüfen Sie, ob Ihr Problem behoben ist.

Gehen Sie zurück

Wenn Sie die Tests abgeschlossen haben und zum vorherigen Kernel zurückkehren möchten, müssen Sie den Computer neu starten. Wählen Sie dann beim Start von GRUB mithilfe der Pfeiltasten einen älteren Kernel aus (in diesem Fall haben wir beispielsweise Version 5.13.9 kompiliert, also wählen wir 5.13.8 aus der Liste).

Nach dem Neustart verwenden Sie folgenden Befehl, um die Installation des Kernels rückgängig zu machen:

sudo dnf history undo last

Anschließend werden Sie aufgefordert, die soeben installierten Kernel-Pakete zu entfernen. Falls weitere Pakete angezeigt werden, verwenden Sie dnf history, um die zu entfernende Transaktion zu finden. Suchen Sie nach der Zahl am Anfang einer Zeile, die die installierte Kernel-Version enthält:

dnf history --reverse
...
24 | install ./kernel-5.13.9-200.fc34.x86_64.rpm ...
...

Diese Nummer „24“ kann dann mit folgendem Befehl rückgängig gemacht werden:

sudo dnf history undo 24

Wenn Sie schließlich einen Neustart durchführen, sollte der neue Kernel (z. B. 5.13.9) nicht mehr in GRUB angezeigt werden, und Ihr vorheriger Kernel (z. B. 5.13.8) sollte automatisch ausgewählt werden.