Was würde passieren, wenn ich die Installation eines Linux-Treibers in Mac OS X erzwinge?

Vor kurzem habe ich mir ein Mac-System zugelegt und wollte eine Intel WiFi-Karte einbauen (als Upgrade für die aktuelle Karte). Nun, wie wir wissen, kommen Apple und Intel in Sachen WLAN nicht miteinander aus.

Dieselbe Karte funktioniert jedoch unter Linux.

Was würde passieren, wenn ich die Intel-Treiber für den Linux-Kernel in Mac OS X erzwingen würde? Würde es funktionieren? Würde es zu schwerwiegender Instabilität oder Datenverlust kommen? Ist es überhaupt möglich?

So ziemlich dasselbe, was passieren würde, wenn Sie die Windows-Treiber in OS X erzwingen würden ... Die Kernel-APIs sind anders und es wird nicht funktionieren.
Was bedeutet „Intel-Treiber erzwingen“ in OS X? Das einfache Platzieren einer Datei im Dateisystem ist das Nettoergebnis jeder möglichen Aktion, die ich sehen kann. Was würdest du eigentlich tun?
@bmike Verwenden Sie (das nicht vorhandene) modprobeoder ein ähnliches Tool.
@bmike „Was bedeutet „Intel-Treiber erzwingen“ in OS X?“ Nehmen Sie den quadratischen Stift eines nicht kompatiblen Treibers und stecken Sie ihn in das runde Loch eines Systems.
@JakeGould Problem: Der quadratische Stift könnte in das runde Loch passen!
@bmike „Er hat gut interviewt…“ Kein Kommentar! ;)

Antworten (5)

Was würde passieren, wenn ich die Intel-Treiber für den Linux-Kernel in Mac OS X erzwingen würde? Würde es funktionieren? Würde es zu schwerwiegender Instabilität oder Datenverlust kommen? Ist es überhaupt möglich?

Bestenfalls? 100% nichts. Schlimmstenfalls? Bringen Sie Ihr gesamtes System zum Absturz und machen Sie es unbrauchbar oder sogar nicht mehr bootfähig.

Während Mac OS X und Linux beide unterschiedliche „Geschmacksrichtungen“ von Unix sind, können Sie nicht einfach Teile von einem Betriebssystem greifen und sie einfach in das andere Betriebssystem installieren und erwarten, dass sie funktionieren.

Wenn es jedoch irgendwo Quellcode für den Treiber gibt, können Sie ihn möglicherweise mit der Xcode-Suite von Entwicklungstools für Mac OS X kompilieren.

Aber das ist ein großes Wenn . Die Realität ist, dass das Kompilieren des Quellcodes einer Linux-Anwendung auf einem Mac OS X-System von einem Linux-System aus ein Kinderspiel ist. Manchmal funktioniert es und Sie können nette Linux-Tools auf einem Mac OS X-System verwenden. Aber manchmal will es einfach nicht funktionieren. Und das auf Anwendungsebene. Auf der Fahrerebene ist es noch weniger plausibel oder machbar; und selbst wenn es machbar wäre, wäre es bestenfalls schwierig, dies zu tun.

Allerdings scheint es eine Open-Source-Bemühung gegeben zu haben, Linux-Intel-Treiber für Mac OS X zu kompilieren, wie hier zu sehen ist . Beachten Sie jedoch, dass die Versionen von Mac OS X, auf die verwiesen wird, Mac OS X 10.4 und 10.5 sind; nichts moderneres.

Es würde nichts passieren, weil sie nicht funktionieren würden (Kernel-Module). MacOS und Linux haben 2 völlig unterschiedliche Kernel. Es ist, als würde man versuchen, den Motor einer Automarke einer anderen zuzuordnen: Es wird nicht funktionieren, weil alle Anschlüsse/Spezifikationen völlig unterschiedlich sind.

Außerdem gibt es in Mac OS X keine lsmod/insmod/modbrobe/rmmod-Befehle ...

Wenn Sie nun binäre Treiber ausprobieren, wäre das wie – verzeihen Sie meine „Auto“-Vergleiche – einige Materialien für einen Autositz (gemäß den Spezifikationen für Marke A) zu besorgen und zu versuchen, den Autositz für Marke B zu bauen (kompilieren). Wenn die beiden Automarken im Bereich der Autositze kompatibel sind, dann würden Sie es wahrscheinlich schaffen und es könnte tatsächlich funktionieren. Aber wenn Sie versuchen, einen Rennwagensitz aus Materialien für ein 20 Jahre altes Auto zu bauen, werden Sie eine harte Fahrt haben, wenn Sie nicht stürzen und sich verletzen.

Das Automotor-Gleichnis ist nicht sehr gut, weil Hot Rodder das eigentlich die ganze Zeit machen.
Vielleicht ist es auch nicht das Schlimmste, denn es gibt Projekte, die es ermöglichen, Windows-Treiber unter Linux auszuführen, indem sie eine Anpassungsschicht verwenden ( ndiswrapperjemand?). Out of the box wird es also sicherlich nicht funktionieren, aber theoretisch könnte es für einige Power-User möglich sein, einen Treiber an ein anderes Betriebssystem anzupassen. Wie auch immer, OP ist besser dran, eine andere WiFi-Karte zu kaufen.
"Wenn Sie versuchen, ein Linux-Kernel-Modul in OSX zu erzwingen, werden Sie eine schlechte Zeit haben." youtube.com/watch?v=6Ls5j5iz2eA
Außerdem gibt es ein modprobeÄquivalent in OS X:kextload

Wie schon geschrieben: geht nicht.

Zunächst einmal gibt es keine „Installation erzwingen“. Es muss nichts installiert werden, und selbst wenn es etwas zu installieren gäbe, gibt es kein „Erzwingen“. Installation kann verschiedene Bedeutungen haben, aber diese beiden sind für Ihre Frage relevant:

  1. Installation bedeutet, ein Mac OS X-Paket mit dem Installationsprogramm von OS X zu installieren. Dies ist ein Paket, das die zu installierenden Dateien und Anweisungen für das Installationssystem enthält, damit es weiß, wo was abgelegt werden muss und wie es zu tun ist.

  2. Installation bedeutet, dass ein Treiber für eine Hardware in den Kernel geladen wird. OS X arbeitet mit sogenannten Kernel-Erweiterungen (.kext-Dateien oder offiziell „Pakete“, denn das ist es, was sie sind), um dem Kernel Funktionalität hinzuzufügen. Ein Treiber ist eine solche Ergänzung, und die Funktionalität besteht in der Fähigkeit, ein Stück Hardware anzusteuern.

Beide Fälle sind sehr betriebssystemgebunden. Das bedeutet, dass Sie nichts 'installieren' können, ohne die Punkte 1 und 2 abzugleichen. Während Sie Punkt 1 technisch überspringen könnten, indem Sie das Programm 'kextload' manuell verwenden, um eine Datei als Kernel-Erweiterung zu laden, könnten Sie Punkt 2 nicht abgleichen: nur Kernel-Erweiterungen können in den Kernel geladen werden. Kernel-Erweiterungen müssen zur ABI und API des Kernels passen. Diese beiden Akronyme (Sie können sie gerne nachschlagen, ihr vollständiger Name und ihre Bedeutung sind für die Antwort nicht relevant) sind vergleichbar mit der Zuordnung von Steckdosen zu elektrischen Steckern. Sie sind Schnittstellen.

Wenn Sie versuchen würden, Binärdateien zu mischen und abzugleichen (denn das sind Kernel-Erweiterungen, Module und Treiber), würde dies nicht funktionieren, da sie nicht mit dem Kernel und in einigen Fällen mit dem Prozessor kompatibel sind, der den Code ausführen muss. Diese Kompatibilität mit dem Kernel ist der Punkt, an dem wir zum ABI- und API-Teil kommen: Diese Schnittstellen sind wie Gas-, Wasser- und elektrische Verbindungen. Nehmen wir an, Windows ist Gas, Linux ist Strom und OS X ist Wasser. Wenn Sie versuchen würden, einen elektrischen Linux-Stecker an den Wasserhahn von OS X anzuschließen, werden Sie nichts zum Laufen bringen. Durch eine Steckdose fließt kein Wasser, und eine Steckdose bekommt keinen Strom aus Wasser.

Wenn Sie versuchen würden, einen Linux-Treiber (der als Kernel-Modul bezeichnet wird) in den OS X-Kernel zu laden, indem Sie kextload von einer Befehlszeile unter OS X verwenden, würde es Ihnen einfach sagen, dass es nicht weiß, was zu tun ist mit der von Ihnen bereitgestellten Datei. Da gibt es keinen Zwang, es kann einfach nichts mit dieser Datei anfangen, genauso wie man eine Glühbirne nicht dazu zwingen kann, an Ihrem Wasserhahn zu Hause zu arbeiten.

Zu deinem Problem: Was willst du erreichen? Wenn Sie ein Problem mit Ihrer drahtlosen Verbindung haben, liegt das Problem normalerweise am Netzwerk oder an der Umgebung. Wenn Ihnen bestimmte Funktionen wie andere Frequenzen oder neuere Funkprotokolle fehlen, können Sie versuchen, einfach eine besser unterstützte Karte zu installieren. Es gibt Listen im Internet mit nativ unterstützten WLAN-Karten, die problemlos funktionieren. Intel gehört nicht dazu.

Ich hoffe, das hilft Ihnen und macht die Dinge so klar wie möglich.

Nein, das ist nicht möglich, genauso wenig wie Sie andere Linux-Binärdateien in OS X ausführen können (ohne eine virtuelle Maschine zu verwenden).

Wenn überhaupt, ist es weniger möglich. Linux-Userspace-Binärdateien, die sich auf POSIX beschränken, sollten auf MacOSX mit nur einem benutzerdefinierten Ladeprogramm und einer dünnen Übersetzungsschicht ausgeführt werden können. Linux-Treiber (Kernelspace-Binärdateien) sind so eng an den Kernel gebunden, dass sie oft nicht auf anderen Versionen des Linux -Kernels laufen, geschweige denn auf dem MacOSX-Kernel.

Nebenbei bemerkt, wenn Sie einige USB-Geräte haben, die nur Linux-Treiber, aber keinen OS X-Treiber bereitstellen, können Sie das Gerät verwenden, indem Sie Linux in einer virtuellen Maschine (VirtualBox?) ausführen und dann die USB-Verbindung von Ihrem Mac an Linux weiterleiten VM.

Wenn Sie dann einige GUI-Tools verwenden müssen, können Sie auch die X-Weiterleitung zu Ihrem OS X-Desktop mit XQuartz einrichten.