Foxconn sabotiert Linux?

Bei Digg.com schlägt ein Thread im Ubuntuforum gerade Wellen; die Diggs gingen bereits von 892 auf über 1100 hoch, während ich das hier schrieb (Zähler war 26 vor ca. 8 Stunden). Es geht darum, dass offenbar Motherboards von Foxconn (Hon Hai Precision) dem startenden OS gezielt falsche (Linux) oder korrekte (Windows) ACPI-Tabellen mitgeben, weshalb das Einschlafen nicht korrekt funktionieren kann. Der Tonfall des originalen Postings ist stellenweise allerdings eher herb. Das Posting beginnt hiermit, und führt einige Details auch des Schriftwechsels mit dem Support auf, der sich auf dünnem Eis bewegt.

I disassembled my BIOS to have a look around, and while I won’t post the results here,I’ll tell you what I did find.

They have several different tables, a group for Windws XP and Vista, a group for 2000, a group for NT, Me, 95, 98, etc. that just errors out, and one for LINUX.

The one for Linux points to a badly written table that does not correspond to the board’s ACPI implementation, causing weird kernel errors, strange system freezing, no suspend or hibernate, and other problems, using my modifications below, I’ve gotten it down to just crashing on the next reboot after having suspended, the horrible thing about disassembling any program is that you have no commenting, so it’s hard to tell which does what, but I’ll be damned if I’m going to buy a copy of Vista just to get the crashing caused by Foxconn’s BIOS to stop, I am not going to be terrorized.

Das ganze ist technisch etwas über meiner Warte; ich hab noch nie ein BIOS auseinandergenommen. Ich schreibe hier auf Hardware mit Foxconn-Board, das keine Probleme macht. das Dingen schläft korrekt ein und wacht wieder auf. Könnte an der alten Hardware-Generation (pre-Vista) liegen.. muss aber nicht. Und der Aufruf, Foxconn zu vermeiden, könnte ziemlich schwierig durchzuhalten, da sie für sehr viele Motherboard-Hersteller produzieren. Vielleicht kann mal jemand versuchen nachzuvollziehen, was genau da dran ist?

Bei slashdot ist die Nachricht auch angekommen: MoBo Manufacturer Foxconn Refuses To Support Linux.

UPDATE 20080702: Bei Slashdot wird diskutiert, wie weit der Fix von Foxconn geht und ob das was bringt.

13 Ergänzungen

  1. @Kai
    Soweit wie ich das in deinem Link lese, betrifft das eine ähnliche Thematik ja, aber in der Diskussion auf dem Ubuntuforum wird vom Verfasser auch noch gesagt, dass immer wieder im BIOS Checks auftauchen, die den Anschein haben, nicht Windows-Systeme zu erkennen, damit sich das BIOS dann anders verhalten kann. Und gerade das, denke ich, hat die Diskussion entfacht, weil das bedeuten würde, dass das BIOS dahingehend absichtlich geändert wurde, um Windows-Systeme mehr als nur durch einen gepflegten Code zu bevorzugen, sondern Windows schon fast zu erzwingen.
    Aber wie der Autor auch schon sagt, genau kann er es nicht sagen, solange niemand den genauen Quellcode (inkl. Kommentare) kennt.

  2. Anscheinend fragen die ja nach Linux ab, um dann ne kaputte Tabelle zurückzusenden, sagen aber, dass sie dennoch ACPI Compliant sind…

    klingt irgendwie nach Wettbewerbsverzerrung, meiner Meinung nach nen Fall für das Kartellamt. Aber M$ ist dafür ja bekannt…

    Interessanter wär jetzt die Frage, wen M$ bestochen hat, ob Foxconn oder den Bios Hersteller…

  3. Hallo!

    Da steckt mit hoher wahrscheinlichkeit *keine* boese Absicht davinter! Linux hat sich in der Vergangenheit etwas anders verhalten als Windows. Die Folge war, dass ACPI auf einigen Mainboards nicht funktioniert haben. Dann haben einige Mainboardhersteller Linux speziell behandelt, damit es funktioniert. Das hat Linus micht sehr gut efunden und eingestellt, dass sich das System als Windows ausgibt. Der Grund war, dass man nie auf die Fehler draufkommt, wenn die Mainboardhersteller die Fehler kaschieren und dann die „richtige“ Version abstuertzt…

  4. Jetzt hab ich die Threads und Diskussionen mal genauer gelesen. Alles keine Rocket Science.

    @Arne, interessant aber auch die Parallelen, die zur früheren „Browserweichen“ gezogen werden können – heute haben alle Browser als User Agent-String „like Gecko“ oder „Mozilla“ drin.
    Auf Kernelentwickerebene scheint man sich damit längst arrangiert zu haben, „Windows“ zu emulieren, um korrekte Daten von BIOS zu erhalten. Was wäre sonst der Ausweg? Für jeden Kernel einen eigenen Eintrag? Für jede Revision? Unmöglich zu updaten.. dumme Situation.

    Hardware sollte allerdings immer Hardware sein, und solche Spielereien sind absurd und sollten nicht nötig sein. Problemvermeidendes Verhalten bei Kernelbauern ist hier womöglich wirklich besser und praktikabler als alle paar Wochen neue Tabellen in die Mainboards zu zwingen.

    Foxconn hat das aber nicht verstanden und bewirbt die Produkte falsch.

  5. Also sowas ist definitiv nicht neu, hatte ich vor Jahren mit meinem damaligen Notebook auch. Da musste ich ich den Kernel von Hand so patchen, dass er eine eigene ACPI-Tabelle lädt und die aus dem Bios ignoriert, damit das auslesen des Akku-Status funktionierte. Ursache war eine Abfrage im BIOS ob das Betriebssystem ein Windows ist.

    Ob sowas nun Vorsatz ist oder einfach ein sehr hässlicher Fix für irgendwelche Probleme, ist reine Spekulation.

  6. Hier kann man auch gut mitlesen:

    http://izanbardprince.wordpress.com/

    Wie ich oben schon schrieb, sehe ich den Grund für die Aufregung eher in der Behauptung, dass das BIOS dahingehend geändert wurde um Linux zu behindern. Der ACPI-Code ist insofern uninteressant, sondern nur der dekompilierte BIOS-Code wäre wichtig! Aber wie man in Ryans Blog lesen kann, hat Foxconn auch reagiert und lässt von AMI das BIOS prüfen! :)
    Mal sehen, wie sich das weiter entwickelt!

    LG

  7. Im übrigen gibt es hier scheinbar ein Beta-BIOS, dass gut funktionieren soll, wenn man Ryan glauben mag! :)
    Mehr in seinem Blog!

Dieser Artikel ist älter als ein Jahr, daher sind die Ergänzungen geschlossen.