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 darling
e darling-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
e /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.