Install linux driver on mac

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

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

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

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

5 ответов

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

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

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

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

Но это один большой if . Реальность заключается в компиляции исходного кода Linux-приложения в системе Mac OS X из системы Linux — это crapshoot. Иногда это работает, и вы можете использовать хорошие инструменты 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 .

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

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

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

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

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

Читайте также:  Device harddiskvolume3 program files windows media player wmpnetwk exe

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

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

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

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

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

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

Источник

Debian GNU/Linux + Macbook Air 2017 (установка wifi драйверов)

Так случилось что захотелось снести MacOS на Macbook’е Air и поставить что то более свободное и линуксовое. Макбук 2017 года, долгое время пользовался MacOS Mojave, обновляться до новых выпусков, зная возможные проблемы, желания не было. Немного перебирая варианты дистрибутивов и попробовав различные Live образы, выбор пал на Debian 11 но так как официально он еще не вышел (выход намечен на 14 августа 2021), то взял его второй релиз кандидат Bullseye RC 2.

Проблема 1

Вот тут и появился первый подводный камень: Debian поддерживает не все wifi устройства из коробки. На помощь могут прийти non-free прошивки, которые можно установить после установки системы, добавив репозитории этих несвободных прошивок, в файле sources.list .

Проблема 2

Теперь появляется второй подводный камень: а как мы установим прошивку для wifi устройства если у нас не работает сеть после установки? Тут уже на помощь пришел смартфон с включенным режимом USB Tethering. Подключив с помощью кабеля USB к макбуку, установщик на удивление сразу распознал это как проводное сетевое соединение. Таким образом интернет соединение для установки драйверов на wifi и первоначальных пакетов, мы себе обеспечили.

Действия после установки

Сам процесс инсталляции я описывать не буду так как все индивидуально, и это тема для отдельной статьи.

После установки открываем терминал и утилитой lspci узнаем модель нашего wifi устройства, введя следующую команду:

На выводе получим название модели устройства, в моей случае это:

BCM4360 это и есть модель wifi устройства. Свободных прошивок к сожалению на него нет и теперь чтобы wifi заработал, нам придется установить несвободный драйвер broadcom-sta-dkms который предоставляет исходный код для модуля ядра wl Остальной список поддерживаемых моделей можно посмотреть в описании драйвера https://packages.debian.org/buster/broadcom-sta-dkms

Читайте также:  Тип раздела для установки windows

Так же перед установкой, поставим пару необходимых пакетов wireless-tools и wpasupplicant

Далее открываем из под рута, файл sources.list (я использую nano)

И вписываем возле каждого урла репозитория, напротив слова main , теги contrib non-free . Должно получится примерно следующее:

Затем сохраняем файл и обновляем инфу о пакетах командой sudo apt update .

Теперь устанавливаем сам драйвер введя команду:

По ее завершению, убираем модули b44 b43 b43legacy ssb brcmsmac bcma из ядра системы, командой:

и добавляем модуль wl :

После этого в Network manager’е (я использовал его для настройки сети) появится раздел Wi-Fi Networks где мы уже сможем выбрать доступную сеть и ввести пароль для доступа.

Заключение

Данный гайд может быть полезен не только владельцам маков но и других ноутбуков и десктопов. Так же гайд подойдет остальным Debian производным дистрибутивам (хотя могут быть нюансы).

Источник

Заставляем работать MacBook Pro 2018 T2 c ArchLinux (dualboot)

Достаточно много было шумихи по поводу того, что из-за нового чипа T2 невозможно установить linux на новые MacBook 2018 года с тачбаром. Шло время, и под конец 2019 года стронними разработчиками был реализован ряд драйверов и патчей ядра для взаимодействия с чипом T2. Основной драйвер для MacBook моделей 2018 и новее реализует работу VHCI (работа тача/клавиатуры/и.т.д.), а также функционирование звука.

Проект mbp2018-bridge-drv разделен на 3 основных компонента:

  • BCE (Buffer Copy Engine) — устанавливает основной канал связи с T2. VHCI и Audio требуют этот компонент.
  • VHCI — это виртуальный хост-контроллер USB; клавиатура, мышь и другие компоненты системы предоставляются этим компонентом (другие драйверы используют этот хост-контроллер для обеспечения большей функциональности.
  • Audio — драйвер для аудиоинтерфейса T2, в настоящее время поддерживается только вывод звука через встроенные динамики MacBook

Второй проект называется macbook12-spi-driver, и он реализует возможность работы драйвера ввода для клавиатуры, трекпада SPI, тачбара для MacBook Pro конца 2016 г. и более поздних версий. Часть драйверов для клавиатуры/трекпада теперь включена в ядро, начиная с версии 5.3.

Также была реализована поддержка таких устройств, как wi-fi, тачпад, etc, с помощью патчей ядра. На текущий момент версия ядра 5.3.5-1

Что работает на данный момент

  1. NVMe
  2. Клавиатура
  3. USB-C (Thunderbolt не проверялся, при автоматической загрузке модуля подвешивает систему намертво)
  4. Тачбар (с возможностью включения клавиш Fn, подсветка, ESC итп)
  5. Звук (только встроенные динамики)
  6. Модуль Wi-Fi (через brcmfmac и только через iw)
  7. DisplayPort через USB-C
  8. Сенсоры
  9. Suspend/Resume (частично)
  10. etc..

Данный туториал применим для macbookpro15,1 и macbookpro15,2. За основу была взята статья с гитхаба на английском отсюда. Не все из этой статьи заработало, поэтому пришлось искать решение самостоятельно.

Что потребуется для установки

1. Отключаем запрет загрузки с внешних носителей

2. Выделяем свободное место с помощью Disk Utility

Для удобства я сразу выделил 30Гб на диск, отформатировав его в exfat в самом Disk Utility. Разбиение физического диска на разделы Disk Utility.

3. Формируем iso образ

  1. Можно пойти простым путем и скачать готовый образ с ядром 5.3.5-1 и пачтами от aunali1ссылка на готовый образ
  2. Сформировать образ самостоятельно через archlive (необходима система с дистрибутивом арча)

Добавляем репозиторий в pacman.conf:

Игнорируем оригинальное ядро в pacman.conf:

Добавляем необходимые пакеты, в конце добавляем ядро linux-mbp и linux-mbp-headers

Изменяем скрипт для работы в интерактивном режиме (заменяем pacstrap -C на pacstrap -i -C):

Нажимаем Y, чтобы пропустить игнорируемые пакеты, затем пишем iso-образ на usb флешку:

4. Первая загрузка

Перезагружаемся с вставленной флешкой и клавиатурой. Нажимаем options при появлении яблока, выбираем EFI BOOT.

Далее необходимо нажать клавишу «e» и вписать в конец командной строки module_blacklist=thunderbolt. Если этого не сделать, то система может не загрузиться, и вылетит ошибка Thunderbolt ICM Error.

С помощью fdisk/cfdisk находим наш раздел (у меня это nvme0n1p4), форматируем и производим установку арча. Можно воспользоваться официальной инструкцией или строронней.

Загрузочный раздел не создаем, загрузчик будем писать в /dev/nvme0n1p1
После того, как полностью сформировано окружение в /mnt и перед тем, как перейти в arch-chroot, пишем:

Добавляем в /etc/pacman.conf:

Прописываем thunderbolt и applesmc в /etc/modprobe.d/blacklist.conf

Клавиатура, тачбар, etc

Устанавливаем модули для работы тачбара:

Добавляем модули в автозагрузку: /etc/modules-load.d/apple.conf

Устанавливаем модули ядра для работы клавиатуры. В репозитории anuali1 есть готовый пакет, он называется apple-bce-dkms-git. Чтобы его установить, пишем в консоли:

В этом случае модуль ядра будет называться apple-bce. В случае самостоятельной сборки он называется bce. Соответственно, если вы хотите прописать модуль в раздел MODULES в файл mkinicpio.conf, то не забудьте, какой модуль вы устанавливали.

Добавляем модуль bce или apple-bce в автозагрузку: /etc/modules-load.d/bce.conf

Если хотите использовать по умолчанию кнопки Fn, то в файл /etc/modprobe.d/apple-tb.conf пишем:

Обновляем ядро и initramfs.

5. Загрузчик

После того, как внутри chroot все основные пакеты установлены, можно приступать к установке загрузчика.

Мне так и не удалось заставить работать grub. С внешнего usb-диска grub загружается, но при попытке прописать его в nvme через

grub-install —target=x86_64-efi —efi-directory=/boot —bootloader-id=grub

система улетала в kernel panic, и после перезагрузки нового пункта через options не появлялось. Какого-то внятного решения данной проблемы я не нашел и поэтому решил попробовать реализовать загрузку с помощью systemd-boot.

и улетаем в kernel panic. Выключаем MacBook, включаем заново, жмем options (usb-c хаб с клавиатурой не отключаем)

  • Проверяем, что появилась новая запись EFI BOOT помимо внешнего устройства
  • Выбираем загрузку с внешнего usb-диска, как при первой установке (не забываем прописать module_blacklist=thunderbolt)
  • Монтируем наш диск и переходим в окружение через arch-chroot
  • Если необходимо, чтобы клавиатура работала до полной загрузки системы (это необходимо в случае использования шифрования luks/dm-crypt) то прописываем в файл /etc/mkinicpio.conf в разделе MODULES:

    Обновляем ядро и initramfs.

    Настраиваем systemd-boot

    Редактируем файл /boot/loader/loader.conf, удаляем все, что там внутри, и вносим следующее:

    Переходим в папку /boot/loader/entries, создаем файл arch.conf и пишем:

    В случае, если использовали luks и lvm, то

    Перезагружаемся в MacOS.

    6. Настройка Wi-Fi

    Как в итоге выяснилось, файлы прошивок для wi-fi адаптера MacOS хранит в папке /usr/share/firmware/wifi , и можно их от туда взять в виде блобов и скормить модулю ядра brcmfmac. Для того, чтобы выяснить, какие именно файлы использует ваш адаптер, открываем терминал в MacOS и пишем:

    Получаем длинный список. Нам нужны файлы только из раздела RequestedFiles:

    В вашем случае названия файлов могут отличаться. Копируем их из папки /usr/share/firmware/wifi на флешку и переименовываем в следующий вид:

    В данном случае последний текстовый файл содержит названия модели, если ваша модель не macbookpro15,2, то необходимо переименовать этот файл в соответствии с вашей моделью макбука.

    Перезагружаемся в арч.

    Копируем файлы с флешки в папку /lib/firmware/brcm/

    Проверяем работоспособность модуля:

    Убеждаемся, что сетевой интерфейс появился через ifconfig/ip.
    Настраиваем wifi через iwctl

    Внимание. Через netctl, nmcli, etc. интерфейс не работает, только через iwd.

    Заставляем NetworkManager использовать iwd. Для этого создаем файл /etc/NetworkManager/NetworkManager.conf и пишем:

    Запускаем службу NetworkManager

    7. Звук

    Для того, чтобы заработал звук, необходимо установить pulseaudio:

    Скачиваем три файла:

    8. Suspend/Resume

    На текущий момент 16.10.2019 приходится выбирать либо звук, либо suspend/resume. Ждем, пока автор bce модуля допилит функционал.

    Чтобы собрать модуль с поддержкой susped/resume, необходимо выполнить следующее:

    Если вы устанавливали готовый модуль apple-bce из репозитория anuali1, то необходимо его предварительно удалить и только после этого собирать и устанавливать bce модуль с поддежкой suspend режима.

    Также, необходимо добавить в blacklist модуль applesmc (если вы этого не сделали ранее) и убедиться, что в /boot/loader/entries/arch.conf в строке options в конце добавлен параметр pcie_ports=compat.

    На текущий момент драйвер тачбара вылетает при входе в режим suspend, а драйвер thunderbolt иногда подвешивает систему более чем на 30 секунд, а при возобновлении — на несколько минут. Это можно исправить путем автоматической выгрузки проблемных модулей.

    Создайте скрипт /lib/systemd/system-sleep/rmmod.sh:

    Сделайте его исполняемым:

    На этом пока все. В итоге получась вполне работоспособная система, за исключением некоторых нюансов с suspend/resume. Никаких вылетов и kernel panic не наблюдается на протяжении нескольких дней аптайма. Надеюсь, в ближайшее время автор модуля bce его допилит, и мы получим полноценную поддержку suspend/resume и звука.

    Источник

    Читайте также:  Virtual wifi hotspot windows
    Оцените статью