GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux, AMD GPU, schwarzer Bildschirm beim Booten

Vor kurzem bin ich auf ein brandneues Hardwareproblem mit einer Linux-Distribution gestoßen. In Linux Mint 20.2 wurde beim Booten im Akkubetrieb, d. h. ohne Strom aus der Steckdose, der Bootvorgang irgendwann abgebrochen, wobei ein nicht reagierender schwarzer Bildschirm angezeigt wurde. Die einzige Lösung besteht darin, den Host neu zu starten oder mit angeschlossenem Ladegerät einzuschalten.

Interessant ist, dass dies auf einem relativ neuen IdeaPad 3-Laptop mit AMD Vega 8-Grafik passiert ist. Und es hat mich sehr geärgert, weil es anscheinend immer ein Problem mit der Hardware gibt. Drahtlos auf dieser Maschine, Grafik auf dieser, E/A-Steuerung hier, Kamera dort und so weiter. Immer Probleme, immer Ausreden. Mal sehen, was wir hier tun können und wie wir das beheben können.

Problem im Detail

Ich bin auf das Problem mit Linux Mint gestoßen. Aber ich vermute, dass das Problem eine viel breitere Basis betrifft. In der Tat, wenn Sie nach „AMD boot black screen“ suchen, erhalten Sie unzählige Ergebnisse für Forenthreads, seien es Ubuntu, Mint, Arch, Manjaro oder Gentoo, die bis ins Jahr 2019 zurückreichen, mit unzähligen Empfehlungen und sehr wenigen tatsächlichen Lösungen . Wieso den? Da das Beheben von Problemen mit Treibern Fachwissen erfordert, und wenn Ihr Kernel und/oder Ihre Treiber nicht die richtige Art von Funktionalität bieten, können Sie nicht viel tun. Dies rückt auch die Frage nach Open-Source- und Closed-Source-Treibern in den Fokus, als ob das einen Unterschied machen würde. Nein, denn Fachwissen ist Fachwissen.

Abgesehen von Mini-Rant hat der IdeaPad 3-Rechner eine Triple-Boot-Konfiguration, einschließlich MX-21 KDE und Windows. Da diese beiden anderen Systeme problemlos funktionieren, konnte ich ein Hardwareproblem ausschließen und mich darauf konzentrieren, was an der Mint-Startsequenz speziell falsch (und unterschiedlich) ist.

Zu diesem Zweck nahm ich die dmesg-, kern.log-, X.org.log- und Systemprotokolldateien von Mint und MX-21 und verglich sie Seite an Seite, indem ich tatsächliche Diffs durchführte. Der einzige wirkliche Unterschied liegt im Kernel-Protokoll, wo Mint aufhört zu booten, während die andere Distribution fröhlich weitermacht. Der Fehler lautet wie folgt:

...
Kernel:[] [drm:amdgpu_job_timedout [amdgpu]] *FEHLER* Prozessinformationen:Prozess Xorg PID 790 Thread Xorg:cs0 PID 824
Kernel:[] AMDGPU 0000:03:00.0:GPU-Reset beginnen!
Kernel:[] amdgpu 0000:03:00.0:GPU-Reset erfolgreich, Versuch,
fortzusetzen Kernel:[] [drm] PCIE GART von 1024M aktiviert (Tabelle bei 0x000000F400900000).
kernel:[] [drm] PSP wird fortgesetzt...
kernel:[] [drm] reserviert 0x400000 von 0xf47f800000 für PSP TMR
kernel:[] [drm] psp-Befehl fehlgeschlagen und Antwortstatus ist (0x7)
Kernel:[] [drm] VCN-Decodierung und -Codierung erfolgreich initialisiert (im SPG-Modus).
kernel:[] amdgpu 0000:03:00.0:ring gfx verwendet VM inv eng 0 auf Hub 0
...

Irgendwann gelingt der GPU-Reset, aber es hilft nicht. Der Bildschirm bleibt schwarz. Lassen Sie mich Ihnen nun zeigen, wie Sie das Problem lösen oder umgehen können. Uns stehen einige Optionen zur Verfügung.

Lösungen

OK, also Folgendes können Sie tun:

Installieren Sie einen neuen Kernel (falls verfügbar)

Aktualisieren Sie den Systemkernel und/oder die Firmware. In Linux Mint, das normalerweise Kernel anheftet, können Sie manuell einen neuen über das System-Update-Dienstprogramm herunterladen. Es wird Sie warnen und Sie können dann die gewünschte Version auswählen und konfigurieren. Für Mint 20.2 Uma können Sie von Kernel 5.4 auf Kernel 5.13 aufsteigen.

Als ich den neuen Kernel installierte und mir die Konfigurationsausgabe ansah, bemerkte ich auch eine Reihe von Warnmeldungen während der Generierung der initramfs-Datei:

...
W:Mögliche fehlende Firmware /lib/firmware/amdgpu/vangogh_vcn.bin für Modul amdgpu
W:Mögliche fehlende Firmware /lib/firmware/amdgpu/navy_flounder_vcn.bin für Modul amdgpu
W:Mögliche fehlende Firmware /lib/firmware/amdgpu/navi12_vcn.bin für Modul amdgpu
W:Mögliche fehlende Firmware /lib/firmware/amdgpu/aldebaran_vcn.bin für Modul amdgpu
...

Sie können diese ignorieren, wenn Ihre AMD-GPU-Architektur nicht in dieser Liste angezeigt wird. In meinem Fall wurde Vega 8 korrekt unterstützt (d. h. nicht in dieser Liste). Wie kann man das wissen? Nun, Sie können den Befehl lspci -v ausführen, der alle Ihre verschiedenen Hardwarekomponenten auflistet. Sie benötigen den Eintrag, der mit dem richtigen verwendeten Kernel-Treiber übereinstimmt, in diesem Fall amdpu.

03:00.0 VGA-kompatibler Controller:Advanced Micro Devices, Inc. [AMD/ATI] Picasso (rev c2) (prog-if 00 [VGA-Controller])
Subsystem:Lenovo Picasso
...

Auf diese Weise entdeckte ich, dass meine Vega 8-Grafik tatsächlich einem Architekturmodell namens Picasso entspricht. Ich denke, das erklärt die verwendeten Namen im Allgemeinen. Diese Ausgabe ist nur unordentliches Rauschen, das Sie über neue Kernel informiert, die bestimmte GPU-Modelle nicht unterstützen. Auch dies eröffnet eine umfassendere Frage der Linux-Abwärtskompatibilität und dergleichen, aber wir werden das jetzt nicht diskutieren. Starten Sie neu und das sollte hoffentlich funktionieren.

Starten Sie den Host mit eingestecktem Strom

Das ist ärgerlich, aber es ist eine einfache Problemumgehung, wenn Sie keine Systemänderungen vornehmen möchten oder wenn Sie nichts Besonderes tun möchten, bis Ihre Linux-Distribution das Problem behebt. Das Problem hebt jedoch einen (kleinen) Nachteil der Kernel-Richtlinie von Mint und ein allgemeines, umfassenderes Phänomen der Hardwareunterstützung in Linux hervor. Denn wenn Ihre Distribution keinen aktualisierten Kernel zur Verfügung hat, können Sie nicht viel tun.

Der Grund, warum dieser „Trick“ funktioniert, liegt darin, dass ein System unter voller Leistung (im Gegensatz zu Batteriebetrieb) unterschiedliche Leistungsprofile verwendet. Wenn Sie wirklich versiert sind, können Sie mit Ihren BIOS-Energieleistungsoptionen spielen, falls verfügbar, oder die GPU-Energieeinstellungen optimieren, aber dies ist nur als vorübergehende Notlösung gedacht.

Ändern Sie die Boot-Parameter

In Fortsetzung dessen, was ich gerade erwähnt habe, können Sie das System starten, indem Sie eine Reihe verschiedener Parameter an das Kernelmodul AMD GPU (amdgpu) übergeben. Sie können überprüfen, welche Art von Parametern und Optionen das Modul unterstützt, indem Sie den Befehl modinfo ausführen:

modinfo amdgpu

Dateiname:/lib/modules/5.13.0-22-generic/kernel/drivers/gpu/drm/amd/amdgpu
/amdgpu.ko
Lizenz:GPL und zusätzliche Rechte
Beschreibung:AMD GPU
Autor:AMD Linux Driver Team
...
parm:audio:Audio enable (-1 =auto, 0 =disable, 1 =enable) (int)
parm:disp_priority:Display Priority (0 =auto, 1 =normal, 2 =high) (int)
parm:hw_i2c:hw i2c engine enable (0 =disable) ( int)
parm:pcie_gen2:PCIE Gen2-Modus (-1 =automatisch, 0 =deaktivieren, 1 =aktivieren) (int)
parm:msi:MSI-Unterstützung (1 =aktivieren, 0 =deaktivieren, - 1 =automatisch) (int)
...

Zum Beispiel einige der verfügbaren Optionen, die Sie ausprobieren können – aber tun Sie es NICHT, es sei denn, Sie verstehen, was Sie tun!

amdgpu.noretry=0
amdgpu.dc=1

Diese müssen an die Kernel-Boot-Zeile im Boot-Menü angehängt werden. Bei den neuesten Linux-Distributionen, die den GRUB2-Bootloader verwenden, lautet die Befehlsfolge dann wie folgt:

  • Öffne /etc/default/grub in einem Texteditor, als root oder sudo (vorher ein Backup erstellen)
  • Fügen Sie eine oder mehrere amdgpu-Optionen zur Zeile GRUB_CMDLINE_LINUX_DEFAULT hinzu.
  • Speichern Sie die Datei und aktualisieren Sie die GRUB-Konfiguration mit:

sudo update-grub

Oder auf Systemen, die das obige Wrapper-Skript nicht verwenden:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Starten Sie Ihr System neu und prüfen Sie, ob Ihr Problem behoben ist. Sie können überprüfen, wie das System gebootet hat, indem Sie die Kernel-Befehlszeile untersuchen - oder besser gesagt, ob es im Akkubetrieb problemlos bootet, haha!

cat /proc/cmdline

Nun ist die große Frage, welche AMDGPU-Optionen Sie hinzufügen sollten?

Darauf gibt es keine einfache Antwort, fürchte ich. In den meisten Fällen werden Sie, kurz vor einer tatsächlichen Kernel-/Firmware-Korrektur, basierend auf der Fehlermeldung, die Sie im Kernel-Protokoll sehen, raten und hoffen, dass die spezifische Option den Zweck erfüllt. Das liegt daran, dass Fehlermeldungen oft generisch sind, und ohne Erfahrung mit dem Grafikstack und dem jeweiligen Treiber können Sie es nicht wirklich mit einer Handvoll Kernelmoduloptionen festnageln.

Das Vornehmen dieser Änderungen kann möglicherweise zu zusätzlichen Problemen und Komplikationen führen, weshalb Sie sie nicht blind anwenden oder einfach irgendwelche Vorschläge aus einem Forum kopieren sollten. Meine Tests zeigen, dass keine Option wirklich einen großen Unterschied macht. Die beiden oben aufgeführten dienen nur als Referenz. Wenn Kernel-Updates dennoch nicht funktionieren und Sie in der Lage sein müssen, den Laptop im Akkubetrieb zu verwenden, haben Sie meiner Meinung nach nichts zu verlieren, und Sie können genauso gut experimentieren und sehen, was sich ergibt.

Schlussfolgerung

Na, bitte. Hoffentlich verhält sich Ihr AMD-Grafik-Laptop mit Linux jetzt korrekt, und Sie sehen das Problem mit dem schwarzen Bildschirm beim Booten nicht mehr, während Sie Akkustrom verwenden (oder in einem anderen Szenario). Mein Tutorial skizziert drei Hauptansätze:Kernel-Upgrade, Umgehung des Stromverbrauchs und einige Hackerangriffe mit Kernel-Modulparametern, die riskant sind und Ihnen höchstwahrscheinlich nicht die besten Ergebnisse liefern, aber hey.

Ich mag solche Probleme nicht. Sie erinnern mich immer daran, wie zerbrechlich Linux ist. Ja, es läuft auf Tonnen von Hardware, und das ist lobenswert, aber es sind immer 95 % oder 91 %, nie 100 % durch und durch. Und das ist ärgerlich. Nun, das ist es jedenfalls. Jetzt gehe ich zu meiner nächsten Tuxy-Hürde. Wir sehen uns.


Linux
  1. Linux – Kernel-IP-Weiterleitung?

  2. Linux – Kernel kann /dev/sda-Datei während des Bootens nicht finden?

  3. Linux – Sind verschiedene Linux/Unix-Kernel austauschbar?

  4. Schwarzer Bildschirm beim Booten nach AMDGPU-PRO-Installation (16.04)?

  5. Ist es möglich, den Linux-Kernel zu booten, ohne ein initrd-Image zu erstellen?

Linux-Kernel vs. Mac-Kernel

So beheben Sie den schwarzen Bildschirm von Google Chrome unter Linux OS (Wayland)

Mein 10 Jahre alter HP Pavilion bootet keine modernen Distributionen mehr

Notepad++ unter Linux optimieren

Eine grundlegende Anleitung zum Linux-Boot-Prozess

[Behoben] Kali Linux bleibt beim Booten auf schwarzem Bildschirm hängen