この記事は 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 が起動します。
cd
や ls
など基本的な 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 で起動することができます。
まとめ
Google が開発中の OS Fuchsia について紹介しました。昨年の Advent Calendar では Flutter について書いたので、今年は Flutter で作った GUI アプリケーションを Fuchsia 上で動かすという事をしようかと思っていたのですが、いつの間にか Vulkan が必須になっており macOS 上では不可能でした。残念… そのうち Intel NUC でも買ってやりたい。
明日の担当は昨日に引き続き @bokuweb さんです。楽しみですね。