※ 2015/09に修正
RPi2の条件
- ユーザ
$ whoami
pi
- 実行したアップデート
$ sudo apt-get -y update && sudo apt-get -y upgrade
$ sudo rpi-update
- 環境
$ cat /etc/debian_version
7.8
$ uname -a
Linux raspberrypi 4.1.6-v7+ #810 SMP PREEMPT Tue Aug 18 15:32:12 BST 2015 armv7l GNU/Linux
$ which ruby
/home/pi/.rbenv/shims/ruby
$ ruby -v
ruby 2.2.3p173 (2015-08-18 revision 51636) [armv7l-linux-eabihf]
$ gem -v
2.4.5.1
Tremaのセットアップ
$ gem install trema -V
- チェック
$ trema --version
trema version 0.6.0
$ gem which trema
/home/pi/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/trema-0.6.0/lib/trema.rb
Open vSwitchのセットアップ(ソースから)
- ダウンロード
$ wget http://openvswitch.org/releases/openvswitch-2.4.0.tar.gz
- 解凍
$ tar xzf openvswitch-2.4.0.tar.gz
- ビルド(解凍されたディレクトリのINSTALL.Debianを見ながら)
$ sudo apt-get -y install build-essential fakeroot
$ cd openvswitch-2.4.0 && dpkg-checkbuilddeps
$ sudo apt-get install [出力されたパッケージ]
$ # .deb ファイルを作る(testが有効だと時間がかかるのでやめた)
$ DEB_BUILD_OPTIONS='nocheck' fakeroot debian/rules binary
- インストール
$ dpkg -l | grep openvswitch # で出てきたものを消す
$ sudo apt-get purge openvswitch-switch
$ sudo apt-get purge openvswitch-common
$ # 以下1でdkmsをインストールしろと言われてしたが、
$ sudo apt-get install dkms
$ # このようにエラーが出る。
$ # Your kernel headers for kernel 4.1.6-v7+ cannot be found at
$ # /lib/modules/4.1.6-v7+/build or /lib/modules/4.1.6-v7+/source.
$ # [apt-cache search linux-headers-$(uname -r)] で見つからないのでこのまま進む
$ # 1
$ sudo dpkg -i openvswitch-datapath-dkms_2.4.0-1_all.deb
$ sudo dpkg -i openvswitch-common_2.4.0-1_armhf.deb
$ sudo dpkg -i openvswitch-switch_2.4.0-1_armhf.deb
- スタート
$ sudo service openvswitch-switch start
ovsdb-server is already running.
ovs-vswitchd is already running.
Enabling remote OVSDB managers.
Hello Trema
raspbianでIPv6を有効にする(デフォルトで無効になっている)。
-
まず、IPv6を有効に
- 今すぐ
$ sudo modprobe ipv6
- そしてこれからも(boot時にenable)
$ echo ipv6 | sudo tee -a /etc/modules
-
理由は、あらかじめIPv6が有効でないと下記でエラー(No such file ...)になるから。
sh "sudo /sbin/sysctl -w net.ipv6.conf.#{bridge_name}.disable_ipv6=1 -q"
Hello! (yay!
)
$ git clone https://github.com/trema/hello_trema.git
$ cd hello_trema
$ trema run lib/hello_trema.rb -c trema.conf
[sudo] password for pi:
Trema started.
Hello 0xabc!
$ bundle install --binstubs
$ bundle exec ./bin/trema run ./lib/hello_trema.
[sudo] password for pi:
Trema started.
Hello 0xabc!
エラーで途中終了した場合などの参考情報
phut
など、別モジュールでエラーが起きると、.pid
が残ったりするので、
- 余計なファイルを消す
$ rm -v /tmp/HelloTrema.*
removed `/tmp/HelloTrema.log'
removed `/tmp/HelloTrema.pid'
- スイッチを消す(
*.conf
に書いてあるdatapath_id
を参照)
$ sudo ovs-vsctl del-br br0xabc
- またログを見る(
.rb
に書いたコントローラ名を参照(class HelloTrema < Trema::Controller
))のも良い
$ less /tmp/HelloTrema.log