Che cosa accadrebbe se forzassi l'installazione di un driver Linux in Mac OS X?

7

Quindi, recentemente ho ottenuto un sistema Mac e stavo progettando di inserire una scheda Intel WiFi (come aggiornamento per la sua scheda attuale). Ora, come sappiamo, Apple e Intel non vanno d'accordo con il WiFi.

Tuttavia, questa stessa scheda funziona su Linux.

Che cosa accadrebbe se dovessi forzare i driver Intel per il kernel Linux in Mac OS X? Funzionerebbe? Ci sarebbe una grave instabilità o perdita di dati? È persino possibile?

    
posta Kaz Wolfe 27.01.2015 - 08:01
fonte

5 risposte

13

What would happen if I were to force the Intel drivers for the Linux kernel into Mac OS X? Would it work? Would there be severe instability or data loss? Is it even possible?

Al massimo? 100% nulla. Al peggio? Arresta l'intero sistema e rendilo inutilizzabile o addirittura non avviabile.

Mentre Mac OS X e Linux sono entrambi "sapori" diversi di Unix, non puoi semplicemente prendere parti da un sistema operativo e installarlo semplicemente nell'altro sistema operativo e aspettarti che funzionino.

Detto questo, se c'è un codice sorgente per il driver da qualche parte, potresti potenzialmente compilarli per Mac OS X usando la suite di strumenti di sviluppo Xcode.

Ma questo è un grande se . La realtà è la compilazione del codice sorgente dell'applicazione Linux su un sistema Mac OS X da un sistema Linux è un crapshoot. A volte funziona e puoi usare degli strumenti Linux su un sistema Mac OS X. Ma a volte semplicemente non funzionerà. E questo è a livello di applicazione. A livello di guidatore è ancora meno plausibile o fattibile; e anche se fosse fattibile sarebbe difficile farlo al meglio.

Detto questo, sembra esserci stato uno sforzo open source per compilare i driver Linux Intel per Mac OS X come visto qui . Nota che le versioni di Mac OS X a cui si fa riferimento sono Mac OS X 10.4 e 10.5; niente di più moderno.

    
risposta data 27.01.2015 - 09:17
fonte
10

Non succederebbe nulla, perché non funzionerebbero (moduli del kernel). MacOS e Linux hanno 2 kernel completamente diversi. È come provare a mettere il motore da un marchio automobilistico a un altro: non funzionerà perché tutte le connessioni / specifiche sono totalmente differenti.

Inoltre, non ci sono comandi lsmod / insmod / modbrobe / rmmod in Mac OS X ...

Ora, se provi i driver binari che sarebbero come - perdoni i miei paragoni "dell'auto" - procurandoti dei materiali per un seggiolino (secondo le specifiche del marchio A) e cercando di costruire (compilare) il seggiolino per marca B. Se le due marche di auto sono compatibili nell'area di posti di macchina, che probabilmente lo faresti e potrebbe davvero funzionare. Ma se provi a costruire un seggiolino per auto da materiali per un'auto di 20 anni, farai un giro difficile, se non ti farai male e ferirai.

    
risposta data 27.01.2015 - 13:30
fonte
8

Come già pubblicato: non è possibile.

Prima di tutto, non esiste una cosa come "force install". Non c'è niente da installare, e anche se c'è qualcosa da installare non c'è "forzarlo". L'installazione può avere significati diversi ma questi due sono quelli rilevanti per la tua domanda:

  1. Installazione che significa installare un pacchetto Mac OS X usando il programma di installazione di OS X. Questo è un pacchetto contenente i file da installare e le istruzioni per il sistema di installazione in modo che sappia dove mettere cosa e come farlo.

  2. Installazione che significa ottenere un driver per un pezzo di hardware caricato nel kernel. OS X funziona usando le cosiddette estensioni del kernel (file .kext, o ufficialmente, 'pacchetti' perché questo è quello che sono) per aggiungere funzionalità al kernel. Un driver è una tale aggiunta e la funzionalità è la capacità di guidare un pezzo di hardware.

Entrambi i casi sono molto vincolati al sistema operativo. Ciò significa che non puoi "installare" qualcosa senza i punti 1 e 2. Mentre potresti saltare tecnicamente il punto 1 usando manualmente il programma "kextload" per caricare un file come estensione del kernel, non saresti in grado di eguagliare il punto 2: solo le estensioni del kernel possono essere caricate nel kernel. Le estensioni del kernel devono corrispondere all'ABI e all'API del kernel. Questi due acronimi (sentirsi liberi di cercarli, il loro nome completo e il loro significato non sono rilevanti per la risposta) sono paragonabili alle corrispondenti prese elettriche alle prese elettriche. Sono interfacce.

Se dovessi cercare di mischiare e abbinare i file binari (perché sono le estensioni, i moduli e i driver del kernel), non funzionerebbe perché non sono compatibili con il kernel e in alcuni casi il processore che deve eseguire il codice. Questa compatibilità con il kernel è dove arriviamo alla parte ABI e API: quelle interfacce sono come le connessioni gas, acqua ed elettriche. Diciamo che Windows è gas, Linux è elettricità e OS X è acqua. Se dovessi provare a collegare una presa elettrica di Linux al rubinetto dell'acqua di OS X, non avrai niente da lavorare. L'acqua non scorre attraverso una presa elettrica e una presa elettrica non scarica l'elettricità dall'acqua.

Se dovessi provare a caricare un driver linux (che è chiamato un modulo del kernel) nel kernel di OS X, usando kextload da una riga di comando su OS X, ti dirà semplicemente che non lo sa cosa fare con il file che hai fornito. Non c'è forzatura lì, semplicemente non può fare nulla con quel file, proprio come non si può forzare una lampadina a funzionare dal rubinetto dell'acqua a casa.

Per quanto riguarda il tuo problema: cosa stai cercando di ottenere? Se hai un problema con la tua connessione wireless, il problema è di solito con la rete o l'ambiente. Se ti mancano alcune funzionalità come frequenze diverse o nuovi protocolli wireless, potresti provare a installare semplicemente una scheda supportata migliore. Ci sono liste su internet di schede wireless supportate in modo nativo che funzioneranno bene. Intel non è uno di questi.

Spero che questo ti aiuti e chiarisca le cose il più possibile.

    
risposta data 28.01.2015 - 04:21
fonte
7

No, non è possibile, non più di quanto tu possa eseguire qualsiasi altro binario di Linux in OS X (senza usare una macchina virtuale).

    
risposta data 27.01.2015 - 08:04
fonte
1

Come nota a margine, se hai alcuni dispositivi USB che forniscono solo driver Linux ma nessun driver OS X, puoi prendere in considerazione l'utilizzo del dispositivo eseguendo Linux in una macchina virtuale (VirtualBox?) quindi inoltra la connessione USB dal tuo Mac alla VM Linux.

Quindi se hai bisogno di utilizzare alcuni strumenti della GUI, puoi anche configurare l'inoltro X al tuo desktop OS X usando XQuartz.

    
risposta data 29.01.2015 - 08:16
fonte

Leggi altre domande sui tag