外部記憶装置

外付け記憶装置

Mewz on libkrun - その5 Mewz on libkrun してみた

Mewz (WebAssembly x Unikernel) を libkrun で動かしてみた - 外部記憶装置 の詳細を記すシリーズ

目次

ビルド

Mewz on libkrun 用のイメージを用いてビルドする。

$ git clone --recursive http://github.com/naoki9911/mewz-on-libkrun
$ cd mewz-on-libkrun
$ docker run --rm -v $(pwd):/work ghcr.io/naoki9911/mewz-on-libkrun:main /work/build.sh

Mewz on libkrun してみた

ホスト側で chroot_vm を実行する。

$ cd likbrun/examples
$ sudo LD_LIBRARY_PATH=../lib ./chroot_vm --net=passt dummy dummy
Don't run as root. Changing to nobody...
No routable interface for IPv6: IPv6 is disabled
Template interface: eth0 (IPv4)
MAC:
    host: 00:15:5d:f5:94:7a
DHCP:
    assign: 192.168.10.2
    mask: 255.255.255.0
    router: 192.168.10.1
DNS:
    10.255.255.254
DNS search list:
    tailbffcc.ts.net
[LOG INFO]: booted with linux zero page
[LOG INFO]: zeropage: e820_entries=2
[LOG INFO]: E820 Entry [1] addr=0x0 size=0x9fc00 type=1
[LOG INFO]: E820 Entry [2] addr=0x100000 size=0x20310001 type=1
[LOG INFO]: available memory: 14748000 - 20410001
[LOG INFO]: virtio_mmio device detected: addr=0xd0000000 size=0x1000 IRQ=5
[LOG INFO]: virtio_mmio device detected: addr=0xd0001000 size=0x1000 IRQ=6
[LOG INFO]: virtio_mmio device detected: addr=0xd0002000 size=0x1000 IRQ=7
[LOG INFO]: virtio_mmio device detected: addr=0xd0003000 size=0x1000 IRQ=8
[LOG INFO]: virtio_mmio device detected: addr=0xd0004000 size=0x1000 IRQ=9
[LOG INFO]: virtio.net: found mmio device
[LOG INFO]: mac: 5a:94:ef:e4:c:ee
[LOG INFO]: virtio.net: initialized mmio device

Listening on http://0.0.0.0:1234

別ターミナルで curl を実行する。

$ curl localhost:1234
Hello World!

完璧である(勝利)。

ここまでのまとめ

ここまでで Mewz を libkrun で動かし、Mewz 上で稼働する Web サーバーと通信することができた。 libkrun 自体は crun 等との連携も可能であり、libkrun を用いることで Mewz と、各種コンテナエンジンや Kubernetes との連携がさらに容易になると考えられる。

libkrun は virtio-fs を用いたホスト上のディレクトリのマウントや TSI (Transparent Socket Impersonation) というゲスト側で TCP/IP スタックを必要としない仕組みを持つ。

rheb.hatenablog.com

TSI については既に Mewz に組み込み動作させることには成功しているため、次回以降その詳細についてまとめる予定である。