これもATC15かな。
ここで言うファイルシステムというのはファイルシステム自体の話ではなくて、もいっこ上の、ファイルツリーの話。いわゆる/
ですね。組み込みLinuxの/
だとbusyboxを使ったりするけど、ここではそこをGolangで書いてみた、という話。
Golangでそれを書いたからってどうなるわけでもあるまい、と思うでしょ?
それをいい意味で裏切ってくれる内容だった。
このroot fs、バイナリとしてはinitとgoのコンパイラしか含んでいない。あとはソースの形で持っている。コマンドを実行したときに、未コンパイルであればその場でコンパイルされ、実行される。バイナリはキャッシュされる。以前はPerl LinuxてのがあってPerlの処理系とスクリプトで動かすやつがあったらしい。あともちろん主流の、普通のBusyboxベースのやつもある。前者は効率は悪いが柔軟性があって、後者は柔軟性はないが効率が良い。U-rootはその中間を狙った。Golangは動作も高速だしコンパイルも速いからね。マルチプラットフォームへの対応も割と楽。Busyboxは割とLinuxべったりな作りだけど、GolangであればLinuxからの脱出も楽だろう。