Wie installiere ich AMD Crimson auf 64-Bit-Arch-Linux?

1

Ich habe versucht, die neuesten AMD-Treiber auf meinem Linux-Computer zu installieren, aber nachdem ich sie zum Kompilieren gebracht habe, wurde ich mit der folgenden Meldung begrüßt:

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

Bitte beachten Sie, dass ich mit dieser Linux-Sache nicht allzu gut umgehen kann, da ich eher ein BSD-Eingeborener bin.

Situationsbezogene Details

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

Soweit fertig

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 ist mir ein Fehler aufgetreten:

/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 wenig googeln habe ich diese Lösung gefunden und manuell ausgeführt/usr/lib/modules/fglrx/build_mod/make.sh

Die Zusammenstellung endete jedoch mit folgender Meldung:

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 und deshalb habe ich einfach die kompilierten Module installiert ... was zu folgender Meldung führte:

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

Nachdem ich mir dmesg angesehen habe, 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 googeln führen mich zu dieser Mail-List-Nachricht: https://patchwork.ozlabs.org/patch/510277/, die das Entfernen erwähnt, mtrr_add()weil es irgendwie schlecht ist:

Der Kreuzzug, mtrr_add () durch architekturunabhängiges arch_phys_wc_add () zu ersetzen, ist abgeschlossen. Dadurch wird sichergestellt, dass Implementierungen zum Kombinieren von Schreibvorgängen (PAT auf x86) anstelle von MTRR verwendet werden. Verstecken Sie nach Abschluss des Kreuzzugs den direkten MTRR-Zugriff für die Fahrer.

Was soll ich jetzt machen?

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

teresko
quelle
/ edit: Kleine Korrektur: Dieser Treiber ist kompatibel (naja, der seq_printfAufruf trotzdem) bis Linux 4.2. AMD sagt, dass es bis 3.19 kompatibel ist. Sie müssen also einen älteren Kernel-Zweig verwenden.
Daniel B
@DanielB hmm .. da ich nicht wirklich gut darin bin, werde ich einfach versuchen, auf das Release 2015.12.01 (es ist mit 4.2.5 Kernel) neu zu installieren, da basierend auf dem, was ich gegoogelt habe, ein Downgrade eines frisch installierten Systems möglicherweise sinnvoll ist zu kompliziert für mich.
Teresa
Das wird nicht funktionieren, es wird beim ersten Update wieder kaputt gehen. Sie müssen ein anderes Kernel-Paket oder eine andere Distribution verwenden, da Arch immer auf dem neuesten Stand ist. Ältere Paketversionen werden schnell entfernt.
Daniel B

Antworten:

1

Dank @ DanielB Kommentare habe ich es funktioniert .

Also ... musste ich ein Downgrade auf eine ältere Kernel- / Xorg-Version durchführen und sicherstellen, dass sie nicht verloren geht (obwohl Arch Linux so konzipiert ist , dass es auf dem neuesten Stand bleibt ). Aber es war ein bisschen knifflig. Linux-4.2.5-1

Da ich in der Konsole feststeckte, 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 von xorg-drivers package group bekommen. Ich legte diese Pakete in /var/cache/pacman/pkg/und stufte sie dann mit Befehl herunter pacman -U /path/to/package-file.pkg.tar.xz.

Und dann Crimson-Treiber neu installiert und ausführen aticonfig --initial, um xorg.conf generiert zu bekommen.

Um zu verhindern, dass das Systemupdate alles vortäuscht, habe ich die folgenden zwei Zeilen hinzugefügt /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 vorübergehend deaktivieren.

Und dann ging es in die Luft ...

Nach dem Start pacman -Syuund Neustart ist ein Fehler aufgetreten (beim Neustart blieb die Initialisierung hängen). Ich bin nicht ganz sicher, was passiert ist, aber was ich getan habe, war:

  • booten von install-usb
  • mache eine arch-chrootin meiner primären Partition
  • Sddm deaktivieren
  • neustarten
  • Installieren Sie Crimson neu und generieren Sie xorg.conf neu
  • Sddm aktivieren

Das hat es behoben. Was ich beim Lesen verschiedener Protokolle erfuhr, war: Nachdem das Update- fglrxModul den Kernel erneut fehlerhaft gemacht hatte, scheiterte Xorg, was es systemd-logind wiederum unmöglich machte, SDDM zu erreichen. Und wie jeder angemessenen Teil von OS, systemd ging einfach Titten-up alles Sperren (Tastatur nicht reagiert).

teresko
quelle