У нас есть Wine, бесплатный инструмент с открытым исходным кодом, который помогает нам устанавливать и запускать приложения и игры, разработанные для Windows, в операционных системах Linux и Unix-подобных.
У нас также есть эмулятор Dosbox для запуска старых добрых игр MS-DOS и несуществующих компиляторов C ++, таких как Turbo C ++ на Linux.
А как насчет программного обеспечения macOS?
Вы когда-нибудь задумывались, как запускать приложения специально для Mac под Linux?
Вот чем мы сейчас займемся.
В этом руководстве объясняется, как запускать программное обеспечение macOS в операционных системах Linux с использованием среды выполнения Darling.
Darling – это инструмент, который позволяет нам запускать приложения macOS в Linux.
Он позволяет мгновенно переключиться на оболочку Bash и запустить приложения, созданные для macOS, в вашей системе Linux.
Звучит круто, да?
Darling очень похож на Wine. Wine позволяет запускать приложения Windows в Linux. Darling позволяет запускать программное обеспечение macOS Linux.
Хорошо, что Darling не нарушает EULA Apple.
Потому что он использует только те части версии Darwin, которые выпущены как полностью бесплатное программное обеспечение.
Darling – бесплатное программное обеспечение с открытым исходным кодом, выпущенное под лицензией GPLv3.
Установка Darling на 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
Запуск программного обеспечения MacOS на Linux с помощью Darling
Разработчики 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]$
Префикс – это не что иное, как виртуальная среда «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 является вариантом 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
Макет файловой системы Darling
Если вы уже знакомы с файловой системой macOS, вы заметите, что структура файловой системы внутри контейнера аналогична структуре файловой системы macOS, включая каталоги верхнего уровня, такие как /Applications, /Users и /System и т. д.
Исходная файловая система Linux отображается как отдельный раздел, смонтированный в /Volumes/SystemRoot.
$ /Volumes/SystemRoot/bin/uname
Linux
Если вы не укажете путь извлечения (например, /Volumes /SystemRoot/bin/uname), в нем будет указано имя контейнера.
При запуске программ macOS под Darling вы можете захотеть, чтобы они имели доступ к файлам в вашей домашней папке.
Список вещей, которые вы можете делать с Darling
Обратите внимание, что большинство приложений с графическим интерфейсом в данный момент не работают
. В настоящее время вы можете запускать только некоторые простые графические приложения и многие программы командной строки.
Не расстраивайтесь.
Приложения с графическим интерфейсом пока не работают из коробки.
Разработчики работают над этим, чтобы полностью интегрировать приложения, работающие под Darling, в рабочий стол Linux, как и нативные приложения.
У них даже есть планы по поддержке приложений для iOS в долгосрочной перспективе.
Вот список команд, которые вы в настоящее время можете запускать с Darling.
Вывод сведения об операционной системе Mac OS X с помощью команды:
$ sw_vers
Эта команда отобразит имя Mac OS, версию продукта и версию сборки:
ProductName: Mac OS X
ProductVersion: 10.14
BuildVersion: Darling
$ echo Welcome To itisgood
Welcome To itisgood
$ 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
Проверим mounts:
$ column -t /proc/self/mounts
Выход из Darling
После того, как вы закончили изучение Mac OS, просто выйдите из оболочки Darling и выключите контейнер с помощью команд:
$ exit
$ darling shutdown
Darling container is not running
2 комментария
Одной из проблем компьютеров и ноутбуков Apple уже давно является попытка примирить macOS и Linux. Речь идёт именно о запуске яблочных бинарных файлов на свободной ОС. Такой себе вариант Wine, но только для операционной системы из Купертино.
Таким образом, можно резюмировать, что объединение разных платформ идёт, хотя и медленно. Рано или поздно, как ожидается, производительность железа достигнет нужного уровня, а Wine и Darling смогут обеспечить бесшовное взаимодействие на уровне программного обеспечения.