Patches testen
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.
Want to help? Learn how to contribute to Fedora Docs ›