GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Führen Sie MacOS-Software unter Linux mit Darling aus

Wir haben Wein , eine kostenlose Open-Source-Kompatibilitätsschicht, die uns hilft, Anwendungen und Spiele, die für Windows entwickelt wurden, auf Linux- und Unix-ähnlichen Betriebssystemen zu installieren und auszuführen. Wir haben auch einen Emulator namens Dosbox um gute alte MS-DOS-Spiele und veraltete C++-Compiler wie Turbo C++ unter Linux auszuführen. Was ist mit macOS-Software? Haben Sie sich jemals gefragt, wie Sie Anwendungen speziell für Mac unter Linux ausführen können? Das werden wir jetzt tun. In dieser Anleitung wird erläutert, wie Sie macOS-Software auf Linux-Betriebssystemen mit Darling ausführen Laufzeitumgebung.

Was ist Darling?

Darling ist eine Übersetzungsschicht, die es uns ermöglicht, macOS-Anwendungen unter Linux auszuführen. Es emuliert einen kompletten Darwin Umgebung, einschließlich Mach, dyld, launchd und allem, was Sie erwarten. Damit können Sie sofort zu einer Bash-Shell wechseln und die für macOS entwickelten Anwendungen in Ihrem Linux-System ausführen. Klingt cool, ja?

Darling ist Wine sehr ähnlich. Mit Wine können Sie Windows-Apps unter Linux ausführen. Mit Darling können Sie macOS-Software unter Linux ausführen.

Gut, dass Darling nicht gegen die  EULA von Apple verstößt . Weil es nur die Teile der Darwin-Version verwendet, die als vollständig freie Software veröffentlicht wurden.

Der Name „Darling“ kommt aus der Kombination von „Darwin“ und „Linux“. Wie Sie wahrscheinlich wissen, ist Darwin das Kernbetriebssystem, auf dem macOS und iOS basieren.

Darling ist eine kostenlose Open-Source-Software, die unter GPLv3 veröffentlicht wurde.

Darling unter Ubuntu Linux installieren

Derzeit haben die Darling-Entwickler nur vorkompilierte DEB-Pakete bereitgestellt. Rufen Sie die Release-Seite auf und Download der DEB-Pakete werden für darling bereitgestellt und darling-dkms (das Kernelmodul).

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

Beispielausgabe:

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.

Installieren Sie nach der Installation des darling-dkms-Pakets darling mit dem Befehl:

$ sudo gdebi darling_0.1.20200331.testing_amd64.deb 

Beispielausgabe:

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

Der Grund warum ich lieber .deb installiere Pakete mit Gdebi Es löst automatisch die erforderlichen Abhängigkeiten auf und installiert sie für mich. Wenn Sie es vorziehen, dpkg zu verwenden Paket-Manager müssen Sie zuerst die Darling DEB-Pakete installieren und dann die fehlenden Abhängigkeiten wie unten installieren.

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

Bei anderen Linux-Distributionen müssen Sie Darling möglicherweise manuell aus der Quelle kompilieren und installieren, wie hier beschrieben .

MacOS-Software unter Linux mit Darling ausführen

Die Entwickler von Darling planen, eine nette und benutzerfreundliche GUI für die Interaktion mit Darling zu bauen. Aber im Moment können wir mit Darling nur über die Befehlszeile interagieren.

Um in die Darling-Shell zu gelangen, führen Sie einfach den folgenden Befehl als normaler Benutzer aus:

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

Dieser Befehl startet ein virtuelles Root-Verzeichnis (d. h. einen Container) oder stellt eine Verbindung zu einem bereits laufenden Container her und erzeugt die darin enthaltene Shell.

Es lädt auch automatisch das Kernelmodul und initialisiert den Präfixinhalt, falls erforderlich. Die Darling-Präfixe heißen DPREFIXes , die den WINEPREFIXes sehr ähnlich sind . Ein Präfix ist nichts anderes als eine virtuelle „chroot“-Umgebung mit einer macOS-ähnlichen Dateisystemstruktur, in der wir Software sicher installieren können.

Die aktuelle Shell, die im Container ausgeführt wird, ist Bash und seine Version ist 3.2.

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

Jetzt befinden wir uns in der emulierten macOS-ähnlichen Umgebung. Da macOS eine Unix-Variante ist, sollten viele Linux- und Unix-Befehle in der Darling-Shell funktionieren.

Drucken Sie beispielsweise den Namen des Betriebssystems mit dem Befehl:

$ uname
Darwin

Listen Sie den Inhalt von root (/) auf Verzeichnis:

$ ls -l /

Beispielausgabe:

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

Verwenden Sie auf ähnliche Weise alle macOS-spezifischen Befehle, um die emulierte Umgebung zu erkunden.

Darling-Dateisystem-Layout

Wenn Sie bereits mit dem macOS-Dateisystem vertraut sind, werden Sie feststellen, dass das Dateisystem-Layout innerhalb des Containers dem von macOS ähnelt, einschließlich der Verzeichnisse der obersten Ebene wie /Applications/Users , und /System usw.

Das ursprüngliche Linux-Dateisystem ist als separate Partition sichtbar, die unter /Volumes/SystemRoot gemountet ist . Sie können dies überprüfen, indem Sie einen beliebigen Linux-Befehl mit vollständigem Pfadnamen wie unten ausführen:

$ /Volumes/SystemRoot/bin/uname 
Linux

Wie Sie in der obigen Ausgabe sehen, listet es den Namen meines tatsächlichen Hostsystems auf, nicht den Namen des Containers. Wenn Sie den Pull-Pfad nicht angeben (d. h. /Volumes/SystemRoot/bin/uname ), wird der Name des Containers aufgelistet.

Wenn Sie macOS-Programme unter Darling ausführen, möchten Sie möglicherweise, dass sie auf die Dateien in Ihrem Home-Ordner zugreifen. Um dies bequemer zu machen, gibt es ein LinuxHome Symlink in Ihrem Darling-Home-Ordner, der auf Ihren Linux-Home-Ordner verweist, wie er vom Container aus gesehen wird. Außerdem Standardverzeichnisse wie Downloads in Ihrem Darling-Home-Ordner sind symbolisch mit den entsprechenden Ordnern in Ihrem Linux-Home-Ordner verknüpft.

Liste der Dinge, die du derzeit mit Darling machen kannst

Bitte beachten Sie, dass die meisten GUI-Anwendungen derzeit nicht funktionieren . Derzeit können Sie nur einige einfache grafische Anwendungen und viele Befehlszeilenprogramme ausführen. Lassen Sie sich nicht enttäuschen. Die GUI-Anwendungen funktionieren noch nicht sofort . Die Entwickler arbeiten daran, Apps, die unter Darling laufen, genau wie die nativen Apps vollständig in den Linux-Desktop zu integrieren. Sie haben sogar Pläne, langfristig iOS-Apps zu unterstützen.

Hier ist die Liste der Befehle, die Sie derzeit mit Darling ausführen können.

Drucken Sie die Details des Mac OS X-Betriebssystems mit dem Befehl:

$ sw_vers

Dieser Befehl zeigt den Mac OS-Namen, die Produktversion und die Build-Version an:

ProductName:    Mac OS X
ProductVersion: 10.14
BuildVersion:   Darling

Geben Sie mit echo etwas Cooles auf der Standardausgabe aus Befehl:

$ echo Welcome To OSTechNix
Welcome To OSTechNix

Zeigt den Namen des Betriebssystems an:

$ uname 
Darwin

Erkunden Sie das Darling-Dateisystem:

$ 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

Aktuell laufende Prozesse anzeigen:

$ 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 

Überprüfen Sie die Halterungen:

$ column -t /proc/self/mounts 

Handbuchseiten lesen:

$ man uname

Sie können mehr tun. Alles ist unter dem Abschnitt mit dem Titel "Was Sie ausprobieren sollten" angegeben in der am Ende verlinkten offiziellen Dokumentation.

Beende Liebling

Wenn Sie mit dem Erkunden des Mac OS fertig sind, beenden Sie einfach die Darling-Shell und fahren Sie den Container mit den folgenden Befehlen herunter:

$ exit
$ darling shutdown

Sie sehen keine Benachrichtigung, wenn der Container heruntergefahren wird. Führen Sie diesen Befehl erneut aus und Sie sehen die folgende Ausgabe:

Darling container is not running

Schlussfolgerung

Im Gegensatz zu Wine ist Darling kein ausgereiftes Projekt. Mit Wine können Sie so viele Windows-Anwendungen, sogar einige High-End-Spiele, unter Linux ausführen. Leider hilft Darling nicht viel. Es kann derzeit nur eine Handvoll Befehlszeilenprogramme ausführen. Es befindet sich noch im Alpha-Stadium. Sie können es für grundlegende Lern- und Testzwecke verwenden.

Probieren Sie es aus und lassen Sie uns im Kommentarbereich unten wissen, wie es gelaufen ist.


Linux
  1. Debuggen Sie Linux mit ProcDump

  2. Verwenden von sudo zum Delegieren von Berechtigungen in Linux

  3. Einfaches Ausführen von Windows-Software unter Linux mit Bottles

  4. Quickemu – Führen Sie virtuelle Windows-, macOS- und Linux-Maschinen aus

  5. Starten Sie Software-Installer unter Linux von Windows mit Cygwin

So aktualisieren Sie alles mit dem erstklassigen CLI-Dienstprogramm in Linux

So führen Sie Linux-Apps unter Windows 10 und 11 mit WSL aus

So führen Sie einen Befehl regelmäßig unter Linux mit Watch aus

Verwenden von PPA in Ubuntu Linux [Vollständige Anleitung]

Führen Sie Hintergrundprozesse in Linux mit dem Screen-Befehl aus

Verwenden des Watch-Befehls unter Linux