🐧 Запуск программного обеспечения MacOS на Linux с помощью Darling

by itisgood

У нас есть 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
В других дистрибутивах Linux вам может потребоваться вручную скомпилировать и установить Darling из исходного кода, как описано здесь: https://docs.darlinghq.org/build-instructions.html

Запуск программного обеспечения 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]$
Эта команда запустит виртуальный корневой каталог (т.е. контейнер) или подключится к уже запущенному контейнеру и создаст оболочку внутри.
Он также автоматически загрузит модуль ядра и при необходимости инициализирует содержимое префикса.
Префиксы называются DPREFIX, которые очень похожи на WINEPREFIX.

Префикс – это не что иное, как виртуальная среда «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, если смотреть изнутри контейнера.
Кроме того, стандартные каталоги, такие как Downloads в вашей домашней папке Darling, имеют символические ссылки на соответствующие папки в вашей домашней папке Linux.

Список вещей, которые вы можете делать с Darling

Обратите внимание, что большинство приложений с графическим интерфейсом в данный момент не работают

. В настоящее время вы можете запускать только некоторые простые графические приложения и многие программы командной строки.

Не расстраивайтесь.

Приложения с графическим интерфейсом пока не работают из коробки.

Разработчики работают над этим, чтобы полностью интегрировать приложения, работающие под Darling, в рабочий стол Linux, как и нативные приложения.

У них даже есть планы по поддержке приложений для iOS в долгосрочной перспективе.

Вот список команд, которые вы в настоящее время можете запускать с Darling.

Вывод сведения об операционной системе Mac OS X с помощью команды:

$ sw_vers

Эта команда отобразит имя Mac OS, версию продукта и версию сборки:

ProductName:    Mac OS X
ProductVersion: 10.14
BuildVersion:   Darling
Выведем что-нибудь классное на стандартный вывод с помощью команды echo:
$ 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

You may also like

2 комментария

электронные госуслуги 10.10.2020 - 00:18

Одной из проблем компьютеров и ноутбуков Apple уже давно является попытка примирить macOS и Linux. Речь идёт именно о запуске яблочных бинарных файлов на свободной ОС. Такой себе вариант Wine, но только для операционной системы из Купертино.

Reply
cabinet-mosenergosbyt.ru 11.10.2020 - 19:20

Таким образом, можно резюмировать, что объединение разных платформ идёт, хотя и медленно. Рано или поздно, как ожидается, производительность железа достигнет нужного уровня, а Wine и Darling смогут обеспечить бесшовное взаимодействие на уровне программного обеспечения.

Reply

Leave a Comment