Linux環境でmacOSの実行ファイルを直接実行するための変換レイヤー「Darling」。Windows用バイナリをLinuxで直接実行する「Wine」のmacOS版と考えると分かりやすいかもしれません。GPL 3.0が採用されたソースコードがGitHubで配布されています。
現段階ではGUIを使用したmacOSアプリには対応しておらず、AppleのツールチェインやMidnight CommanderといったRudix.orgから取得できる各種ターミナルベースのアプリケーションが実行可能とされています。
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を実行してみましょう。
UbuntuでmacOS用mcが実行できました。
今後に注目のプロジェクト
Darlingを使用すれば、Linux環境でmacOS用バイナリを直接実行することが可能です。現段階ではmacOSの最大の利点であるGUIアプリを実行することはできませんが、今後に注目のソフトウェアであることは間違いありません。