2013-11-13
■[OS][mruby]mruby専用クラウドOS「μOSv」を作りました
μOSvというものをgithubで公開したので、ここに簡単な説明を書いておきます。
これは何?(OSvを知らない人向けの説明)
ローカルマシン上のKVM・Xenや一部のIaaSサービス・VPSなどで走る、mrubyスクリプトを実行する事のみに特化されたOSです。
mrubyインタプリタの実行に汎用OSを必要としないため、とても少ないメモリ使用量(今のところ90MB以上なら動く)・ディスクイメージサイズ(今のところ26MB)・とても速い起動時間(今のところ2秒くらい)で動作します。
mrubyなのでRubyで使えるAPIが全て使えるわけではありませんが、ネットワークアクセスを行う小さなアプリケーションであればLinux上で動作するRubyスクリプトを作るのに近いイメージで気軽にスクリプトを書くことが出来ます。
OSvというJavaアプリケーション専用のオープンソースなOSを改造して実装しています。
OSvを知っている人向けの説明
OSvのビルド設定を弄ってOpenJDKやJavaアプリケーションを取り外し、ZFSを無効化し、代わりにmrubyを実行するようにしたものです。
実際にはOSvのforkではなく、OSvのビルドステージを改造するシェルスクリプトを配布しているものです(厳密には、"module support" patchが未マージなために本家のosvリポジトリを使用していませんが、マージされればこれは解消できます)。
オリジナルのOSvで使われているCRaSHシェルはJava実装であるため、これは削除して代わりにmrubyで書いた小さなシェルを実装しました(今のところlsとmrubyプログラム実行くらいしか出来ませんが)。
残念ながらssh/sftpには対応していませんが、代わりにユーザが書いたmrubyスクリプトをディスクイメージに書き込む仕組みと、シェルからmrubyプログラムを実行する機能を備えています。
ビルド方法、実行方法など
現状ではμOSvの大本となっているOSvやmruby、各種mrbgemsも含めて何もかもが開発途上バージョンなため、ビルド失敗や実行時エラーなどが普通に起こるので、githubのissuesやTwitterなどでガンガン報告して下さい。
Ubuntu 13.10+KVM以外の環境では全くテストされていないので、他の環境でも試して頂けると助かります(※ただし、KVM・Xen以外のVMMでは動きませんのでご了承下さい)。
μOSvのmrubyで使えるAPIは?
build_config.rbでconf.gemされているものだけが動作します。
このmrbgemsも入れてくれ、という要望はgithubのissuesに書くか、黙ってポーティングしてpull requestして下さい。
ライセンス?
ごった煮なので流用しているコードによって複数の種類のライセンスが適用されていますが、いわゆるオープンソースです。
(GPLは混じっているかもしれません、そのうち整理しようと思います)
基本的にmruby関係はほぼMIT、OSv関係はほぼBSDLです。
product | dependencies | license |
---|---|---|
OSv | FreeBSD, ZFS, Prex, Musl | BSDL |
FreeBSD | - | BSDL |
ZFS(disabled) | - | CDDL |
Prex | - | MIT |
Musl | - | MIT, BSDL |
mruby | - | MIT |
mruby-dir | - | MIT |
mruby-env | - | MIT |
mruby-errno | - | MIT |
mruby-ipaddr | - | MIT |
mruby-mock | - | MIT |
mruby-mtest | - | MIT |
mruby-pack | - | MIT |
mruby-process | - | MIT |
mruby-regexp-pcre | - | MIT |
mruby-require | - | MIT |
mruby-simple-random | - | MIT |
mruby-socket | - | MIT |
mruby-tempfile | - | MIT |
mruby-msgpack | - | MIT |
mruby-uv | libuv | MIT |
libuv | - | MIT |
mruby-http | mruby-uv | MIT |
mruby-json | - | MIT |
mruby-msgpack-rpc | mruby-socket,mruby-msgpack | MIT |
mruby-yaml | libyaml | MIT |
libyaml | - | MIT |
mruby-base64 | - | MIT |
mruby-md5 | - | MIT |
mruby-vedis | - | Sleepycat License |
mruby-sleep | - | MIT |
mruby-simplehttp | - | MIT |
mruby-httprequest | - | MIT |
mruby-aws-s3 | mruby-uv, mruby-http, mruby-digest, mruby-pack, mruby-simplehttp, mruby-httprequest | MIT |
mruby-cfunc | libffi | MIT |
libffi | mruby-cfunc | MIT |
μOSv build scripts | - | MIT |
mruby-eshell | mruby-io,mruby-dir,mruby-ipaddr | MIT |
これらのコピーレフトなモジュールはデフォルトで無効にされています。
product | dependencies | license |
---|---|---|
mruby-polarssl | PolarSSL | LGPLv3 |
PolarSSL | - | GPL/Commercial(Dual) |
mruby-sha1 | - | GPL |
現状の問題点
- Twitter / @mapoyon
- Twitter / @syuu1228
- Twitter / @fadis_
- Twitter / @syuu1228
- Twitter / @ntddk
- Twitter / @uwabami
- Twitter / @ytsuboi
- Twitter / @hassyX
- Twitter / @yukkuri_sinai
- Twitter / @sunatya
- Twitter / @_pochio_
- Twitter / @tethys_seesaa
- Twitter / @nuna
- Twitter / @yuzurinco155
- Twitter / @takano32
- Twitter / @asca2
- Twitter / @on_sen
- Twitter / @murajun1978
- Twitter / @cocoatomo
- Twitter / @nanbuwks
- Twitter / @murase_syuka
- Twitter / @syuu1228
- Twitter / @I_HaL
- Twitter / @reuru
- Twitter / @ItSANgo
- ノンセクションの1 - 2013年11月23日のツイート
- 1742 http://www.google.co.uk/url?sa=t&source=web&cd=1
- 625 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=2&cad=rja&ved=0CDEQFjAB&url=http://d.hatena.ne.jp/syuu1228/20111119/1321666561&ei=3EaDUo2tGIb4kAW4xYGIBw&usg=AFQjCNG3pMTs8963ltofCFUD1MLcqTTiyQ&bvm=bv.56343320,d.dGI
- 585 https://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0CEgQFjAD&url=http://d.hatena.ne.jp/syuu1228/20130103/1357165915&ei=n0WDUvaVNMvkkgXSh4GQDQ&usg=AFQjCNGVkN5OVIUyxdSFn4foceiQuNL3YA&sig2=izqjtvoOiwWyTlx-F12L_Q
- 584 https://www.google.co.jp/
- 326 http://t.co/Xk9FDEzho4
- 279 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=13&ved=0CDkQFjACOAo&url=http://d.hatena.ne.jp/syuu1228/20130822/1377201012&ei=9x2DUsG8F42flQX_k4DIAQ&usg=AFQjCNFfaVkgvyx-uOtVqTcbYI1twAnJGA&sig2=uNL5Wnn0xrDizdDECJ-t_g&bvm=bv.56343
- 275 http://b.hatena.ne.jp/
- 235 http://ariel.s8.xrea.com/
- 208 http://t.co/Q4Uj5TGnER
- 185 http://t.co/1rPuY0GQHx