Что произойдет, если я принудительно установлю драйвер Linux в Mac OS X?

Итак, недавно я получил систему Mac и планировал установить карту Intel WiFi (в качестве обновления для текущей карты). Теперь, как мы знаем, Apple и Intel не ладят в плане Wi-Fi.

Однако эта же карта работает и в Linux.

Что произойдет, если я принудительно установлю драйверы Intel для ядра Linux в Mac OS X? Будет ли это работать? Будет ли серьезная нестабильность или потеря данных? Это вообще возможно?

Почти то же самое, что произошло бы, если бы вы принудительно установили драйверы Windows в OS X... API ядра отличается, и он не будет работать.
Что означает «принудительно установить драйверы Intel» в OS X? Простое размещение файла в файловой системе является конечным результатом любого возможного действия, которое я вижу. Что бы вы на самом деле сделали?
@bmike Используйте (несуществующий) modprobeили аналогичный инструмент.
@bmike «Что означает «принудительно установить драйверы Intel» в OS X?» Возьмите квадратный штифт несовместимого драйвера и вставьте его в круглое отверстие системы.
@JakeGould Проблема: квадратный колышек может поместиться в круглое отверстие!
@bmike «Он хорошо взял интервью…» Без комментариев! ;)

Ответы (5)

Что произойдет, если я принудительно установлю драйверы Intel для ядра Linux в Mac OS X? Будет ли это работать? Будет ли серьезная нестабильность или потеря данных? Это вообще возможно?

В лучшем случае? 100% ничего. В худшем случае? Разрушить всю вашу систему и сделать ее непригодной для использования или даже невозможной загрузки.

Хотя Mac OS X и Linux — это разные «разновидности» Unix, вы не можете просто взять части одной ОС и просто установить их в другую ОС и ожидать, что они будут работать.

Тем не менее, если где-то есть исходный код драйвера, вы потенциально можете скомпилировать его для Mac OS X, используя набор инструментов разработки Xcode.

Но это одно большое если . Реальность такова, что компиляция исходного кода приложения Linux в системе Mac OS X из системы Linux — это ерунда. Иногда это работает, и вы можете использовать хорошие инструменты Linux в системе Mac OS X. Но иногда это просто не сработает. И это на уровне приложения. На уровне водителя это еще менее правдоподобно или выполнимо; и даже если бы это было выполнимо, в лучшем случае это было бы трудно сделать.

Тем не менее, похоже, что были предприняты попытки с открытым исходным кодом скомпилировать драйверы Linux Intel для Mac OS X, как показано здесь . Но обратите внимание, что упомянутыми версиями Mac OS X являются Mac OS X 10.4 и 10.5; ничего более современного.

Ничего бы не случилось, потому что они бы не работали (модули ядра). MacOS и Linux имеют 2 совершенно разных ядра. Это как пытаться поставить двигатель с одной марки автомобиля на другую: не получится, потому что все соединения/характеристики совершенно разные.

Кроме того, в Mac OS X нет команд lsmod/insmod/modbrobe/rmmod...

Теперь, если вы попробуете бинарные драйверы, это будет похоже на — простите мои «автомобильные» сравнения — получить некоторые материалы для автокресла (в соответствии со спецификациями для марки А) и попытаться построить (скомпилировать) автокресло для марки Б. Если две марки автомобилей совместимы в области автомобильных сидений, то вы, вероятно, сделаете это, и это действительно сработает. Но если вы попытаетесь построить гоночное автокресло из материалов для 20-летней машины, у вас будет тяжелая езда, если не авария и травма.

Сравнение с автомобильным двигателем не очень удачное, потому что хот-роддеры делают это постоянно.
Может быть, это тоже не самое худшее, потому что есть проекты, которые позволяют запускать драйверы Windows в Linux с помощью слоя адаптации ( кто- ndiswrapperнибудь?). Так что, хотя это, безусловно, не будет работать из коробки, теоретически некоторые опытные пользователи могут адаптировать драйвер к другой операционной системе . В любом случае, OP лучше купить другую карту WiFi.
«Если вы попытаетесь принудительно внедрить модуль ядра Linux в OSX, у вас будут плохие времена». youtube.com/watch?v=6Ls5j5iz2eA
Кроме того, в OS X есть эквивалент:modprobekextload

Как уже писали: это невозможно.

Во-первых, нет такой вещи, как принудительная установка. Устанавливать нечего, а если и было что ставить, то это не «заставлять». Установка может иметь разные значения, но эти два относятся к вашему вопросу:

  1. Установка означает установку пакета Mac OS X с помощью установщика OS X. Это пакет, содержащий файлы для установки и инструкции для системы установки, чтобы она знала, куда что поместить и как это сделать.

  2. Установка означает получение драйвера для аппаратного обеспечения, загруженного в ядро. OS X работает, используя так называемые расширения ядра (файлы .kext или официально «пакеты», потому что это то, чем они являются) для добавления функциональности ядру. Драйвер - это такое дополнение, а функционал - возможность управлять железкой.

Оба случая очень привязаны к операционной системе. Это означает, что вы не можете «установить» что-либо без сопоставления пунктов 1 и 2. Хотя технически вы можете пропустить пункт 1, вручную используя программу «kextload» для загрузки файла в качестве расширения ядра, вы не сможете сопоставить пункт 2: только расширения ядра могут быть загружены в ядро. Расширения ядра должны соответствовать ABI и API ядра. Эти две аббревиатуры (не стесняйтесь искать их, их полное название и значение не имеют отношения к ответу) сравнимы с сопоставлением электрических розеток с электрическими вилками. Это интерфейсы.

Если бы вы попытались смешивать и сопоставлять двоичные файлы (потому что это то, чем являются расширения ядра, модули и драйверы), это не сработало бы, потому что они несовместимы с ядром и, в некоторых случаях, с процессором, который должен выполнять код. Эта совместимость с ядром — вот где мы подходим к части ABI и API: эти интерфейсы подобны газовым, водяным и электрическим соединениям. Допустим, Windows — это газ, Linux — это электричество, а OS X — это вода. Если вы попытаетесь подключить электрическую вилку Linux к водопроводному крану OS X, у вас ничего не получится. Вода не течет через электрическую вилку, а электрическая вилка не получает электричества от воды.

Если бы вы попытались загрузить драйвер Linux (который называется модулем ядра) в ядро ​​​​OS X, используя kextload из командной строки в OS X, он просто сказал бы вам, что не знает, что делать. с предоставленным вами файлом. Никакого принуждения там нет, он просто ничего не может сделать с этим файлом, как нельзя заставить работать лампочку из крана дома.

Что касается вашей проблемы: чего вы пытаетесь достичь? Если у вас возникли проблемы с беспроводным подключением, проблема обычно связана с сетью или окружающей средой. Если вам не хватает определенных функций, таких как разные частоты или новые беспроводные протоколы, вы можете попробовать просто установить карту с лучшей поддержкой. В Интернете есть списки изначально поддерживаемых беспроводных карт, которые будут работать нормально. Интел не входит в их число.

Я надеюсь, что это поможет вам и сделает все как можно более ясным.

Нет, это невозможно, так же как вы не можете запускать любые другие двоичные файлы Linux в OS X (без использования виртуальной машины).

Во всяком случае, это менее возможно. Двоичные файлы пользовательского пространства Linux, ограничивающие себя POSIX, должны работать на MacOSX только с помощью специального загрузчика и тонкого слоя перевода. Драйверы Linux (двоичные файлы пространства ядра) настолько тесно связаны с ядром, что часто не работают на других версиях ядра Linux , а тем более на ядре MacOSX.

В качестве примечания: если у вас есть некоторые USB-устройства, которые предоставляют только драйвер Linux, но не драйвер OS X, вы можете рассмотреть возможность использования устройства, запустив Linux на виртуальной машине (VirtualBox?), а затем перенаправьте USB-соединение с вашего Mac на Linux. ВМ.

Затем, если вам нужно использовать некоторые инструменты с графическим интерфейсом, вы также можете настроить переадресацию X на рабочий стол OS X с помощью XQuartz.