みつきんのメモ

組み込みエンジニアです。Interface誌で「My オリジナルLinuxの作り方」連載中

DarlingをUbuntu 18.04で試す

はじめに

ちょっと前にツイッターLinux上で動くmacOSエミュレータDarlingというやつの情報が流れてきた。

wineのmacOS版みたいな感じのようだ。興味が湧いたので自分でも試してみる。

環境はUbuntu 18.04。

依存パッケージのインストール

sudo apt install cmake clang bison flex libfuse-dev libudev-dev pkg-config libc6-dev-i386 \
linux-headers-generic gcc-multilib libcairo2-dev libgl1-mesa-dev libglu1-mesa-dev libtiff5-dev \
libfreetype6-dev git libelf-dev libxml2-dev libegl1-mesa-dev libfontconfig1-dev libbsd-dev \
libxrandr-dev libxcursor-dev libgif-dev libavutil-dev libpulse-dev libavformat-dev libavcodec-dev \
libavresample-dev libdbus-1-dev libxkbfile-dev libssl-dev libfuse-dev libbsd-dev

/usr/include/asmのシンボリックリンク

これをしないとエラーになるため、リンクを作成する。

$ sudo ln -s /usr/include/asm-generic /usr/include/asm

環境の作成

ソースの取得

$ git clone --recursive https://github.com/darlinghq/darling.git

更新は下記

$ git pull
$ git submodule init
$ git submodule update

ビルドおよびインストール

# Move into the cloned sources
$ cd darling

# Make a build directory
$ mkdir build && cd build

# Configure the build
$ cmake ..

# Build and install Darling
$ make -j $(nproc)
$ sudo make install

カーネルモジュールのビルド及びインストール

Darling also requires a kernel module named darling-mach

とのことで、これもビルドする必要がある。

まず、依存するパッケージをインストールする。

$ sudo apt install linux-headers-`uname -r`

次にビルド及びインストール。

$ make lkm
$ sudo make lkm_install

lkmはlinux kernel moduleの略か。

実行

shell

shellを実行してみる。

$ darling shell

コンパイラの設定

Darling [~]$ xcode-select --install

hello world

プログラムの作成とビルド

Darling [~]$ cat > hello-world.c
#include <stdio.h>

int main() {
    puts("Hello World!");
}
Darling [~]$ clang hello-world.c -o hello-world

実行

Darling [~]$ ./hello-world
Hello world!

問題なく事項できる。

まとめ

環境の導入自体はそこまで難しくない。

macOS自体は詳しくないが、おそらくちゃんとmacOS向けのバイナリが動いているしコンパイラをいれてコンパイルもできた。

macOS向けのテスト環境がない場合、ちょっとしたことならこれで試せるのかも。

参考