Rump Kernelをつかってみる
RumpはNetBSD Runnable Userspace Meta Programの略である[ 1 ]. BSDCan 2009の論文を読むとRumpはNetBSDのカーネルをユーザランドにもってきて, 例えばネットワークをカーネルスタックをバイパスしてユーザランドにもってきた スタックで処理してスループットを上げたりするもの,と解釈していた. しかし,調べるとどうやら,単にユーザランドで使えるLibraryOSとしてだけではなく, Type1ハイパーバイザ上で直接動作するコンテナとしても使えるLibraryOSのようだ. Xen PVやVirtioのドライバが実装されているらしい. そこで,Rump Kernelを使ってみたメモ. experimentalなものらしいが,rumprunというのを使ってみる. これをつかうと簡単にRump Kernelを含むイメージファイルの作成・起動ができるらしい. 準備 $ git clone http://github.com/rumpkernel/rumprun $ cd rumprun $ git submodule update --init $ ./build-rr.sh hw これでrump kernelのツール一式とライブラリがビルドされる. build-rr.shにhw以外を渡してクロスビルドもできるっぽい. ここでは,x86_64なLinuxの上で作業したと仮定します. 次に環境設定. $ export PATH="${PATH}/$(pwd)/rumprun/bin" $ export RUMPRUN_TOOLCHAIN_TUPLE=x86_64-rumprun-netbsd これで,x86_64-rumprun-netbsd-gccなどRump kernelをlinkしてビルドしてくれるツールチェインへのPATHが通る. では次はアプリケーションをビルドしてみよう. アプリケーションビルド $ git clone http://github.com/rumpkernel/rumprun-packages $ cd mysql $ make bin/mysqldとしてビルドしたアプリケーションが置かれる. ただ