Запустите программное обеспечение MacOS в Linux с помощью Darling
Уровень эмуляции Darwin/macOS для Linux
У нас есть Wine – бесплатный уровень совместимости с открытым исходным кодом, который помогает нам устанавливать и запускать приложения и игры, разработанные для Windows, в Linux и Unix-подобных операционных системах. У нас также есть эмулятор под названием Dosbox для запуска старых добрых игр MS-DOS и устаревших компиляторов C++, таких как Turbo C++ в Linux. А как насчет программного обеспечения MacOS? Вы когда-нибудь задумывались, как запускать приложения специально для Mac под Linux? Это то, что мы собираемся сделать сейчас. В этом руководстве объясняется, как запускать программное обеспечение macOS в операционных системах Linux с использованием среды выполнения Darling.
Что такое Дарлинг?
Darling — это уровень трансляции, позволяющий запускать приложения macOS в Linux. Он эмулирует полную среду Darwin, включая Mach, dyld, launchd и все, что вы ожидаете. Он позволяет вам мгновенно переключиться на оболочку Bash и начать запускать приложения, созданные для macOS, в вашей системе Linux. Звучит круто, да?
Дарлинг очень похож на Вайн. Wine позволяет запускать приложения Windows в Linux. Darling позволяет запускать программное обеспечение macOS Linux.
Хорошо, что Дарлинг не нарушает Лицензионное соглашение Apple. Потому что он использует только те части версии Darwin, которые выпущены как полностью бесплатное программное обеспечение.
Имя «Дорогой» происходит от сочетания слов «Дарвин» и «Линукс». Как вы, наверное, знаете, Darwin — это основная операционная система, на которой основаны macOS и iOS.
Darling — бесплатное программное обеспечение с открытым исходным кодом, выпущенное под лицензией GPLv3.
Установите Дарлинг в Ubuntu Linux
В настоящее время разработчики Darling предоставляют только предварительно скомпилированные пакеты DEB. Перейдите на страницу релизов и загрузите пакеты DEB, предоставленные для darling
и darling-dkms
(модуля ядра).
sudo gdebi darling-dkms_0.1.20200331.testing_amd64.deb
Пример вывода:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading state information... Done
Kernel module for Darling
Do you want to install the software package? [y/N]:y
/usr/bin/gdebi:113: FutureWarning: Possible nested set at position 1
c = findall("[[(](\S+)/\S+[])]", msg)[0].lower()
Selecting previously unselected package darling-dkms.
(Reading database ... 269719 files and directories currently installed.)
Preparing to unpack darling-dkms_0.1.20200331.testing_amd64.deb ...
Unpacking darling-dkms (0.1.20200331~testing) ...
Setting up darling-dkms (0.1.20200331~testing) ...
>>> DKMS: Module add, build, and install
Creating symlink /var/lib/dkms/darling-mach/0.1/source ->
/usr/src/darling-mach-0.1
DKMS: add completed.
Kernel preparation unnecessary for this kernel. Skipping...
Building module:
cleaning build area....
'make' -C lkm/ MIGDIR=/usr/src/darling-mach-0.1/miggen MIGDIR_REL=../miggen KERNELVERSION=5.4.0-48-generic...........................................
cleaning build area...
DKMS: build completed.
darling-mach.ko:
Running module version sanity check.
- Original module
- No original module exists within this kernel
- Installation
- Installing to /lib/modules/5.4.0-48-generic/updates/dkms/
depmod............
DKMS: install completed.
После установки пакета darling-dkms установите darling с помощью команды:
sudo gdebi darling_0.1.20200331.testing_amd64.deb
Пример вывода:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading state information... Done
Requires the installation of the following packages: libc6-i386
Darling
macOS emulation layer for Linux
Do you want to install the software package? [y/N]:y
/usr/bin/gdebi:113: FutureWarning: Possible nested set at position 1
c = findall("[[(](\S+)/\S+[])]", msg)[0].lower()
Get:1 http://ny-mirrors.evowise.com/ubuntu focal-updates/main amd64 libc6-i386 amd64 2.31-0ubuntu9.1 [2721 kB]
Fetched 2721 kB in 0s (0 B/s)
Selecting previously unselected package libc6-i386.
(Reading database ... 274071 files and directories currently installed.)
Preparing to unpack .../libc6-i386_2.31-0ubuntu9.1_amd64.deb ...
Unpacking libc6-i386 (2.31-0ubuntu9.1) ...
Setting up libc6-i386 (2.31-0ubuntu9.1) ...
Processing triggers for libc-bin (2.31-0ubuntu9.1) ...
Selecting previously unselected package darling.
(Reading database ... 274374 files and directories currently installed.)
Preparing to unpack darling_0.1.20200331.testing_amd64.deb ...
Unpacking darling (0.1.20200331~testing) ...
Setting up darling (0.1.20200331~testing) ...
>>> Shutting down old instances of Darling
Seeing if Darling is currently running
No instances running now
Причина, по которой я предпочитаю устанавливать пакеты .deb
с помощью Gdebi
, заключается в том, что он автоматически разрешает необходимые зависимости и устанавливает их за меня. Если вы предпочитаете использовать менеджер пакетов dpkg
, вам необходимо сначала установить пакеты Darling DEB, а затем установить недостающие зависимости, как показано ниже.
sudo gdebi darling-dkms_0.1.20200331.testing_amd64.deb
sudo gdebi darling_0.1.20200331.testing_amd64.deb
sudo apt install -f
В других дистрибутивах Linux вам может потребоваться вручную скомпилировать и установить Darling из исходного кода, как описано здесь.
Запустите программное обеспечение MacOS в Linux с помощью Darling
Разработчики Darling планируют создать красивый и удобный графический интерфейс для взаимодействия с Darling. Но пока мы можем взаимодействовать с Дарлингом только через командную строку.
Чтобы войти в оболочку Darling, просто запустите следующую команду от имени обычного пользователя:
$ darling shell
Loaded the kernel module
Setting up a new Darling prefix at /home/sk/.darling
Bootstrapping the container with launchd...
Darling [/Volumes/SystemRoot/home/sk/Downloads/darling]$
Эта команда запустит виртуальный корневой каталог (т. е. контейнер) или подключится к уже работающему контейнеру и создаст внутри оболочку.
Запустить оболочку Дарлинг
Он также автоматически загрузит модуль ядра и при необходимости инициализирует содержимое префикса. Префиксы Darling называются DPREFIXes
и очень похожи на WINEPREFIXes
. Префикс — это не что иное, как виртуальная среда «chroot» со структурой файловой системы, подобной macOS, где мы можем безопасно устанавливать программное обеспечение.
Текущая оболочка, работающая внутри контейнера, — Bash
, ее версия — 3.2.
$ bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin14)
Copyright (C) 2007 Free Software Foundation, Inc.
Теперь мы находимся внутри эмулируемой среды, подобной macOS. Поскольку macOS является вариантом Unix, многие команды Linux и Unix должны работать в оболочке Darling.
Например, напечатайте имя операционной системы с помощью команды:
$ uname
Darwin
Выведите содержимое корневого каталога корневой (/)
:
ls -l /
Пример вывода:
total 120
drwxr-xr-x 2 sk sk 4096 Oct 5 09:54 Applications
drwxr-xr-x 1 sk sk 4096 Oct 5 07:19 Library
drwxr-xr-x 1 sk sk 4096 Oct 5 07:19 System
drwxrwxr-x 4 sk sk 4096 Oct 5 09:54 Users
drwxr-xr-x 1 sk sk 4096 Oct 5 09:54 Volumes
drwxr-xr-x 1 sk sk 4096 Oct 5 07:20 bin
lrwxrwxrwx 1 sk sk 23 Mar 31 2020 dev -> /Volumes/SystemRoot/dev
lrwxrwxrwx 1 sk sk 11 Mar 31 2020 etc -> private/etc
drwxr-xr-x 1 sk sk 4096 Oct 5 09:54 private
dr-xr-xr-x 292 sk sk 0 Oct 5 09:54 proc
drwxr-xr-x 1 sk sk 4096 Oct 5 07:20 sbin
lrwxrwxrwx 1 sk sk 11 Mar 31 2020 tmp -> private/tmp
drwxr-xr-x 1 sk sk 4096 Oct 5 09:54 usr
drwxr-xr-x 5 sk sk 4096 Oct 5 09:54 var
Аналогичным образом используйте любые команды, специфичные для macOS, для изучения эмулируемой среды.
Расположение файловой системы Darling
Если вы уже знакомы с файловой системой macOS, вы заметите, что структура файловой системы внутри контейнера аналогична структуре файловой системы macOS, включая каталоги верхнего уровня, такие как /Applications
, /Users
. и /System
и т. д.
Исходная файловая система Linux отображается как отдельный раздел, смонтированный в /Volumes/SystemRoot
. Вы можете проверить это, выполнив любую команду Linux с полным путем, как показано ниже:
$ /Volumes/SystemRoot/bin/uname
Linux
Как вы видите в приведенном выше выводе, в нем указано фактическое имя моей хост-системы, а не имя контейнера. Если вы не укажете путь извлечения (например, /Volumes/SystemRoot/bin/uname
), в нем будет указано имя контейнера.
При запуске программ macOS под Darling вы можете захотеть, чтобы они имели доступ к файлам в вашей домашней папке. Для удобства в вашей домашней папке Darling есть символическая ссылка LinuxHome
, которая указывает на вашу домашнюю папку Linux, если смотреть изнутри контейнера. Кроме того, стандартные каталоги, такие как Загрузки
в вашей домашней папке Darling, имеют символические ссылки на соответствующие папки в вашей домашней папке Linux.
Список вещей, которые вы сейчас можете делать с Дарлингом
Обратите внимание, что большинство приложений с графическим интерфейсом в данный момент не работают. В настоящее время вы можете запускать только некоторые простые графические приложения и множество программ командной строки. Не разочаровывайтесь. Приложения с графическим интерфейсом не работают «из коробки» пока. Разработчики работают над этим, чтобы полностью интегрировать приложения, работающие под управлением Darling, в рабочий стол Linux так же, как и собственные приложения. У них даже есть планы по поддержке приложений для iOS в долгосрочной перспективе.
Вот список команд, которые вы в настоящее время можете запускать с помощью Darling.
Распечатайте сведения об операционной системе Mac OS X с помощью команды:
sw_vers
Эта команда отобразит имя Mac OS, версию продукта и версию сборки:
ProductName: Mac OS X
ProductVersion: 10.14
BuildVersion: Darling
Напечатайте что-нибудь интересное в стандартный вывод, используя команду echo
:
echo Welcome To OSTechNix
Welcome To OSTechNix
Отображение названия операционной системы:
uname
Darwin
Исследуйте файловую систему Darling:
ls -l /
$ ls -l /Library/
total 56
drwxr-xr-x 1 sk sk 4096 Oct 5 07:19 Developer
drwxr-xr-x 1 sk sk 4096 Oct 5 07:20 Documentation
drwxr-xr-x 1 sk sk 4096 Mar 31 2020 LaunchAgents
drwxr-xr-x 1 sk sk 4096 Mar 31 2020 LaunchDaemons
drwxr-xr-x 1 sk sk 4096 Oct 5 07:19 Python
$ ls -l /Volumes/
total 8
lrwxrwxrwx 1 sk sk 1 Mar 31 2020 DarlingEmulatedDrive -> /
drwxr-xr-x 25 sk sk 4096 Oct 5 07:19 SystemRoot
$ ls -l /System/Library/
total 120
drwxr-xr-x 1 sk sk 4096 Oct 5 07:19 Components
drwxr-xr-x 1 sk sk 4096 Oct 5 07:20 CoreServices
drwxr-xr-x 1 sk sk 4096 Oct 5 07:20 Frameworks
drwxr-xr-x 1 sk sk 4096 Oct 5 07:20 LaunchDaemons
drwxr-xr-x 1 sk sk 4096 Oct 5 07:19 OpenSSL
drwxr-xr-x 1 sk sk 4096 Oct 5 07:19 Perl
drwxr-xr-x 1 sk sk 4096 Oct 5 07:19 PrivateFrameworks
drwxr-xr-x 1 sk sk 4096 Mar 31 2020 Security
drwxr-xr-x 1 sk sk 4096 Oct 5 07:19 User Template
Отображение текущих запущенных процессов:
$ ps aux
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
sk 127 0.0 0.1 4226308 8760 ?? R 1Jan70 0:00.02 nps aux
sk 19 0.0 0.1 4219692 5944 ?? R 1Jan70 0:00.03 o/usr/libexec/shellspawn
sk 20 0.0 0.1 4342428 9236 ?? R 1Jan70 0:00.06 s/usr/sbin/syslogd
sk 21 0.0 0.1 4224292 8956 ?? R 1Jan70 0:00.03 s/usr/sbin/memberd -x
sk 22 0.0 0.2 4355536 15544 ?? R 1Jan70 0:00.06 /usr/sbin/iokitd
sk 23 0.0 0.1 4423744 9400 ?? R 1Jan70 0:00.14 //usr/sbin/notifyd
sk 33 0.0 0.1 4480688 8576 ?? R 1Jan70 0:00.06 oaslmanager
sk 39 0.0 0.0 4227884 3952 ?? RN 1Jan70 0:00.01 s/usr/libexec/shellspawn
sk 40 0.0 0.1 4226028 10084 ?? R 1Jan70 0:00.38 e/bin/bash --login
sk 1 0.0 0.1 4260676 9536 ?? R 1Jan70 0:01.06 n/sbin/launchd
Проверьте крепления:
column -t /proc/self/mounts
Прочтите страницы руководства:
man uname
Вы можете сделать больше. Все описано в разделе «Что попробовать» официальной документации, ссылка на которую находится в конце.
Прекратить, дорогая
Закончив изучение Mac OS, просто выйдите из оболочки Darling и завершите работу контейнера с помощью команд:
exit
darling shutdown
Вы не увидите никаких уведомлений при выключении контейнера. Запустите эту команду еще раз, и вы увидите следующий вывод:
Darling container is not running
Заключение
В отличие от Wine, Darling не является зрелым проектом. Используя Wine, вы можете запускать под Linux множество приложений Windows, даже некоторые высококлассные игры. К сожалению, Дарлинг мало чем может помочь. На данный момент он может запускать лишь несколько программ командной строки. Он все еще находится на стадии альфа. Вы можете использовать его для базового обучения и тестирования.
Попробуйте и дайте нам знать, как все пройдет, в разделе комментариев ниже.
Ресурсы:
- Сайт любимого
- Репозиторий Darling GitHub
- Дорогая документация
Изображение ErfourisStudio из Pixabay.