Google の新しい OS「Fuchsia」を macOS 上で動かしてみる

Posted on

この記事は WACUL Advent Calendar 2017 の19日目の記事です。

18日目の記事は @bokuweb さんの 「ファミコンエミュレータの創り方 - Hello, World!編 -」 でした。

Fuchsia は、Andorid, Chrome OS に続く第三の Google が開発する OS です。Linux カーネルをベースに開発された Andorid や Chrome OS とは異なり、独自カーネル Zircon をカーネルとして利用しています。その他のレイヤーも Garnet, Peridot, Topaz というように名前がつけられているようです

今回は macOS 上でこの Fuchsia を動かしてみました。

Fuchsia のビルド

公式ドキュメントに従ってインストールします。

まずは Homebrew で必要なものをインストールしておきます。

$ brew install wget pkg-config glib autoconf automake libtool golang

次に Fuchsia のソースコードをチェックアウトします。以下のコマンドを実行すると、Fuchsia が利用している jiri というレポジトリ管理ツールとともにソースコードがチェックアウトされます。

$ curl -s "https://fuchsia.googlesource.com/scripts/+/master/bootstrap?format=TEXT" | base64 --decode | bash -s topaz

jiri と Fuchsia の開発用コマンドである fx に適当にPATHを通しておきます。

$ cd topaz
$ ln -s `pwd`/.jiri_root/bin/jiri ~/bin
$ ln -s `pwd`/scripts/fx ~/bin

それでは Fuchsia をビルドしましょう。かなり時間がかかるので気長に待ちます。

$ fx set x86-64
$ fx full-build

Fuchsia の起動

macOS 上では QEMU を使って動かします。以下のコマンドを実行すると shell が起動します。

$ fx run

cdls など基本的な Unix コマンドは使えます。試しに簡単なコードを書いて実行してみましょう。Fuchsia ではシステム UI の Armadillo が Flutter で書かれており、Dart の実行環境がデフォルトで用意されています。 またエディタは vim が使えます。version は 8.0 でした。

$ cd /tmp
$ vim hello_world.dart
// hello_world.dart
void main() {
  print('Hello, World!');
}
$ dart hello_world.dart
Hello, World!

GUI アプリケーションについて

先述した通り Fuchsia ではシステム UI が Flutter で書かれており、アプリケーションを Flutter で作ることができます。しかし最新の Fuchsia では GUI を利用するのに Vulkan が必須なので、対応していない macOS 上では GUI アプリケーションを動作させることができません。

Vulkan に対応している端末上で動作させる場合は、以下のコマンドを実行することで GUI で起動することができます。

$ fx run -g

まとめ

Google が開発中の OS Fuchsia について紹介しました。昨年の Advent Calendar では Flutter について書いたので、今年は Flutter で作った GUI アプリケーションを Fuchsia 上で動かすという事をしようかと思っていたのですが、いつの間にか Vulkan が必須になっており macOS 上では不可能でした。残念… そのうち Intel NUC でも買ってやりたい。

明日の担当は昨日に引き続き @bokuweb さんです。楽しみですね。