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

7

Vor kurzem habe ich ein Mac-System bekommen und wollte eine Intel WiFi-Karte einbauen (als Upgrade für die aktuelle Karte). Wie wir wissen, kommen Apple und Intel in Bezug auf 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 zwingen würde? Würde es funktionieren? Würde es zu schwerer Instabilität oder Datenverlust kommen? Ist es überhaupt möglich?

Kaz Wolfe
quelle
2
Ziemlich genau so, wie es passieren würde, wenn Sie die Windows-Treiber in OS X zwingen würden ... Die Kernel-APIs sind unterschiedlich und funktionieren nicht.
Thorbjørn Ravn Andersen
1
Was bedeutet "Intel-Treiber zwingen" 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
@bmike Verwenden Sie (das nicht vorhandene) modprobeoder ein ähnliches Tool.
Kaz Wolfe
@bmike "Was bedeutet" Intel-Treiber zwingen "in OS X?" Nehmen Sie den quadratischen Stift eines nicht kompatiblen Treibers und stecken Sie ihn in das runde Loch eines Systems.
JakeGould
1
@JakeGould Ein bisschen wie der elegante Gentleman-Leitfaden zum
bmike

Antworten:

13

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

Bestenfalls? 100% nichts. Schlimmstenfalls? Stürzen Sie Ihr gesamtes System ab und machen Sie es unbrauchbar oder sogar nicht mehr bootfähig.

Während Mac OS X und Linux unterschiedliche „Varianten“ von Unix sind, können Sie nicht einfach Teile von einem Betriebssystem abrufen und auf dem anderen Betriebssystem installieren und erwarten, dass sie funktionieren.

Wenn jedoch irgendwo Quellcode für den Treiber vorhanden ist, können Sie diese möglicherweise mithilfe der Xcode-Suite von Entwicklungstools für Mac OS X kompilieren.

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

Trotzdem scheint es Open Source-Bemühungen gegeben zu haben, Linux Intel-Treiber für Mac OS X zu kompilieren, wie hier gezeigt . Beachten Sie jedoch, dass es sich bei den genannten Versionen von Mac OS X um Mac OS X 10.4 und 10.5 handelt. nichts moderneres.

JakeGould
quelle
10

Nichts würde passieren, weil sie nicht funktionieren würden (Kernelmodule). MacOS und Linux haben zwei völlig unterschiedliche Kernel. Es ist wie der Versuch, den Motor von einer Automarke zur anderen zu bringen: Es funktioniert nicht, weil alle Anschlüsse / Spezifikationen völlig unterschiedlich sind.

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

Wenn Sie nun Binärfahrer ausprobieren, die wie folgt aussehen: Verzeihen Sie meine "Auto" -Vergleiche, erhalten Sie einige Materialien für einen Autositz (gemäß den Spezifikationen für Marke A) und versuchen Sie, den Autositz für Marke B zu bauen (zu kompilieren). Wenn die beiden Automarken im Bereich der Autositze kompatibel sind, 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 nicht sogar abstürzen und sich verletzen.

Marek Bettman
quelle
13
Das Automotor-Gleichnis ist nicht sehr gut, weil Hot Rodder das eigentlich die ganze Zeit tun.
cjm
Vielleicht ist es auch nicht das Schlimmste, weil es Projekte gibt, mit denen Windows-Treiber unter Linux mithilfe einer Anpassungsschicht ausgeführt werden können ( ndiswrapperirgendjemand?). Obwohl dies sicherlich nicht sofort funktioniert, kann es theoretisch für einige Power-User möglich sein, einen Treiber an ein anderes Betriebssystem anzupassen. Auf jeden Fall ist OP besser dran, eine andere WiFi-Karte zu kaufen.
Antonone
"Wenn Sie versuchen, ein Linux-Kernelmodul in OSX zu zwingen, haben Sie eine schlechte Zeit." youtube.com/watch?v=6Ls5j5iz2eA
Ehryk
Außerdem gibt esmodprobe in OS X ein Äquivalent:kextload
Josh
8

Wie schon gepostet: es ist nicht möglich.

Erstens gibt es keine "Force Install". Es gibt nichts zu installieren, und selbst wenn etwas zu installieren war, gibt es kein "Erzwingen". Die Installation kann unterschiedliche Bedeutungen haben, aber diese beiden sind für Ihre Frage relevant:

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

  2. Installation bedeutet, einen Treiber für eine in den Kernel geladene Hardware zu erhalten. OS X verwendet sogenannte Kernel-Erweiterungen (.kext-Dateien oder offiziell "Pakete", weil dies der Fall ist), um dem Kernel Funktionen hinzuzufügen. Ein Treiber ist eine solche Ergänzung, und die Funktionalität ist die Fähigkeit, ein Stück Hardware zu steuern.

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

Wenn Sie versuchen würden, Binärdateien zu mischen und abzugleichen (da dies Kernel-Erweiterungen, Module und Treiber sind), würde dies nicht funktionieren, da sie nicht mit dem Kernel und in einigen Fällen dem Prozessor kompatibel sind, der den Code ausführen muss. Durch diese Kompatibilität mit dem Kernel gelangen wir zum ABI- und API-Teil: Diese Schnittstellen sind wie Gas-, Wasser- und elektrische Verbindungen. Angenommen, Windows ist Gas, Linux ist Strom und OS X ist Wasser. Wenn Sie versuchen, einen elektrischen Linux-Stecker an den Wasserhahn von OS X anzuschließen, wird nichts zum Laufen gebracht. Wasser fließt nicht durch einen elektrischen Stecker, und ein elektrischer Stecker bezieht keinen Strom aus Wasser.

Wenn Sie versuchen würden, einen Linux-Treiber (der als Kernel-Modul bezeichnet wird) mithilfe von kextload über eine Befehlszeile unter OS X in den OS X-Kernel zu laden, wird Ihnen lediglich mitgeteilt, dass er nicht weiß, was zu tun ist mit der von Ihnen angegebenen Datei. Es gibt dort kein Erzwingen, es kann einfach nichts mit dieser Datei machen, genauso wie Sie eine Glühbirne nicht zwingen können, zu Hause von Ihrem Wasserhahn aus zu arbeiten.

Was Ihr Problem betrifft: Was versuchen Sie zu erreichen? Wenn Sie ein Problem mit Ihrer drahtlosen Verbindung haben, liegt das Problem normalerweise im Netzwerk oder in der Umgebung. Wenn Sie bestimmte Funktionen wie unterschiedliche Frequenzen oder neuere drahtlose Protokolle vermissen, können Sie versuchen, einfach eine besser unterstützte Karte zu installieren. Im Internet gibt es Listen mit nativ unterstützten WLAN-Karten, die einwandfrei funktionieren. Intel ist keiner von ihnen.

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

John Keates
quelle
7

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

Mike Scott
quelle
1
Wenn überhaupt, ist es weniger möglich. Linux-User-Space-Binärdateien, die sich auf POSIX beschränken, sollten unter MacOSX nur mit einem benutzerdefinierten Loader und einer dünnen Übersetzungsschicht ausgeführt werden können. Linux-Treiber (Kernelspace-Binärdateien) sind so eng an den Kernel gebunden, dass sie häufig nicht auf anderen Versionen des Linux- Kernels ausgeführt werden, geschweige denn auf dem MacOSX-Kernel.
Mark
1

Wenn Sie über USB-Geräte verfügen, 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 mit XQuartz auf Ihren OS X-Desktop einrichten.

Angelos
quelle