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.