gVisorというLinux向けサンドボックスがオープンソース化されました。gVisorの構成は、ぬるぽへさんが作成していたNoahとかなりよく似ています。そこで、ぬるぽへさんからNoahの経験をもとにgVisorの話を伺いました。
出演者: ぬるぽへ (@nullpo_head)、Rui Ueyama (@rui314)
https://turingcomplete.fm/22
ハッシュタグは#tcfmです。
TCFMはサポーターの投げ銭によって収益を上げています。このコンテンツに課金してもいいよという方はぜひクリエイター支援サイトPatreonから登録してご協力ください。
- イントロ (0:00)
- NoahはLinux互換環境を提供する薄いVM環境 (1:38)
- NoahでもgVisorでもないサンドボックス環境の例 (2:40)
- Noahをサンドボックスにするアイデアはあった (4:51)
- gVisorはGoogleのクラウドで数年間使われている実績のあるもの (5:37)
- gVisorがlldでリンクできなかった問題 (6:36)
- -mcmodel={medium,large} (7:05)
- gVisorがうっかりlibcをリンクしていた (9:24)
- gVisorはNoahに似ている (11:53)
- gVisorは複数プロセスを持つことができる (12:55)
- gVisorはLinuxカーネルをGoで実装したもの (15:16)
- gVisorはTCP/IPプロトコルスタックを自前で実装 (19:54)
- TCP/IPはなぜカーネルに実装されているのか (26:52)
- Go Genericsパッケージ (28:28)
- C11の型でディスパッチするマクロ (30:02)
- C言語の正しいgoto文の使い方 (32:12)
- C言語にテンプレートを入れてほしい (34:15)
- コンテナはサンドボックスなのか (37:34)
- 起動の速いVMの研究 (40:32)
- プロセスイメージのダンプ・アンダンプをgVisor/Noahでできないか (41:54)
- ダンプ・アンダンプはLispの伝統的テクニック (45:45)
- gVisorはptraceも実装 (51:51)
- VDSO (53:58)
- ソフトウェアでVMを実装するほうがハードウェアより速いことがよくある (56:56)
- Intel EPT (nested pages)は性能上のメリットがある (1:00:42)
- Shadow page table (1:02:55)
- スタンフォードのコンピュータサイエンスの古典の論文を読む授業 (1:07:10)
- IBM System/360とパーソナルコンピュータ (1:09:43)
- NFS v1の論文 (1:13:23)
- 因果律を満たす限り非同期に書き込む同期ファイルシステムの研究 (1:14:57)
- 投機的ファイル読み込みとプロセス状態のロールバックを行うカーネルの研究 (1:21:21)
- Ken Thompsonがコンパイラに埋め込んだハック (1:26:09)
- ビルド環境では再現可能性が重要 (1:32:54)
- エンディング (1:35:54)