[gelöst] Logo "AMD Unsupported Hardware" loswerden (64 bit)

Dieses Forum dient der grundlegenden Hilfe und Unterstützung :

Stelle hier Deine Fragen zur Grundinstallation und zur Benutzung von Mageia. Beispielsweise gehören hierhin Fragen zum Download der ISOs und deren Installation, zur Einrichtung des Druckers, Benutzung der Textbearbeitung, usw.

Bitte versuche, Deine Fragen im richtigen Subforum zu stellen und gib dabei so viele Informtionen wie möglich. Je präziser die Frage gestellt wird, um so eher bekommst Du eine hilfreiche Antwort.

[gelöst] Logo "AMD Unsupported Hardware" loswerden (64 bit)

Beitragvon devnull69 » Feb 4th, '13, 12:16

Hallo!

Seitdem ich über radeon-firmware meine Radeon HD 7450 problemlos zum Laufen bekommen habe, erscheint leider rechts unten immer ein äußerst aufdringliches Logo von AMD ... "AMD Unsupported hardware". Ich habe mich in den letzten Tagen dumm und dusselig gesucht. Der vielversprechendste Hinweis war, das folgende Skript ablaufen zu lassen
Code: Alles auswählen
#!/bin/sh
DRIVER=/usr/lib/xorg/modules/drivers/fglrx_drv.so
for x in $(objdump -d $DRIVER|awk '/call/&&/EnableLogo/{print "\\x"$2"\\x"$3"\\x"$4"\\x"$5"\\x"$6}'); do
 sed -i "s/$x/\x90\x90\x90\x90\x90/g" $DRIVER
done

Da bei mir jedoch eine 64Bit-Installation läuft, habe ich es wie folgt geändert
Code: Alles auswählen
#!/bin/sh
DRIVER=/usr/lib64/xorg/modules/drivers/fglrx_drv.so
for x in $(objdump -d $DRIVER|awk '/call/&&/EnableLogo/{print "\\x"$2"\\x"$3"\\x"$4"\\x"$5"\\x"$6}'); do
 sed -i "s/$x/\x90\x90\x90\x90\x90/g" $DRIVER
done

Leider hinterlässt mir dieses Skript immer eine korrupte Bibliothek, mit der KDE nachher (natürlich) überhaupt nicht mehr starten will.

Eine andere Lösungsmöglichkeit lag darin, die Konfigurations-Datei einer früheren (funktionierenden) Catalyst-Version "drüberzukopieren". Auch das war leider ohne Erfolg.

Frage also: Kennt jemand eine funktionierende Möglichkeit, dieses grauenhafte Overlay zu entfernen?
Zuletzt geändert von devnull69 am Feb 5th, '13, 09:58, insgesamt 1-mal geändert.
devnull69
 
Beiträge: 21
Registriert: Jan 28th, '13, 17:25

Re: Logo "AMD Unsupported Hardware" loswerden (64 bit)

Beitragvon man-draker » Feb 4th, '13, 13:23

devnull69 hat geschrieben:Da bei mir jedoch eine 64Bit-Installation läuft, habe ich es wie folgt geändert
Code: Alles auswählen
#!/bin/sh
DRIVER=/usr/lib64/xorg/modules/drivers/fglrx_drv.so
for x in $(objdump -d $DRIVER|awk '/call/&&/EnableLogo/{print "\\x"$2"\\x"$3"\\x"$4"\\x"$5"\\x"$6}'); do
 sed -i "s/$x/\x90\x90\x90\x90\x90/g" $DRIVER
done

Leider hinterlässt mir dieses Skript immer eine korrupte Bibliothek, mit der KDE nachher (natürlich) überhaupt nicht mehr starten will.

Da - wenn ich das Skript richtig verstehe - im Treiber ein CALL-Befehl mit NOPs (http://en.wikipedia.org/wiki/NOP)überschrieben wird, Adressen aber auf einem 64Bit-System entsprechend breiter sind, würde ich mal ganz braun noch zwei vier \x90 hinzufügen und schauen, ob das etwas sinnvolles bewirkt. (Und falls der Opcode auf einem 64er-System länger ist, zur Not auch mit noch einmal 1 oder 2 NOPs mehr.)
Zuletzt geändert von man-draker am Feb 4th, '13, 15:29, insgesamt 1-mal geändert.
"Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: 'Das ist technisch unmöglich.'"
(Peter Ustinov)
Benutzeravatar
man-draker
 
Beiträge: 4992
Registriert: Jun 1st, '11, 12:56

Re: Logo "AMD Unsupported Hardware" loswerden (64 bit)

Beitragvon alf » Feb 4th, '13, 14:08

Auch in eine 64-Bit-System ist NOP x90 eine 1-Byte-Instruktion. Der Fehler wird wohl eher wo anders zu suchen sein.
Das Gehirn ist nicht wie Seife, es wird nicht weniger wenn es benutzt wird. -- Lisa Fitz
Benutzeravatar
alf
 
Beiträge: 2442
Registriert: Jun 1st, '11, 13:39
Wohnort: Paderborn

Re: Logo "AMD Unsupported Hardware" loswerden (64 bit)

Beitragvon man-draker » Feb 4th, '13, 14:14

alf hat geschrieben:Auch in eine 64-Bit-System ist NOP x90 eine 1-Byte-Instruktion. Der Fehler wird wohl eher wo anders zu suchen sein.

Aber das was vorher in der Datei steht, sieht anders aus.
"Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: 'Das ist technisch unmöglich.'"
(Peter Ustinov)
Benutzeravatar
man-draker
 
Beiträge: 4992
Registriert: Jun 1st, '11, 12:56

Re: Logo "AMD Unsupported Hardware" loswerden (64 bit)

Beitragvon alf » Feb 4th, '13, 15:00

Ja sicher, dort ist die Anweisung das Logo auszugeben und genau diese Anweisung soll durch eine andere ersetzt werden, nämlich durch den NOP ( ="no operation" zu deutsch "do nothing" :) ). Und das ist nunmal eine 1-Byte-Anweisung(auch bei einer 64-Bit-CPU), es macht wenig Sinn, die mehrfach anzugeben.

[es gibt durchaus auch Multibyte NOP-Anweisungen, die sehen aber anders aus und werden nicht von allen CPU unterstütz; Eine irrtümliche Verwendung könnte fatale Folgen haben http://ref.x86asm.net/coder64-abc.html]
Das Gehirn ist nicht wie Seife, es wird nicht weniger wenn es benutzt wird. -- Lisa Fitz
Benutzeravatar
alf
 
Beiträge: 2442
Registriert: Jun 1st, '11, 13:39
Wohnort: Paderborn

Re: Logo "AMD Unsupported Hardware" loswerden (64 bit)

Beitragvon man-draker » Feb 4th, '13, 15:28

alf hat geschrieben:Ja sicher, dort ist die Anweisung das Logo auszugeben und genau diese Anweisung soll durch eine andere ersetzt werden, nämlich durch den NOP ( ="no operation" zu deutsch "do nothing" :) ). Und das ist nunmal eine 1-Byte-Anweisung(auch bei einer 64-Bit-CPU), es macht wenig Sinn, die mehrfach anzugeben.

Vielleicht solltest du deine Assemblerkenntnisse des x86 mal wieder entstauben. :)

Hast du einen Call auf einem 32Bit-System, besteht der aus 5 Byte: 1 Byte Opcode + 4 Byte 32Bit-Adresse
Hast du einen Call auf einem 64Bit-System, besteht der aus 9 Byte: 1 Byte Opcode + 8 Byte 32Bit-Adresse

Und eine entsprechende Anzahl NOPs braucht es, da der Programcounter nach jedem NOP nur ein Byte weiter springt.
Andernfalls interpretiert die CPU Teile der Adresse als Opcode und dann rummst es natürlich.

(Andere CPU-Typen laden immer Befehle gleicher Länge, egal wie der Inhalt aussieht, nicht aber die x86.)
"Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: 'Das ist technisch unmöglich.'"
(Peter Ustinov)
Benutzeravatar
man-draker
 
Beiträge: 4992
Registriert: Jun 1st, '11, 12:56

Re: Logo "AMD Unsupported Hardware" loswerden (64 bit)

Beitragvon devnull69 » Feb 4th, '13, 15:37

Die Idee fand ich auch ziemlich einleuchtend ... aber leider bekomme ich auch mit 9 Bytes (oder 6, 7, 8, 10 oder 11) kein anderes Ergebnis. Manchmal erhalte ich tatsächlich eine korrekte Bibliotheksdatei, aber das Logo bleibt hartnäckig (auch nach Neustart)
devnull69
 
Beiträge: 21
Registriert: Jan 28th, '13, 17:25

Re: Logo "AMD Unsupported Hardware" loswerden (64 bit)

Beitragvon man-draker » Feb 4th, '13, 16:04

Vielleicht hilft die dort genannte, zweite Version:
http://kaibathelegacy.blogspot.de/2011/08/remove-annoying-amd-unsupported.html
Entweder pur oder mit Aufbohren der %x und x90 auf je 9 Stück.

In einem anderen Forum wird angeführt, dass sich der Patch auf die Treiber für die Serien HD 2../3../4.. beziehe.
Ob das nun bei deiner anders ist, weiß ich nicht.
Default Re: Getting rid of "AMD Unsupported Hardware" overlay message after video driver update

Quote Originally Posted by please_try_again View Post
?
If you looked at the code I posted (post #8 of the thread linked above) , that was not necessary. It was actually the point of this post.
oops

i missed the point of line
DRIVER=$(find /usr/lib*/xorg/modules/drivers -name "fglrx_drv.so" | head -1)

my focus was, this worked for the latest beta 12.6_legacy driver,
due to the thread title referred too,
and it should work for HD2000/3000/4000 series drivers

also should have referred to post
::KaibaTheLegacy::: remove annoying amd unsupported hardware logo in Linux

thx again

http://forums.opensuse.org/english/get-technical-help-here/install-boot-login/476725-getting-rid-amd-unsupported-hardware-overlay-message-after-video-driver-update.html
"Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: 'Das ist technisch unmöglich.'"
(Peter Ustinov)
Benutzeravatar
man-draker
 
Beiträge: 4992
Registriert: Jun 1st, '11, 12:56

Re: Logo "AMD Unsupported Hardware" loswerden (64 bit)

Beitragvon carlo » Feb 4th, '13, 17:33

Hi,

schau mal in diesen Link, im Forum dort wurde das Problem als "gelöst" beschrieben:

http://forum.ubuntuusers.de/topic/howto ... gx-propri/
Gruss, Carlo
______________________________________________
>> Words that do not match deeds are unimportant. (Ernesto Guevara)
Benutzeravatar
carlo
 
Beiträge: 152
Registriert: Sep 2nd, '11, 17:20
Wohnort: Osnabrück

Re: Logo "AMD Unsupported Hardware" loswerden (64 bit)

Beitragvon alf » Feb 4th, '13, 18:57

man-draker hat geschrieben:Und eine entsprechende Anzahl NOPs braucht es, da der Programcounter nach jedem NOP nur ein Byte weiter springt.
Andernfalls interpretiert die CPU Teile der Adresse als Opcode und dann rummst es natürlich.


Ich bin eigentlich davon augegangen, dass das oben angegeben Script genau das macht, oder irre ich mich da?
Das Gehirn ist nicht wie Seife, es wird nicht weniger wenn es benutzt wird. -- Lisa Fitz
Benutzeravatar
alf
 
Beiträge: 2442
Registriert: Jun 1st, '11, 13:39
Wohnort: Paderborn

Re: Logo "AMD Unsupported Hardware" loswerden (64 bit)

Beitragvon man-draker » Feb 4th, '13, 22:18

alf hat geschrieben:
man-draker hat geschrieben:Und eine entsprechende Anzahl NOPs braucht es, da der Programcounter nach jedem NOP nur ein Byte weiter springt.
Andernfalls interpretiert die CPU Teile der Adresse als Opcode und dann rummst es natürlich.

Ich bin eigentlich davon augegangen, dass das oben angegeben Script genau das macht, oder irre ich mich da?

Du irrst dich nicht, wenn du davon ausgehst, dass das Programm den gesamten Platz des Call-Befehls inkl. Zieladresse mit NOPs füllt. Du irrst dich aber, wenn du denkst, dass die breitere Adresse im Call-Befehl auf einem 64Bit-System für die Anzahl der NOPs keine Rolle spielt.
"Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: 'Das ist technisch unmöglich.'"
(Peter Ustinov)
Benutzeravatar
man-draker
 
Beiträge: 4992
Registriert: Jun 1st, '11, 12:56

Re: Logo "AMD Unsupported Hardware" loswerden (64 bit)

Beitragvon alf » Feb 4th, '13, 22:30

Code: Alles auswählen
344dce:   e8 ad e2 fd ff          callq  323080 <atiddxEnableLogo@plt>

das wäre die fragliche Zeile, wo bitte willst du da mehr als 5 NOPs unterbirngen?

ps:
Vielleicht solltest du deine Assemblerkenntnisse des x86 mal wieder entstauben. :)

den Satz solltest du freundlicher Weise auch besser streichen.
Das Gehirn ist nicht wie Seife, es wird nicht weniger wenn es benutzt wird. -- Lisa Fitz
Benutzeravatar
alf
 
Beiträge: 2442
Registriert: Jun 1st, '11, 13:39
Wohnort: Paderborn

Re: Logo "AMD Unsupported Hardware" loswerden (64 bit)

Beitragvon man-draker » Feb 5th, '13, 06:52

alf hat geschrieben:
Code: Alles auswählen
344dce:   e8 ad e2 fd ff          callq  323080 <atiddxEnableLogo@plt>

das wäre die fragliche Zeile, wo bitte willst du da mehr als 5 NOPs unterbirngen?

Hm, wenn sie tatsächlich den Treiber im 32Bit-Modus auf einem 64Bit-System laufen lassen, dann ist das so.
ps:
Vielleicht solltest du deine Assemblerkenntnisse des x86 mal wieder entstauben. :)

den Satz solltest du freundlicher Weise auch besser streichen.

Warum? Du hast doch... ;)

Leider ist das Ausgangsproblem damit noch nicht gelöst.
"Die letzte Stimme, die man hört, bevor die Welt explodiert, wird die Stimme eines Experten sein, der sagt: 'Das ist technisch unmöglich.'"
(Peter Ustinov)
Benutzeravatar
man-draker
 
Beiträge: 4992
Registriert: Jun 1st, '11, 12:56

Re: Logo "AMD Unsupported Hardware" loswerden (64 bit)

Beitragvon devnull69 » Feb 5th, '13, 08:58

Nein, gelöst ist das Problem damit nicht.

Der Hinweis hat mich aber dazu gebracht, mal genauer nachzuforschen
Code: Alles auswählen
objdump -d /usr/lib64/xorg/modules/drivers/fglrx_drv.so | grep EnableLogo

ergibt
Code: Alles auswählen
00000000003b5820 <atiddxEnableLogo@plt>:
  3dad4f:       e8 cc aa fd ff          callq  3b5820 <atiddxEnableLogo@plt>
  402b01:       e8 1a 2d fb ff          callq  3b5820 <atiddxEnableLogo@plt>
  40d8af:       e8 6c 7f fa ff          callq  3b5820 <atiddxEnableLogo@plt>
  435ac1:       e8 5a fd f7 ff          callq  3b5820 <atiddxEnableLogo@plt>
  4407ef:       e8 2c 50 f7 ff          callq  3b5820 <atiddxEnableLogo@plt>
  468a01:       e8 1a ce f4 ff          callq  3b5820 <atiddxEnableLogo@plt>
  47372f:       e8 ec 20 f4 ff          callq  3b5820 <atiddxEnableLogo@plt>
  49b701:       e8 1a a1 f1 ff          callq  3b5820 <atiddxEnableLogo@plt>
  4a642f:       e8 ec f3 f0 ff          callq  3b5820 <atiddxEnableLogo@plt>
  4ce1b1:       e8 6a 76 ee ff          callq  3b5820 <atiddxEnableLogo@plt>
  4d8eef:       e8 2c c9 ed ff          callq  3b5820 <atiddxEnableLogo@plt>
  500c71:       e8 aa 4b eb ff          callq  3b5820 <atiddxEnableLogo@plt>
0000000000515860 <atiddxEnableLogo>:
  51587e:       74 50                   je     5158d0 <atiddxEnableLogo+0x70>
  51588b:       74 43                   je     5158d0 <atiddxEnableLogo+0x70>
  515896:       74 38                   je     5158d0 <atiddxEnableLogo+0x70>
  5158a0:       75 14                   jne    5158b6 <atiddxEnableLogo+0x56>
  5158b4:       74 1a                   je     5158d0 <atiddxEnableLogo+0x70>
  5159f3:       e8 28 fe e9 ff          callq  3b5820 <atiddxEnableLogo@plt>
  515af1:       e8 2a fd e9 ff          callq  3b5820 <atiddxEnableLogo@plt>

Also haben die call Anweisungen (auch bei mir auf dem 64-Bit-System) offenbar nur 5 Bytes. Aber das unveränderte Skript (siehe oben) hinterlässt trotzdem eine ungültige SO Bibliothek ...
devnull69
 
Beiträge: 21
Registriert: Jan 28th, '13, 17:25

Re: Logo "AMD Unsupported Hardware" loswerden (64 bit)

Beitragvon devnull69 » Feb 5th, '13, 09:35

Weitere Nachforschungen haben ergeben, dass das Skript offenbar gar nicht "so schlecht" läuft. Lediglich beim allerletzen Schleifendurchlauf hinterlässt es eine korrupte Datei. Also bin ich in den "manuellen Debug-Modus" gewechselt und habe die Schleifenteile Schritt für Schritt ausgeführt
Code: Alles auswählen
objdump -d /usr/lib64/xorg/modules/drivers/fglrx_drv.so |awk '/call/&&/EnableLogo/{print "\\x"$2"\\x"$3"\\x"$4"\\x"$5"\\x"$6}'

\xe8\xcc\xaa\xfd\xff
\xe8\x1a\x2d\xfb\xff
\xe8\x6c\x7f\xfa\xff
\xe8\x5a\xfd\xf7\xff
\xe8\x2c\x50\xf7\xff
\xe8\x1a\xce\xf4\xff
\xe8\xec\x20\xf4\xff
\xe8\x1a\xa1\xf1\xff
\xe8\xec\xf3\xf0\xff
\xe8\x6a\x76\xee\xff
\xe8\x2c\xc9\xed\xff
\xe8\xaa\x4b\xeb\xff
\xe8\x28\xfe\xe9\xff
\xe8\x2a\xfd\xe9\xff

Daraufhin habe ich in dieser Zeile
Code: Alles auswählen
sed -i "s/$x/\x90\x90\x90\x90\x90/g" /usr/lib64/xorg/modules/drivers/fglrx_drv.so

das $x durch die einzelnen Ausgaben von "awk" ersetzt und nach jedem Schritt mit "objdump" das Ergebnis geprüft. Alles war prima (incl. der NOP \x90) ... nur nicht beim letzten Schritt. Danach gibt "objdump" nur noch "File format not recognized" aus. Da die Kombination von awk und sed die Anweisungen ja global (und nicht gezielt bei EnableLogo) ersetzt, kann ich mir das sogar erklären. Kann ich irgendwie erreichen, dass ich nur die konkrete Anweisung ersetze?
devnull69
 
Beiträge: 21
Registriert: Jan 28th, '13, 17:25

Re: Logo "AMD Unsupported Hardware" loswerden (64 bit)

Beitragvon devnull69 » Feb 5th, '13, 09:57

BINGO!

Die Lösung war, die Schleife aufzulösen und alle bis auf den letzten Schleifendurchgang manuell auszuführen. Nach einem Neustart gibt's dann kein Logo mehr! :D

Gehackt!


Zusammenfassung:
Code: Alles auswählen
sed -i "s/\xe8\xcc\xaa\xfd\xff/\x90\x90\x90\x90\x90/g" /usr/lib64/xorg/modules/drivers/fglrx_drv.so
sed -i "s/\xe8\x1a\x2d\xfb\xff/\x90\x90\x90\x90\x90/g" /usr/lib64/xorg/modules/drivers/fglrx_drv.so
sed -i "s/\xe8\x6c\x7f\xfa\xff/\x90\x90\x90\x90\x90/g" /usr/lib64/xorg/modules/drivers/fglrx_drv.so
sed -i "s/\xe8\x5a\xfd\xf7\xff/\x90\x90\x90\x90\x90/g" /usr/lib64/xorg/modules/drivers/fglrx_drv.so
sed -i "s/\xe8\x2c\x50\xf7\xff/\x90\x90\x90\x90\x90/g" /usr/lib64/xorg/modules/drivers/fglrx_drv.so
sed -i "s/\xe8\x1a\xce\xf4\xff/\x90\x90\x90\x90\x90/g" /usr/lib64/xorg/modules/drivers/fglrx_drv.so
sed -i "s/\xe8\xec\x20\xf4\xff/\x90\x90\x90\x90\x90/g" /usr/lib64/xorg/modules/drivers/fglrx_drv.so
sed -i "s/\xe8\x1a\xa1\xf1\xff/\x90\x90\x90\x90\x90/g" /usr/lib64/xorg/modules/drivers/fglrx_drv.so
sed -i "s/\xe8\xec\xf3\xf0\xff/\x90\x90\x90\x90\x90/g" /usr/lib64/xorg/modules/drivers/fglrx_drv.so
sed -i "s/\xe8\x6a\x76\xee\xff/\x90\x90\x90\x90\x90/g" /usr/lib64/xorg/modules/drivers/fglrx_drv.so
sed -i "s/\xe8\x2c\xc9\xed\xff/\x90\x90\x90\x90\x90/g" /usr/lib64/xorg/modules/drivers/fglrx_drv.so
sed -i "s/\xe8\xaa\x4b\xeb\xff/\x90\x90\x90\x90\x90/g" /usr/lib64/xorg/modules/drivers/fglrx_drv.so
sed -i "s/\xe8\x28\xfe\xe9\xff/\x90\x90\x90\x90\x90/g" /usr/lib64/xorg/modules/drivers/fglrx_drv.so

und Neustart.
devnull69
 
Beiträge: 21
Registriert: Jan 28th, '13, 17:25


Zurück zu Basis-Support

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron