Tenemos Vino , una capa de compatibilidad gratuita y de código abierto que nos ayuda a instalar y ejecutar aplicaciones y juegos desarrollados para Windows en sistemas operativos Linux y tipo Unix. También tenemos un emulador llamado Dosbox para ejecutar viejos juegos de MS-DOS y compiladores de C++ obsoletos como Turbo C++ en Linux. ¿Qué pasa con el software macOS? ¿Alguna vez te has preguntado cómo ejecutar aplicaciones específicamente para Mac en Linux? Eso es lo que vamos a hacer ahora. Esta guía explica cómo ejecutar el software macOS en sistemas operativos Linux usando Darling entorno de tiempo de ejecución.
¿Qué es Darling?
Darling es una capa de traducción que nos permite ejecutar aplicaciones macOS en Linux. Emula un completo Darwin entorno, incluidos Mach, dyld, launchd y todo lo que cabría esperar. Le permite cambiar instantáneamente a un shell Bash y comenzar a ejecutar las aplicaciones creadas para macOS en su sistema Linux. Suena genial, ¿sí?
Darling es muy similar a Wine. Wine le permite ejecutar aplicaciones de Windows en Linux. Darling te permite ejecutar el software macOS Linux.
Lo bueno es que Darling no infringe el EULA de Apple . Porque solo utiliza las partes de la versión de Darwin que se publican como software totalmente gratuito.
El nombre "Darling" proviene de la combinación de "Darwin" y "Linux". Como probablemente sepa, Darwin es el sistema operativo principal en el que se basan macOS e iOS.
Darling es un software gratuito y de código abierto publicado bajo GPLv3.
Instalar Darling en Ubuntu Linux
Actualmente, los desarrolladores de Darling solo han proporcionado paquetes DEB precompilados. Ir a la página de lanzamientos y descargue los paquetes DEB que se proporcionan para darling
y darling-dkms
(el módulo del kernel).
$ sudo gdebi darling-dkms_0.1.20200331.testing_amd64.deb
Salida de muestra:
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.
Después de instalar el paquete darling-dkms, instale darling usando el comando:
$ sudo gdebi darling_0.1.20200331.testing_amd64.deb
Salida de muestra:
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
La razón por la que prefiero instalar .deb
paquetes con Gdebi
es que resolverá automáticamente las dependencias requeridas y las instalará por mí. Si prefiere usar dpkg
administrador de paquetes, primero debe instalar los paquetes Darling DEB y luego instalar las dependencias que faltan como se muestra a continuación.
$ sudo gdebi darling-dkms_0.1.20200331.testing_amd64.deb
$ sudo gdebi darling_0.1.20200331.testing_amd64.deb
$ sudo apt install -f
En otras distribuciones de Linux, es posible que deba compilar e instalar Darling manualmente desde la fuente como se describe aquí .
Ejecute el software MacOS en Linux usando Darling
Los desarrolladores de Darling planean crear una GUI agradable y fácil de usar para interactuar con Darling. Pero por ahora, podemos interactuar con Darling solo a través de la línea de comandos.
Para ingresar a Darling shell, simplemente ejecute el siguiente comando como usuario normal:
$ 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]$
Este comando iniciará un directorio raíz virtual (es decir, un contenedor) o se conectará a un contenedor que ya se está ejecutando y generará el shell en su interior.
También cargará automáticamente el módulo del kernel e inicializará el contenido del prefijo si es necesario. Los prefijos de Darling se denominan DPREFIXes
, que son muy similares a WINEPREFIXes
. Un prefijo no es más que un entorno virtual "chroot" con una estructura de sistema de archivos similar a macOS, donde podemos instalar software de forma segura.
El shell actual que se ejecuta dentro del contenedor es Bash
y su versión es 3.2.
$ bash --version GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin14) Copyright (C) 2007 Free Software Foundation, Inc.
Ahora, estamos dentro del entorno similar a macOS emulado. Dado que macOS es una variante de Unix, muchos comandos de Linux y Unix deberían funcionar en el shell Darling.
Por ejemplo, imprima el nombre del sistema operativo usando el comando:
$ uname Darwin
Listar el contenido de root (/)
directorio:
$ ls -l /
Salida de muestra:
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
Del mismo modo, use cualquier comando específico de macOS para explorar el entorno emulado.
Disposición del sistema de archivos Darling
Si ya está familiarizado con el sistema de archivos de macOS, notará que el diseño del sistema de archivos dentro del contenedor es similar al de macOS, incluidos los directorios de nivel superior como /Applications
, /Users
y /System
etc
El sistema de archivos original de Linux es visible como una partición separada que está montada en /Volumes/SystemRoot
. Puede verificarlo ejecutando cualquier comando de Linux con el nombre de ruta completo como se muestra a continuación:
$ /Volumes/SystemRoot/bin/uname Linux
Como puede ver en el resultado anterior, enumera el nombre de mi sistema host real, no el nombre del contenedor. Si no especifica la ruta de extracción (es decir, /Volumes/SystemRoot/bin/uname
), mostrará el nombre del contenedor.
Cuando ejecute programas macOS en Darling, es posible que desee que accedan a los archivos de su carpeta de inicio. Para que esto sea conveniente, hay un LinuxHome
enlace simbólico en su carpeta de inicio de Darling que apunta a su carpeta de inicio de Linux, como se ve desde el interior del contenedor. Además, directorios estándar como Downloads
en su carpeta de inicio de Darling están vinculados a las carpetas correspondientes en su carpeta de inicio de Linux.
Lista de cosas que puedes hacer actualmente con Darling
Tenga en cuenta que la mayoría de las aplicaciones GUI no funcionarán en este momento . Actualmente, solo puede ejecutar algunas aplicaciones gráficas simples y muchos programas de línea de comandos. No te decepciones. Las aplicaciones GUI no funcionan de fábrica todavía . Los desarrolladores están trabajando en esto para integrar completamente las aplicaciones que se ejecutan bajo Darling en el escritorio de Linux al igual que las aplicaciones nativas. Incluso tienen planes para admitir aplicaciones de iOS a largo plazo.
Esta es la lista de comandos que puede ejecutar actualmente con Darling.
Imprima los detalles del sistema operativo Mac OS X usando el comando:
$ sw_vers
Este comando mostrará el nombre de Mac OS, la versión del producto y la versión de compilación:
ProductName: Mac OS X ProductVersion: 10.14 BuildVersion: Darling
Imprima algo genial en la salida estándar usando echo
comando:
$ echo Welcome To OSTechNix Welcome To OSTechNix
Mostrar el nombre del sistema operativo:
$ uname Darwin
Explore el sistema de archivos 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
Mostrar procesos actualmente en ejecución:
$ 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
Revisa los montajes:
$ column -t /proc/self/mounts
Leer páginas de manual:
$ man uname
Puedes hacer más. Todo se proporciona en la sección titulada "Qué probar" en la documentación oficial vinculada al final.
Termina a Darling
Una vez que haya terminado de explorar Mac OS, simplemente salga del shell de Darling y apague el contenedor usando los comandos:
$ exit
$ darling shutdown
No verá ninguna notificación cuando se cierre el contenedor. Ejecute ese comando nuevamente y verá el siguiente resultado:
Darling container is not running
Conclusión
A diferencia de Wine, Darling no es un proyecto maduro. Usando Wine, puede ejecutar tantas aplicaciones de Windows, incluso algunos juegos de alta gama, bajo Linux. Desafortunadamente, Darling no ayuda mucho. Solo puede ejecutar un puñado de programas de línea de comandos en este momento. Todavía está en etapa alfa. Puede usarlo con fines básicos de aprendizaje y evaluación.
Pruébalo y cuéntanos cómo te fue en la sección de comentarios a continuación.