GNU/Linux >> Tutoriales Linux >  >> Linux

Ejecute el software MacOS en Linux usando Darling

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 darlingdarling-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/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.


Linux
  1. Depurar Linux usando ProcDump

  2. Usando sudo para delegar permisos en Linux

  3. Linux:¿ejecutar aplicaciones de Mac Os X en Linux?

  4. Inicie instaladores de software en Linux desde Windows usando Cygwin

  5. Android - ¿Cómo rootear Samsung S6 usando Linux?

Cómo actualizar todo usando la utilidad CLI de Topgrade en Linux

Cómo ejecutar aplicaciones de Linux en Windows 10 y 11 usando WSL

Cómo ejecutar un comando periódicamente en Linux usando Watch

Uso de PPA en Ubuntu Linux [Guía completa]

Ejecute procesos en segundo plano en Linux usando el comando Pantalla

Usando el comando Watch en Linux