Darling - LinuxでmacOSアプリを直接実行するためのランタイム環境

S 20161105 113007

Linux環境でmacOSの実行ファイルを直接実行するための変換レイヤー「Darling」。Windows用バイナリをLinuxで直接実行する「Wine」のmacOS版と考えると分かりやすいかもしれません。GPL 3.0が採用されたソースコードがGitHubで配布されています。

現段階ではGUIを使用したmacOSアプリには対応しておらず、AppleのツールチェインやMidnight CommanderといったRudix.orgから取得できる各種ターミナルベースのアプリケーションが実行可能とされています。

Mc darling

Build Instructionsによると32bit/64bitどちらのLinux環境にも対応しているようです。本日はビルドが確認されている、64bit版のUbuntu 16.04にDarlingをインストールしてmacOSバイナリを実行する方法を説明します。

Darlingの導入方法

Build Instructionsに従って作業します。

最初にapt-getで必要なソフトウェアをインストールします。

sudo apt-get install make clang bison flex xz-utils libfuse-dev libxml2-dev libicu-dev libssl-dev libbz2-dev zlib1g-dev libudev-dev linux-headers-generic

次にDarlingをビルドします。git cloneやビルドにかなり時間がかかりますのでご注意ください(ディスクサイズも1.5GB程必要です)。

git clone --recurse-submodules https://github.com/darlinghq/darling.git
cd darling
mkdir -p build/x86-64
cd build/x86-64
cmake ../.. -DCMAKE_TOOLCHAIN_FILE=../../Toolchain-x86_64.cmake
make
sudo make install

# src/lkmに移動してkernel moduleをインストール
cd ../../src/lkm
make
sudo make install

なおカーネルモジュールのインストールに失敗する場合があるようです。モジュールの署名に関連した問題らしく、例えば以下のようにすればインストールできます。

insmod /home/sora/evaluate/darling/src/lkm/darling-mach.ko

Darlingの実行

Darlingの実行方法に関してはIntroductionページで解説されています。

Darlingではchrootによって作られた仮想的なrootが使われます(/homeは共有されます)。Bashやcoreutilsのような基本的なバイナリは含まれていてすぐに実行することが可能です。

$ darling shell
Darling [~]$ 

darlingでmacOSのBashを利用して"Hello World"を表示するには以下のように実行します。

$ darling shell echo "Hello world"

Rudixで提供されているmacOS用のバイナリをインストールする場合以下のコマンドでインストールできます。

$ darling shell
Darling [~]$ installer -pkg mc-4.8.7-0.pkg -target /

ファイルマネージャmcを実行してみましょう。

S 20161105 120004

UbuntuでmacOS用mcが実行できました。

今後に注目のプロジェクト

Darlingを使用すれば、Linux環境でmacOS用バイナリを直接実行することが可能です。現段階ではmacOSの最大の利点であるGUIアプリを実行することはできませんが、今後に注目のソフトウェアであることは間違いありません。

スポンサーリンク