Wie kann ich AMD Crimson auf 64-Bit-Arch Linux installieren?

3905
teresko

Ich habe versucht, die neuesten AMD-Treiber auf meinem Linux-Computer zu installieren, aber nachdem ich ihn zum Kompilieren gebracht habe, wird ich mit dieser Nachricht begrüßt:

modprobe: ERROR: 'fglrx' konnte nicht eingefügt werden: Unbekanntes Symbol im Modul oder unbekannter Parameter (siehe dmesg) ist fehlgeschlagen.

Bitte beachten Sie, dass ich in dieser Linux-Sache nicht so gut bin, weil ich eher eine BSD-native bin.

Situative Details

  • Arch Linux, x86_64, Version 2016.01.01
  • Kernel-Version: 4.3.3-2
  • AMD Radeon R9 290x
  • Crimson, fglrx 15.302

Bis jetzt gemacht

Am Anfang kam das Installationsskript nicht einmal zum EULA-Teil, weil ich das kernel-headersPaket installieren musste . An diesem Punkt könnte ich tatsächlich versuchen, es zu installieren.

Beim Ausführen des Skripts wurde ein Fehler angezeigt:

/usr/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:634:9: error: void value not ignored as it ought to be  len = seq_printf(m, "%d\n", major); ^ 

Nach ein paar kleinen Sprüchen fand ich diese Lösung und führte sie manuell aus/usr/lib/modules/fglrx/build_mod/make.sh

Die Zusammenstellung endete jedoch mit dieser Nachricht:

WARNING: "mtrr_add" [/usr/lib/modules/fglrx/build_mod/2.6.x/fglrx.ko] undefined! WARNING: "mtrr_del" [/usr/lib/modules/fglrx/build_mod/2.6.x/fglrx.ko] undefined! 

Natürlich solltest du die Warnung ignorieren, also habe ich einfach nur die kompilierten Module installiert ... was zu einer Nachricht führte:

modprobe: ERROR: 'fglrx' konnte nicht eingefügt werden: Unbekanntes Symbol im Modul oder unbekannter Parameter (siehe dmesg) ist fehlgeschlagen.

Nach einem Blick auf dmesg sehe ich folgende Zeilen:

[ 2848.332722] fglrx: module license 'Proprietary. (C) 2002 - ATI Technologies, Starnberg, GERMANY' taints kernel. [ 2848.332725] Disabling lock debugging due to kernel taint [ 2848.343063] fglrx: Unknown symbol mtrr_del (err 0) [ 2848.343114] fglrx: Unknown symbol mtrr_add (err 0) 

Einige Googles führen mich zu dieser Mail-List-Nachricht: https://patchwork.ozlabs.org/patch/510277/, in der die Entfernung erwähnt wird, mtrr_add()weil sie irgendwie schlecht ist:

Der Kreuzzug, der mtrr_add () durch die Architektur-Agnostik arch_phys_wc_add () ersetzen soll, ist abgeschlossen. Dadurch wird sichergestellt, dass Schreibkombinierungsimplementierungen (PAT auf x86) anstelle der Verwendung von MTRR genutzt werden. Wenn der Kreuzzug jetzt abgeschlossen ist, verbergen Sie den direkten MTRR-Zugriff für die Fahrer.

Was soll ich jetzt machen?

Ich habe keine Ahnung, wie ich an dieser Stelle vorgehen soll? Soll ich mich an der Quelle unterscheiden und mit mtrr_addund nach Funktionen suchen mtrr_del? Gibt es einen Patch, den ich anwenden sollte? Ist das alles nur ein großer Misserfolg und ich sollte aufgeben?

1
/ edit: Kleine Korrektur: Dieser Treiber ist bis Linux 4.2 kompatibel (naja, der `seq_printf`-Aufruf sowieso). AMD sagt, dass es bis 3.19 kompatibel ist. Sie müssen also einen älteren Kernel-Zweig verwenden. Daniel B vor 8 Jahren 0
@DanielB hmm .. da ich nicht wirklich gut darin bin, werde ich einfach versuchen, die Version 2015.12.01 erneut zu installieren (es ist mit dem Kernel 4.2.5), denn basierend auf dem, was ich gegoogelt habe, könnte ein Downgrade eines frisch installierten Systems eine Möglichkeit sein zu kompliziert für mich teresko vor 8 Jahren 0
Das wird nicht funktionieren, beim ersten Update wird es wieder kaputt gehen. Sie müssen ein anderes Kernel-Paket oder eine andere Distribution verwenden, da Arch stets auf dem neuesten Stand ist. Ältere Paketversionen werden schnell entfernt. Daniel B vor 8 Jahren 0

1 Antwort auf die Frage

1
teresko

Dank @DanielB- Kommentaren habe ich es funktioniert .

Also ... was ich tun musste, war ein Downgrade auf eine ältere Kernel / Xorg-Version und sicherzustellen, dass es haftet (obwohl Arch Linux immer auf dem neuesten Stand ist ). Aber es war ein bisschen knifflig.linux-4.2.5-1

Da ich in der Konsole steckengeblieben war, habe ich ältere Pakete manuell aus dem Archiv heruntergeladen (insbesondere: linux-4.2.5-1, linux-headers-4.2.5-1 und xorg-server-1.17.4-2). Ich musste auch eine ältere Version der Paketgruppe xorg-drivers bekommen . Ich legte diese Pakete ein /var/cache/pacman/pkg/und stufte sie dann mit dem Befehl zurück pacman -U /path/to/package-file.pkg.tar.xz.

Und dann Crimson-Treiber erneut installiert und ausgeführt aticonfig --initial, um xorg.conf zu generieren.

Um zu verhindern, dass das System-Update das Ganze fälscht, fügte ich diese beiden Zeilen hinzu /etc/pacman.config:

IgnorePkg = linux linux-headers xorg-server IgnoreGroup = xorg-drivers 

Diese Linien werden Warnungen erzeugen, wenn läuft pacman -Syu... so dass Sie wirklich in der Lage sein wont es zu vergessen. Wenn die neuen AMD Crimson-Treiber herauskommen, kann ich diese temporär deaktivieren.

Und dann ist es gesprengt ...

Nach dem Laufen pacman -Syuund Neustart ging etwas schief (beim Neustart blieb die Initialisierung hängen). Ich bin nicht ganz sicher, was passiert ist, aber was ich getan habe, war:

  • booten Sie von Install-USB
  • mache eine arch-chrootin meiner primären Partition
  • Deaktiviere sddm
  • Neustart
  • Crimson neu installieren und xorg.conf neu generieren
  • Aktivieren Sie sddm

Das hat es behoben. Was ich aus den verschiedenen Protokollen gelesen habe, war: Nach dem Update- fglrxModul wurde der Kernel erneut gefärbt, wodurch Xorg fehlschlug, was es systemd-logind unmöglich machte, SDDM zu erreichen. Und wie jeder angemessenen Teil von OS, systemd ging einfach Titten-up alles Sperren (Tastatur nicht reagiert).