LoginSignup
2
2

More than 5 years have passed since last update.

Trema v0.6.0 & Open vSwitch 2.4.0 のRPi2(Raspbian)でのセットアップメモ

Last updated at Posted at 2015-07-25

※ 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! :smile:)

$ 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
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2