SlideShare a Scribd company logo
1 of 12
Download to read offline
rumpを使ってみる
Dec 1, 2015
Masaru OKI @masaru0714
はじめに
NetBSD上でrumpを使ってみた報告になります。
さわりはじめて1日たったくらいの理解度ですので、ボケてる可能性も大いにあります。
NetBSD 6.1.5で試しています。他バージョンや他OSだと違う結果になるかも。
rump?
http://rumpkernel.org/
本来カーネル用に書かれたネットワークスタックやデバイスドライバを
ユーザプログラムで動かすためのフレームワーク? ライブラリ? rumpkernelと、
それを中心にした各種コンポーネントの総称。。
anykernel(元となるカーネルコンポーネント;現在はNetBSD kernel)から
ユーザプログラム用としてビルドしたライブラリ(rumpkernel)を作り、
アプリケーションをrump用バイナリ(unikernelというらしい)としてビルドする。
Linux(CentOS, Fedora, Debian, Ubuntu等), NetBSD, FeeeBSD, Solaris等で動作。
rumpの動かし方いくつか
server-client方式
● rumpkernelをリンクして作られたrump_serverを起動しておく
● rump.clientライブラリをリンクして各種プログラム(lsとかpingとか)をビルド。
● 各種プログラムを実行し、rump_serverのリソースを操作。
unikernel方式
● rumprunを用いて各種プログラムの単一バイナリをビルド。
● rumprun qemuで起動したQEMU上で実行。
● rumprun qemuの各種パラメータでIPアドレスなどを設定する。
こんなかんじ(server-client)
native OS kernel
rump_server rump_client native OS apps
NetBSDカーネルの
機能を提供する。
native OSで実行でき
るNetBSDのアプリ
kernel
userland
socket通信
環境を整える
● rump_serverのインストール(NetBSD)
sudo pkgin install rump
rump_server -lrumpvfsなどと指定し起動できる。全部入りはrump_allserver
Linux各種用に *.debや *.rpmも用意されている模様
● rump_client各種バイナリの作成(ここではrumpctrlを用いる)
git clone http://repo.rumpkernel.org/rumpctrl
cd rumpctrl
git submodule update --init
vi rumpctrl/buildrump.sh/buildrump.sh で先頭行の sh を bashに変更
./buildnb.sh
rump_serverの起動
全部入りrump_allserverの起動(下記例では2つ起動している)
rump_allserver unix:///tmp/rump1sock
rump_allserver unix:///tmp/rump2sock
バックグラウンド動作する。
個別指定はたとえば下記のようにする。
rump_server -lrumpnet -lrumpnet_net -lrumpnet_netinet -lrumpvfs -lrumpdev -
lrumpdev_bpf -lrumpnet_virtif unix:///tmp/rump1sock
ネットワークを使いたいときは(tapを読み書きするので)root権限で起動すること。
rumpctrlによるrump clientの実行
$ cd rumpctrl
$ . ./rumpctrl.sh
rumpctrl (NULL)$ export RUMP_SERVER=unix:///tmp/rump1sock
rumpctrl (unix:///tmp/rump1sock)$ ifconfig
lo0: flags=0x8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 33648
ifconfig: SIOCGIFAFLAG_IN: Inappropriate ioctl for device
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
rumpctrl (unix:///tmp/rump1sock)$
rump_serverをroot権限で起動した場合、クライアントもroot権限じゃないと通信不可。
rumpctrl TIPS
rump clientとして使えるコマンド一覧
rumpctrl_listcmds
rumpctrlモードのままホストのコマンドを実行
rumpctrl_hostcmd コマンド...
わざわざこれを使わなくてもフルパスでコマンドを叩けば普通に実行できる。
rumpctrlモードから通常状態への復帰
rumpctrl_unload
ホストとの通信の方法
1. ホストでtapインタフェースを作る。名前はtapN(Nは任意の数値)
2. rumpctrlでifconfig virtN createすると、tapN (Nが同じtap)とつながる
ホストマシン
rump_server rump_server
tap0 tap1
virt0 virt1
ifconfig tap0 create
ifconfig virt0 create
server起動した。ifconfigもできた。いざping!
rumpctrl (unix:///tmp/rump1sock)$ ifconfig virt0
virt0: flags=0x8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
address: b2:0a:8e:0b:0e:00
ifconfig: SIOCGIFAFLAG_IN: Inappropriate ioctl for device
inet 172.21.0.1 netmask 0xffffff00 broadcast 172.21.0.255
inet6 fe80::b00a:8eff:fe0b:e00%virt0 prefixlen 64 scopeid 0x2
rumpctrl (unix:///tmp/rump1sock)$ ping 172.21.0.2
ping: Undefined PLT symbol "rump___sysimpl_gettimeofday50" (symnum = 26)
rumpctrl (unix:///tmp/rump1sock)$
orz
現時点でのまとめ
現時点では、素人にはお勧めできない。
Undedefined PLT symboltと言われても動揺せず粛々と解決できる人向け。
現時点ではserver, clientともにNetBSDなのでLinuxしか知らない人にはつらい。
しかしNetBSDでコンテナ仮想化っぽいことをやろうとしたらrumpしかないので
がんばりましょう……
すんなり動かせている方がいましたら助言いただけますとうれしいです。
おしまい。

More Related Content

What's hot

Coffee script初めの一歩
Coffee script初めの一歩Coffee script初めの一歩
Coffee script初めの一歩
Misa Kondo
 
Postgre sql9.3新機能 (OSC hiroshima 2013)
Postgre sql9.3新機能 (OSC hiroshima 2013)Postgre sql9.3新機能 (OSC hiroshima 2013)
Postgre sql9.3新機能 (OSC hiroshima 2013)
Soudai Sone
 
Bossan dentoo
Bossan dentooBossan dentoo
Bossan dentoo
kubo39
 
R以外の研究ツール
R以外の研究ツールR以外の研究ツール
R以外の研究ツール
弘毅 露崎
 
俺のGentooがこんなに可愛いわけがない
俺のGentooがこんなに可愛いわけがない俺のGentooがこんなに可愛いわけがない
俺のGentooがこんなに可愛いわけがない
Takuto Matsuu
 

What's hot (20)

ちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxをちょっと古いマシンにLinuxを
ちょっと古いマシンにLinuxを
 
最近の身の回りの電力事情
最近の身の回りの電力事情最近の身の回りの電力事情
最近の身の回りの電力事情
 
Gentooサークル新歓コンパのご案内
Gentooサークル新歓コンパのご案内Gentooサークル新歓コンパのご案内
Gentooサークル新歓コンパのご案内
 
Open vzでdr hbstudy
Open vzでdr hbstudyOpen vzでdr hbstudy
Open vzでdr hbstudy
 
rpi_handson_2
rpi_handson_2rpi_handson_2
rpi_handson_2
 
Gentoo Linuxの紹介
Gentoo Linuxの紹介Gentoo Linuxの紹介
Gentoo Linuxの紹介
 
サバフェスLt
サバフェスLtサバフェスLt
サバフェスLt
 
Coffee script初めの一歩
Coffee script初めの一歩Coffee script初めの一歩
Coffee script初めの一歩
 
hpingで作るパケット
hpingで作るパケットhpingで作るパケット
hpingで作るパケット
 
Postgre sql9.3新機能 (OSC hiroshima 2013)
Postgre sql9.3新機能 (OSC hiroshima 2013)Postgre sql9.3新機能 (OSC hiroshima 2013)
Postgre sql9.3新機能 (OSC hiroshima 2013)
 
FirebaseとNuxtでLPを作って見た
FirebaseとNuxtでLPを作って見たFirebaseとNuxtでLPを作って見た
FirebaseとNuxtでLPを作って見た
 
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみるオープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
オープンソースカンファレンス大分参加報告 & 勉強会向けサーバを作ってみる
 
Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバーBtrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
Btrfs + Snapper + Samba で作る「以前のバージョン」に戻せるファイルサーバー
 
Colabをshellから使う
Colabをshellから使うColabをshellから使う
Colabをshellから使う
 
今週やった事
今週やった事今週やった事
今週やった事
 
OpenSolaris Printing Environment
OpenSolaris Printing EnvironmentOpenSolaris Printing Environment
OpenSolaris Printing Environment
 
Bossan dentoo
Bossan dentooBossan dentoo
Bossan dentoo
 
FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話
 
R以外の研究ツール
R以外の研究ツールR以外の研究ツール
R以外の研究ツール
 
俺のGentooがこんなに可愛いわけがない
俺のGentooがこんなに可愛いわけがない俺のGentooがこんなに可愛いわけがない
俺のGentooがこんなに可愛いわけがない
 

Similar to Rumpを使ってみる

Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
hiro345
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
maebashi
 

Similar to Rumpを使ってみる (20)

Tokyo.R#16 wdkz
Tokyo.R#16 wdkzTokyo.R#16 wdkz
Tokyo.R#16 wdkz
 
Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例Dockerの仕組みとIIJ社内での利用例
Dockerの仕組みとIIJ社内での利用例
 
Nseg20120825
Nseg20120825Nseg20120825
Nseg20120825
 
systemdでよく使うサブコマンド
systemdでよく使うサブコマンドsystemdでよく使うサブコマンド
systemdでよく使うサブコマンド
 
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
 
Summary of Ruby
Summary of RubySummary of Ruby
Summary of Ruby
 
Osc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 jOsc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 j
 
日本語ではじめるDrupal Console in Sapporo
日本語ではじめるDrupal Console in Sapporo日本語ではじめるDrupal Console in Sapporo
日本語ではじめるDrupal Console in Sapporo
 
2014.03.19 linux joshi_security_public
2014.03.19 linux joshi_security_public2014.03.19 linux joshi_security_public
2014.03.19 linux joshi_security_public
 
PXE で linux インストールな本 -1 スピンドルマシンも Linux 化-
PXE で linux インストールな本 -1 スピンドルマシンも Linux 化-PXE で linux インストールな本 -1 スピンドルマシンも Linux 化-
PXE で linux インストールな本 -1 スピンドルマシンも Linux 化-
 
openSUSE におけるパッケージ管理入門
openSUSE におけるパッケージ管理入門openSUSE におけるパッケージ管理入門
openSUSE におけるパッケージ管理入門
 
CentOSでつくる神Plesk
CentOSでつくる神PleskCentOSでつくる神Plesk
CentOSでつくる神Plesk
 
Debian emdebian 20100817
Debian emdebian 20100817Debian emdebian 20100817
Debian emdebian 20100817
 
痛い目にあってわかる HAクラスタのありがたさ
痛い目にあってわかる HAクラスタのありがたさ痛い目にあってわかる HAクラスタのありがたさ
痛い目にあってわかる HAクラスタのありがたさ
 
Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会Docker with RHEL7 技術勉強会
Docker with RHEL7 技術勉強会
 
NPStudy LT Lagopus Router v19.07
NPStudy LT Lagopus Router v19.07NPStudy LT Lagopus Router v19.07
NPStudy LT Lagopus Router v19.07
 
VMを改めて学んで見る
VMを改めて学んで見るVMを改めて学んで見る
VMを改めて学んで見る
 
openstack+cephインテグレーション
openstack+cephインテグレーションopenstack+cephインテグレーション
openstack+cephインテグレーション
 
Infinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every secondInfinite Debian - Platform for mass-producing system every second
Infinite Debian - Platform for mass-producing system every second
 
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
Fluentdでログを集めてGlusterFSに保存してMapReduceで集計
 

More from Masaru Oki

More from Masaru Oki (20)

NetBSD移植の昔話
NetBSD移植の昔話NetBSD移植の昔話
NetBSD移植の昔話
 
Rust-DPDK
Rust-DPDKRust-DPDK
Rust-DPDK
 
Rust-DPDK
Rust-DPDKRust-DPDK
Rust-DPDK
 
Lagopusとvagrant
LagopusとvagrantLagopusとvagrant
Lagopusとvagrant
 
OpenFlowでいろんなプロトコルを 話そうとするとどうなるか
OpenFlowでいろんなプロトコルを 話そうとするとどうなるかOpenFlowでいろんなプロトコルを 話そうとするとどうなるか
OpenFlowでいろんなプロトコルを 話そうとするとどうなるか
 
今よりも少し(?)昔、 Windowsを作ろうとした話
今よりも少し(?)昔、 Windowsを作ろうとした話今よりも少し(?)昔、 Windowsを作ろうとした話
今よりも少し(?)昔、 Windowsを作ろうとした話
 
Onieで遊んでみようとした話
Onieで遊んでみようとした話Onieで遊んでみようとした話
Onieで遊んでみようとした話
 
GPD WINが来た!
GPD WINが来た!GPD WINが来た!
GPD WINが来た!
 
新生Lagopus2017(仮称)
新生Lagopus2017(仮称)新生Lagopus2017(仮称)
新生Lagopus2017(仮称)
 
Lagopus as open flow hybrid switch 実践編
Lagopus as open flow hybrid switch 実践編Lagopus as open flow hybrid switch 実践編
Lagopus as open flow hybrid switch 実践編
 
LagopusでPPPoEを使えるか考えてみた件
LagopusでPPPoEを使えるか考えてみた件LagopusでPPPoEを使えるか考えてみた件
LagopusでPPPoEを使えるか考えてみた件
 
Lagopus どれだけ速いのか
Lagopus どれだけ速いのかLagopus どれだけ速いのか
Lagopus どれだけ速いのか
 
Lagopus 0.2.7
Lagopus 0.2.7Lagopus 0.2.7
Lagopus 0.2.7
 
Ryu+Lagopusで OpenFlowの動きを見てみよう
Ryu+Lagopusで OpenFlowの動きを見てみようRyu+Lagopusで OpenFlowの動きを見てみよう
Ryu+Lagopusで OpenFlowの動きを見てみよう
 
Lagopus match improvements
Lagopus match improvementsLagopus match improvements
Lagopus match improvements
 
Lagopus 0.2.4
Lagopus 0.2.4Lagopus 0.2.4
Lagopus 0.2.4
 
Open flow tunnel extension on lagopus vswitch
Open flow tunnel extension on lagopus vswitchOpen flow tunnel extension on lagopus vswitch
Open flow tunnel extension on lagopus vswitch
 
Lagopus as open flow hybrid switch
Lagopus as open flow hybrid switchLagopus as open flow hybrid switch
Lagopus as open flow hybrid switch
 
Net bsd advent calendar 2015 bpf
Net bsd advent calendar 2015 bpfNet bsd advent calendar 2015 bpf
Net bsd advent calendar 2015 bpf
 
Lagopus 0.2.2
Lagopus 0.2.2Lagopus 0.2.2
Lagopus 0.2.2
 

Rumpを使ってみる