GNU/Linux >> Linux Esercitazione >  >> Linux

Esegui il software MacOS su Linux usando Darling

Abbiamo Vino , un livello di compatibilità gratuito e open source che ci aiuta a installare ed eseguire applicazioni e giochi sviluppati per Windows su sistemi operativi simili a Linux e Unix. Abbiamo anche un emulatore chiamato Dosbox per eseguire i vecchi giochi MS-DOS e compilatori C++ defunti come Turbo C++ in Linux. E il software macOS? Ti sei mai chiesto come eseguire applicazioni specifiche per mac sotto Linux? Questo è quello che faremo ora. Questa guida spiega come eseguire il software macOS su sistemi operativi Linux utilizzando Darling ambiente di runtime.

Cos'è Tesoro?

Darling è un livello di traduzione che ci consente di eseguire applicazioni macOS su Linux. Emula un completo Darwin ambiente, inclusi Mach, dyld, launchd e tutto ciò che ti aspetteresti. Ti consente di passare istantaneamente a una shell Bash e iniziare a eseguire le applicazioni create per macOS nel tuo sistema Linux. Suona bene, vero?

Darling è molto simile a Wine. Wine ti consente di eseguire app Windows su Linux. Darling ti consente di eseguire il software macOS Linux.

La cosa buona è che Darling non viola l' EULA di Apple . Perché utilizza solo le parti della versione di Darwin che vengono rilasciate come software completamente gratuito.

Il nome "Darling" deriva dalla combinazione di "Darwin" e "Linux". Come probabilmente saprai, Darwin è il sistema operativo principale su cui si basano macOS e iOS.

Darling è un software gratuito e open source rilasciato sotto GPLv3.

Installa Darling in Ubuntu Linux

Attualmente, gli sviluppatori di Darling hanno fornito solo pacchetti DEB precompilati. Vai alla pagina dei rilasci e scarica i pacchetti DEB forniti per darlingdarling-dkms (il modulo del kernel).

$ sudo gdebi darling-dkms_0.1.20200331.testing_amd64.deb

Risultato di esempio:

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.

Dopo aver installato il pacchetto darling-dkms, installa darling usando il comando:

$ sudo gdebi darling_0.1.20200331.testing_amd64.deb 

Risultato di esempio:

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

Il motivo per cui preferisco installare .deb pacchetti con Gdebi è risolverà automaticamente le dipendenze richieste e le installerà per me. Se preferisci usare dpkg gestore di pacchetti, devi prima installare i pacchetti Darling DEB e quindi installare le dipendenze mancanti come di seguito.

$ sudo gdebi darling-dkms_0.1.20200331.testing_amd64.deb
$ sudo gdebi darling_0.1.20200331.testing_amd64.deb
$ sudo apt install -f

Su altre distribuzioni Linux, potrebbe essere necessario compilare e installare manualmente Darling dal sorgente come descritto qui .

Esegui il software MacOS su Linux utilizzando Darling

Gli sviluppatori di Darling stanno progettando di creare una GUI piacevole e intuitiva per interagire con Darling. Ma per ora possiamo interagire con Darling solo tramite riga di comando.

Per entrare nella shell di Darling, esegui semplicemente il seguente comando come utente normale:

$ 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]$

Questo comando avvierà una directory principale virtuale (cioè un contenitore) o si connetterà a un contenitore già in esecuzione e genererà la shell all'interno.

Inoltre caricherà automaticamente il modulo del kernel e inizializzerà il contenuto del prefisso, se necessario. I prefissi Darling sono chiamati DPREFIXes , che sono molto simili a WINEPREFIXes . Un prefisso non è altro che un ambiente virtuale "chroot" con una struttura di filesystem simile a macOS, dove possiamo installare il software in sicurezza.

La shell corrente in esecuzione all'interno del contenitore è Bash e la sua versione è 3.2.

$ bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin14)
Copyright (C) 2007 Free Software Foundation, Inc.

Ora, siamo all'interno dell'ambiente simile a macOS emulato. Poiché macOS è una variante di Unix, molti comandi Linux e Unix dovrebbero funzionare nella shell Darling.

Ad esempio, stampa il nome del sistema operativo usando il comando:

$ uname
Darwin

Elenca il contenuto di root (/) directory:

$ ls -l /

Risultato di esempio:

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

Allo stesso modo, usa qualsiasi comando specifico di macOS per esplorare l'ambiente emulato.

Caro layout del filesystem

Se hai già familiarità con il filesystem di macOS, noterai che il layout del filesystem all'interno del contenitore è simile a quello di macOS, comprese le directory di livello superiore come /Applications/Users/System ecc.

Il filesystem Linux originale è visibile come una partizione separata montata su /Volumes/SystemRoot . Puoi verificarlo eseguendo qualsiasi comando Linux con il nome completo del percorso come di seguito:

$ /Volumes/SystemRoot/bin/uname 
Linux

Come vedi nell'output sopra, elenca il nome del mio sistema host effettivo, non il nome del contenitore. Se non specifichi il percorso di pull (ad esempio /Volumes/SystemRoot/bin/uname ), elencherà il nome del contenitore.

Quando esegui programmi macOS in Darling, potresti voler che accedano ai file nella tua cartella Inizio. Per renderlo conveniente, c'è un LinuxHome collegamento simbolico nella cartella Inizio di Darling che punta alla cartella Inizio di Linux, vista dall'interno del contenitore. Inoltre, directory standard come Downloads nella tua cartella home di Darling sono collegati simbolicamente alle cartelle corrispondenti nella tua cartella home di Linux.

Elenco delle cose che puoi fare attualmente con Darling

Tieni presente che la maggior parte delle applicazioni GUI non funzionerà al momento . Attualmente, puoi eseguire solo alcune semplici applicazioni grafiche e molti programmi a riga di comando. Non rimanere deluso. Le applicazioni della GUI non funzionano immediatamente ancora . Gli sviluppatori stanno lavorando su questo per integrare completamente le app in esecuzione su Darling nel desktop Linux proprio come le app native. Hanno anche in programma di supportare le app iOS a lungo termine.

Ecco l'elenco dei comandi che puoi eseguire attualmente con Darling.

Stampa i dettagli del sistema operativo Mac OS X utilizzando il comando:

$ sw_vers

Questo comando visualizzerà il nome di Mac OS, la versione del prodotto e la versione build:

ProductName:    Mac OS X
ProductVersion: 10.14
BuildVersion:   Darling

Stampa qualcosa di interessante sull'output standard usando echo comando:

$ echo Welcome To OSTechNix
Welcome To OSTechNix

Visualizza il nome del sistema operativo:

$ uname 
Darwin

Esplora il filesystem di 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

Visualizza i processi attualmente in esecuzione:

$ 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 

Controlla i supporti:

$ column -t /proc/self/mounts 

Leggi le pagine di manuale:

$ man uname

Puoi fare di più. Tutto è riportato nella sezione intitolata "Cosa provare" nella documentazione ufficiale collegata alla fine.

Termina Tesoro

Una volta che hai finito con l'esplorazione di Mac OS, esci semplicemente dalla shell Darling e spegni il contenitore usando i comandi:

$ exit
$ darling shutdown

Non vedrai alcuna notifica durante l'arresto del contenitore. Esegui di nuovo quel comando e vedrai il seguente output:

Darling container is not running

Conclusione

A differenza di Wine, Darling non è un progetto maturo. Usando Wine, puoi eseguire così tante applicazioni Windows, anche alcuni giochi di fascia alta, sotto Linux. Sfortunatamente, Darling non aiuta molto. Al momento può eseguire solo una manciata di programmi da riga di comando. È ancora in fase alfa. Puoi usarlo per scopi di apprendimento e test di base.

Fai un tentativo e facci sapere come andrebbe nella sezione commenti qui sotto.


Linux
  1. Esegui il debug di Linux usando ProcDump

  2. Esegui facilmente il software Windows su Linux con Bottles

  3. Quickemu – Esegui macchine virtuali Windows, macOS e Linux

  4. Avvia i programmi di installazione del software su Linux da Windows utilizzando Cygwin

  5. Come eseguire UNetBootin (o simile) su Linux?

Come aggiornare tutto utilizzando l'utility CLI Topgrade in Linux

Come eseguire app Linux su Windows 10 e 11 utilizzando WSL

Come eseguire periodicamente un comando in Linux usando Watch

Utilizzo di PPA in Ubuntu Linux [Guida completa]

Esegui processi in background in Linux usando il comando Screen

Utilizzo del comando Watch in Linux