GNU/Linux >> Tutoriels Linux >  >> Linux

Exécutez le logiciel MacOS sur Linux à l'aide de Darling

Nous avons du vin , une couche de compatibilité gratuite et open source qui nous aide à installer et à exécuter des applications et des jeux développés pour Windows sur des systèmes d'exploitation de type Linux et Unix. Nous avons également un émulateur nommé Dosbox pour exécuter de bons vieux jeux MS-DOS et d'anciens compilateurs C++ comme Turbo C++ sous Linux. Qu'en est-il du logiciel macOS ? Vous êtes-vous déjà demandé comment exécuter des applications spécifiquement pour Mac sous Linux ? C'est ce que nous allons faire maintenant. Ce guide explique comment exécuter le logiciel macOS sur les systèmes d'exploitation Linux à l'aide de Darling environnement d'exécution.

Qu'est-ce que mon chéri ?

Darling est une couche de traduction qui nous permet d'exécuter des applications macOS sur Linux. Il émule un Darwin complet environnement, y compris Mach, dyld, launchd et tout ce que vous attendez. Il vous permet de basculer instantanément vers un shell Bash et de commencer à exécuter les applications conçues pour macOS sur votre système Linux. Ça a l'air cool, ouais ?

Darling est très similaire à Wine. Wine vous permet d'exécuter des applications Windows sur Linux. Darling vous permet d'exécuter le logiciel macOS Linux.

Heureusement que Darling n'enfreint pas le CLUF d'Apple . Parce qu'il n'utilise que les parties de la version de Darwin qui sont publiées en tant que logiciel entièrement gratuit.

Le nom "Darling" vient de la combinaison de "Darwin" et "Linux". Comme vous le savez probablement, Darwin est le système d'exploitation principal sur lequel macOS et iOS sont basés.

Darling est un logiciel gratuit et open-source publié sous GPLv3.

Installer Darling dans Ubuntu Linux

Actuellement, les développeurs de Darling n'ont fourni que des packages DEB précompilés. Accédez à la page des versions et télécharger les packages DEB sont fournis pour darling et darling-dkms (le module du noyau).

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

Exemple de résultat :

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.

Après avoir installé le package darling-dkms, installez darling à l'aide de la commande :

$ sudo gdebi darling_0.1.20200331.testing_amd64.deb 

Exemple de résultat :

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 raison pour laquelle je préfère installer .deb paquets avec Gdebi est-ce qu'il résoudra automatiquement les dépendances requises et les installera pour moi. Si vous préférez utiliser dpkg gestionnaire de packages, vous devez d'abord installer les packages Darling DEB, puis installer les dépendances manquantes comme ci-dessous.

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

Sur d'autres distributions Linux, vous devrez peut-être compiler et installer manuellement Darling à partir de la source comme décrit ici .

Exécutez le logiciel MacOS sur Linux à l'aide de Darling

Les développeurs de Darling prévoient de créer une interface graphique agréable et conviviale pour interagir avec Darling. Mais pour l'instant, nous ne pouvons interagir avec Darling que via la ligne de commande.

Pour entrer dans Darling shell, exécutez simplement la commande suivante en tant qu'utilisateur 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]$

Cette commande démarrera un répertoire racine virtuel (c'est-à-dire un conteneur) ou se connectera à un conteneur déjà en cours d'exécution et générera le shell à l'intérieur.

Il chargera également automatiquement le module du noyau et initialisera le contenu du préfixe si nécessaire. Les préfixes Darling sont appelés DPREFIXes , qui sont très similaires aux WINEPREFIXes . Un préfixe n'est rien d'autre qu'un environnement virtuel "chroot" avec une structure de système de fichiers de type macOS, où nous pouvons installer des logiciels en toute sécurité.

Le shell en cours d'exécution à l'intérieur du conteneur est Bash et sa version est 3.2.

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

Maintenant, nous sommes dans l'environnement émulé de type macOS. Étant donné que macOS est une variante Unix, de nombreuses commandes Linux et Unix devraient fonctionner dans le shell Darling.

Par exemple, imprimez le nom du système d'exploitation à l'aide de la commande :

$ uname
Darwin

Lister le contenu de root (/) répertoire :

$ ls -l /

Exemple de résultat :

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

De même, utilisez toutes les commandes spécifiques à macOS pour explorer l'environnement émulé.

Disposition du système de fichiers Darling

Si vous êtes déjà familiarisé avec le système de fichiers macOS, vous remarquerez que la disposition du système de fichiers à l'intérieur du conteneur est similaire à celle de macOS, y compris les répertoires de niveau supérieur tels que /Applications/Users , et /System etc

Le système de fichiers Linux d'origine est visible en tant que partition distincte montée sur /Volumes/SystemRoot . Vous pouvez le vérifier en exécutant n'importe quelle commande Linux avec le nom de chemin complet comme ci-dessous :

$ /Volumes/SystemRoot/bin/uname 
Linux

Comme vous le voyez dans la sortie ci-dessus, il répertorie le nom de mon système hôte réel, pas le nom du conteneur. Si vous ne spécifiez pas le chemin d'extraction (c'est-à-dire /Volumes/SystemRoot/bin/uname ), il listera le nom du conteneur.

Lorsque vous exécutez des programmes macOS sous Darling, vous souhaiterez peut-être qu'ils accèdent aux fichiers de votre dossier de départ. Pour rendre cela pratique, il existe un LinuxHome lien symbolique dans votre dossier de départ Darling qui pointe vers votre dossier de départ Linux, vu de l'intérieur du conteneur. En outre, les répertoires standards tels que Downloads dans votre dossier de départ Darling sont liés symboliquement aux dossiers correspondants dans votre dossier de départ Linux.

Liste des choses que vous pouvez actuellement faire avec Darling

Veuillez noter que la plupart des applications GUI ne fonctionneront pas pour le moment . Actuellement, vous ne pouvez exécuter que quelques applications graphiques simples et de nombreux programmes en ligne de commande. Ne soyez pas déçu. Les applications GUI ne fonctionnent pas prêtes à l'emploi pour l'instant . Les développeurs y travaillent pour intégrer pleinement les applications exécutées sous Darling dans le bureau Linux, tout comme les applications natives. Ils prévoient même de prendre en charge les applications iOS à long terme.

Voici la liste des commandes que vous pouvez actuellement exécuter avec Darling.

Imprimez les détails du système d'exploitation Mac OS X à l'aide de la commande :

$ sw_vers

Cette commande affichera le nom Mac OS, la version du produit et la version de compilation :

ProductName:    Mac OS X
ProductVersion: 10.14
BuildVersion:   Darling

Imprimez quelque chose de cool sur la sortie standard en utilisant echo commande :

$ echo Welcome To OSTechNix
Welcome To OSTechNix

Afficher le nom du système d'exploitation :

$ uname 
Darwin

Explorez le système de fichiers 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

Afficher les processus en cours :

$ 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 

Vérifiez les supports :

$ column -t /proc/self/mounts 

Lire les pages de manuel :

$ man uname

Vous pouvez faire plus. Tout est donné dans la section intitulée "Quoi essayer" dans la documentation officielle liée à la fin.

Mettre fin à ma chérie

Une fois que vous avez fini d'explorer Mac OS, quittez simplement le shell Darling et fermez le conteneur à l'aide des commandes :

$ exit
$ darling shutdown

Vous ne verrez aucune notification lors de l'arrêt du conteneur. Exécutez à nouveau cette commande et vous verrez le résultat suivant :

Darling container is not running

Conclusion

Contrairement à Wine, Darling n'est pas un projet mature. En utilisant Wine, vous pouvez exécuter de nombreuses applications Windows, même certains jeux haut de gamme, sous Linux. Malheureusement, Darling n'aide pas beaucoup. Il ne peut exécuter qu'une poignée de programmes en ligne de commande pour le moment. Il est encore en phase alpha. Vous pouvez l'utiliser à des fins d'apprentissage et de test de base.

Essayez-le et faites-nous savoir comment ça se passerait dans la section des commentaires ci-dessous.


Linux
  1. Déboguer Linux avec ProcDump

  2. Linux – Exécuter des applications Mac Os X sous Linux ?

  3. Exécutez facilement le logiciel Windows sur Linux avec des bouteilles

  4. Quickemu – Exécutez des machines virtuelles Windows, macOS et Linux

  5. Android - Comment rooter un Samsung S6 avec Linux ?

Comment tout mettre à niveau à l'aide de l'utilitaire CLI Topgrade sous Linux

Comment exécuter des applications Linux sur Windows 10 et 11 à l'aide de WSL

Comment exécuter une commande périodiquement sous Linux à l'aide de Watch

Utilisation de PPA dans Ubuntu Linux [Guide complet]

Exécutez des processus d'arrière-plan sous Linux à l'aide de la commande Screen

Utilisation de la commande Watch sous Linux