run Mac OS X applications on Linux
The only way would be to create an OS X VM (e.g. using kvm or Virtualbox ). Unfortunately, there would be licensing issues with doing that — Apple don’t want you running their OS on non-Apple hardware. I don’t think they even sell OS X on DVD any more (you’re supposed to get OS X with your Mac and upgrade it over the internet when they tell you to).
1 Answer 1
Darling (link) is a project that aims to become analogous to wine. Currently it only runs some command-line OSX programs, though. As of mid-2019, it can run many command-line programs, and according to their homepage appears to be approaching the point where it can run some rudimentary graphical software as well. It probably won’t run what you want just yet, unless it’s text-based.
As long as the developers of the OS X program released their source code and used cross-platform libraries (such as QT, GTK, X11, GNUStep or WxWidgets) you should be able to re-compile an OS X program for linux. OS X and Linux are much more compatible at the API level than the ABI level.
GNUStep implements the Cocoa APIs of NeXTStep and OS X. It was shockingly complete when I tried it, in terms of how much it seemed capable of doing versus how little seems to use it in the wild. GNUStep only works on the source-code (API) level, so it works if a program is open-source and uses Apple’s Cocoa GUI (NOT «Aqua» which is proprietary). It depends on being able to compile and link the code.
Think of the API, or Application Programming Interface, as something like a car’s dashboard — everything is visible to the driver of the car, and you can get into someone else’s car and find his different dashboard just as easy to figure out.
Think of the ABI, or Application Binary Interface, as the engine of the car — it can vary greatly between makes and models, and you probably won’t be able to trade your Chevy engine into a Volvo very easily.
Darling would in this analogy be putting the Chevy engine in a Volvo’s chassis, and compiling from source would be like just getting out of your Chevy and getting into the Volvo. One is much simpler to do than the other from a programmers’ perspective.
But Apple has some proprietary user interface libraries that no one else has, too. If the developer used one of these (such as Aqua), you’ll have to wait and hope that Darling grows up like Wine did, or port it yourself. If there is no source code released, it’d be like if the engine was made so big that it could not fit in the Volvo’s engine bay, or designed for connecting to a front wheel drive car where your Volvo was rear wheel drive. Unless someone is an absolutely insane maniac (in the best possible way) who has months of free time and ridiculous amount of dedication, it’s not likely to happen.
Additionally, GNUStep is not 100% complete in terms of coverage of the Cocoa API’s, so some shoehorning is likely still going to be necessary for complex programs. And GNUStep does not provide an xcode-equivalent build system — that is, if the original developer used the XCode IDE’s «build» system exclusively, you may be left writing makefiles for it. This was the most frustrating part for me, since while I have experience with compiling and linking software, it’s hard to wrestle useful information out of a format like a .xcodeproj that I have no prior backend experience with.
🍏 Как запускать приложения Mac на Linux
К сожалению, это не означает, что приложения могут плавно переходить между операционными системами.
Для запуска приложений Mac в Linux вам понадобится виртуальная машина или слой перехода.
Запустите виртуальную машину MacOS (все приложения)
Самый надежный способ запуска приложений Mac в Linux – через виртуальную машину.
С помощью бесплатного гипервизора с открытым исходным кодом, такого как VirtualBox, вы можете запускать macOS на виртуальном устройстве на вашем компьютере с Linux.
Правильно установленная виртуализированная среда MacOS без проблем запустит все приложения MacOS.
Подобная виртуализация рабочего стола требует значительного объема оперативной памяти, поэтому она может работать некорректно на устройствах с ограниченными ресурсами.
Для машин с техническими характеристиками наилучшим вариантом является виртуализация операционных систем через виртуальную машину VirtualBox.
Использование Darling Translation Layer (только CLI)
Вы также можете запустить слой перехода под названием Darling.
Он работает как WINE, которая создает среду перевода с Windows на Linux, которая позволяет вам запускать некоторые приложения Windows в системах Linux.
Darling пытается достичь той же цели между macOS и Linux.
Поскольку macOS и Linux совместно используют одну и ту же базу в стиле UNIX, Darling менее ресурсоемок, чем WINE, и в большинстве случаев дает лучшие результаты.
В настоящее время Darling может работать только с очень простыми приложениями с графическим интерфейсом и несколькими приложениями командной строки.
Хотя поддержка приложений с графическим интерфейсом является целью проекта, эта функция еще не реализована.
По сути, вы можете надежно запускать оболочку macOS в Терминале и, возможно, не сможете эффективно запускать другие приложения.
Он также содержит огромное количество кода, требующего около 12 гигабайт дискового пространства после сборки.
По сути, это дублирует функциональность операционной системы MacOS.
Поэтому, если вы беспокоитесь о том, что удаленные исполняемые файлы могут повредить вашу систему, вы можете избегать пакетов такого размера.
Сборка и установка дорогой Darling
1. Следуйте инструкциям по установке, чтобы загрузить правильные зависимости для вашего дистрибутива Linux со страницы установки Darling.
В зависимости от вашего дистрибутива вам может потребоваться выполнить длинную команду.
Например, для Ubuntu выполните следующую команду терминала, чтобы загрузить зависимости Darling:
sudo apt-get install cmake clang bison flex xz-utils libfuse-dev libudev-dev pkg-config libc6-dev:i386 linux-headers-generic gcc-multilib libcap2-bin libcairo2-dev libgl1-mesa-dev libtiff5-dev libfreetype6-dev libfreetype6-dev:i386 git libelf-dev libxml2-dev libegl1-mesa-dev libfontconfig1-dev libbsd-dev
git clone --recursive https://github.com/darlinghq/darling.git
3. Измените каталог на Darling:
5. Сконфигурируйте сборку с помощью cmake:
Процесс сборки может занять более одного часа, в зависимости от ресурсов вашего компьютера.
MacOS Monterey на Linux — быстро и просто?
Что делать, если у вас возникло желание или необходимость заняться разработкой под MacOS или iOS, но под рукой нет макбука, а покупать его только чтобы открыть Xcode кажется делом сомнительным? Недавно я столкнулся с такой проблемой в одном из своих пет-проектов и решил ее достаточно просто и быстро. После выполнения нескольких достаточно примитивных шагов, мне удалось запустить MacOS Monterey как на скриншоте ниже.
Никакого Virtualbox, никакого Virtual Machine Manager. Из требований — только 100 Гб свободного места на диске и хотя бы 16 Гб оперативной памяти. В рунете я встречал описание похожих путей установки, вроде Docker-OSX или Sosumi. Но я бы хотел поделиться способом, который позволяет использовать актуальную версию MacOS (Sosumi — сразу минус) и не потратить уйму свободного времени на возню с конфигами и терминалом. Поехали.
Для начала установим все необходимые пакеты и добавим себя в группу kvm и libvirt:
sudo apt-get install qemu uml-utilities virt-manager git wget libguestfs-tools p7zip-full make dmg2img -y sudo usermod -aG kvm $(whoami) sudo usermod -aG libvirt $(whoami) sudo usermod -aG input $(whoami)
Теперь склонируем репозиторий проекта OSX-KVM в домашнюю директорию пользователя:
cd ~ git clone --depth 1 --recursive https://github.com/kholia/OSX-KVM.git cd OSX-KVM git pull --rebase
Приступим к самой установке. Скрипт fetch-macOS-v2.py позволит скачать образ операционной системы желаемой версии:
./fetch-macOS-v2.py 1. High Sierra (10.13) 2. Mojave (10.14) 3. Catalina (10.15) 4. Big Sur (11.7) - RECOMMENDED 5. Monterey (12.6) 6. Ventura (13)
Скрипт выведет список версий ОС и предложит ввести номер. К сожалению, так и не удалось запустить MacOS Ventura из того образа, который предоставляется репозиторием. Я бы рекомендовал установить Monterey, чтобы пользоваться современными версиями Xcode и других инструментов.
После выбора версии скрипт скачает образ. Подождав завершения скачивания, запустим команду:
dmg2img -i BaseSystem.dmg BaseSystem.img
Следующий, третий, шаг в установке — создадим виртуальный жесткий диск. Желательный объем для установки — не меньше 100 Гб постоянной памяти, чтобы можно было не только установить виртуалку, но и что-то внутри нее.
qemu-img create -f qcow2 mac_hdd_ng.img 128G
Перед тем, как запустить последнюю команду — отредактируем скрипт OpenCore-Boot.sh .
… чтобы использовать 8 Гб при запуске виртуальной машины, а не 4 Гб. При этом желательно, чтобы оперативная память виртуальной машины не превышала половины от общей RAM хоста.
Скорее всего, вам понадобится также закомментировать строку…
-global ICH9-LPC.acpi-pci-hotplug-with-bridge-support=off
… потому что она была нужна в более ранних версиях, а сейчас выдаст ошибку.
Все, теперь мы полностью готовы к финальной стадии. Запускаем скрипт ./OpenCore-Boot.sh в терминале, который выдаст нам окно Qemu.
Как ни странно, именно на этом этапе что-то может резко пойти не так. Обычно англоязычные туториалы по теме именно в этот момент установки отписываются волшебной фразой «Отлично! Далее следуйте указаниям на экране», но я бы хотел подробно остановиться на основных моментах, на которых сам набил шишки.
Первым появится экран с тремя опциями, из которых выберем macOS Base System:
Далее вы увидите юзер-френдли терминал с тысячами строк белого текста на черном фоне — не переживайте, это так и должно быть…
Через буквально несколько секунд появится такая менюшка, в которой нужно перейти в Disk Utility:
В меню Utility в правой колонке выберем тот диск, который создали командой qemu-img . Самый простой признак — его размер будет больше 100 Гб. Здесь важно не ошибиться и не отформатировать не тот диск. Если это случится, придется начинать установку заново.
Переименовав диск и нажав Erase, закроем Disk Utility и вернемся к более раннему меню. После выбора Reinstall macOS Monterey нажимаем Agree и выбираем диск, который переименовали и отформатировали в Disk Utility:
Далее появится прогрессбар установки, заполнение которого может занимать много, очень много времени. Рационально отключить у ноутбука спящий режим и оставить его на ночь для успешной установки. После ее окончания вы еще раз увидите немного бегущего белого текста на черном фоне и затем долгожданный экран первоначальной настройки macOS Monterey:
Вот и все, дальнейшие действия — как при обычной настройке macOS. Может быть, существуют еще более простые способы запускать Monterey или даже Ventura из-под линуксового хоста, но этот показался наиболее оптимальным по затратам времени и усилий лично мне.
В заключение упомяну, что при запуске уже установленной виртуальной машины можно столкнуться с такой проблемой:
В этой ситуации поможет просто перезапустить хост, причем именно выключить, подождать несколько секунд и включить снова, Restart не спас. К сожалению, ничего конкретного о причинах этой ошибки мне узнать не удалось.