Google Compute EngineでReseaを動かす

Seiya Nuta  •  Oct 8, 2020

Google Compute Engine上で動くResea

先日virtioデバイスドライバを書いたので,Google Compute Engineで使ってみることにした。 上のスクリーンショットを見ると,きちんとDHCPからIPアドレスを取得できていることがわかる。 Web APIサーバもきちんと動いた。

独自OS on GCE

GCEのドキュメントには Building custom operating systems というGoogle側で用意していないOSを動かしたい人向けの情報が載っている。GCEでは以下の実行環境を提供している:

Reseaは修正の必要なくf1-microインスタンスで一発で動いてくれたので,エミュレータで動くならGCEでもすんなり動くものなんだろう。 ただし,ネットワーク周りにはいくつか落とし穴がある:

デプロイの流れ

GCEはISOファイルからの起動はサポートしていないので少し手間がかかる:

  1. 生(raw)のハードディスクイメージを作る。
  2. ハードディスクイメージをGoogle Cloud Storageへアップロード
  3. イメージを登録(gcloud compute images create
  4. ディスクを作成(gcloud beta compute disks create
  5. VMを作成(gcloud beta compute instances create

デバッグ

シリアルポートの出力を gcloud compute instances get-serial-port-output から見ることができるので便利。 後は勘で頑張る。

余談

GCEはKVMらしいので,QEMUで動くならGCEでも動いて当たり前だろうと思っていたらKVMは使っているがQEMUは使っていないらしい。セキュリティのために自分たちでハードウェアエミュレーション部分を作り直すというはかっこいいですね。