開発用のヘッダー類はすでに入っているものと仮定します。
- CentOS 6.3
- Open vSwitch 1.7.3
openssl-devel を入れないとビルドするときにエラーになります。
yum -y install openssl-devel
rpm構築ベースディレクトリは ~/rpm/ とします。
ソースのダウンロード
cd ~ wget http://openvswitch.org/releases/openvswitch-1.7.3.tar.gz tar xvzf openvswitch-1.7.3.tar.gz cd openvswitch-1.7.3
CentOS6.3用にパッチを当てる
そのままカーネルモジュールをビルドしようとすると以下の様なエラーが発生して失敗してしまいます。
In file included from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/netlink.h:4,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/net/genetlink.h:5,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/genetlink.inc:3,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/datapath/linux/genetlink-brcompat.c:10:
/home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/skbuff.h:242: error: redefinition of 'skb_frag_page'
include/linux/skbuff.h:1612: note: previous definition of 'skb_frag_page' was here
In file included from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/datapath/linux/actions.c:21:
/home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/skbuff.h:242: error: redefinition of 'skb_frag_page'
include/linux/skbuff.h:1612: note: previous definition of 'skb_frag_page' was here
In file included from include/linux/if_ether.h:126,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/if_ether.h:4,
from include/linux/etherdevice.h:27,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/etherdevice.h:5,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/datapath/linux/brcompat_main.c:25:
/home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/skbuff.h:242: error: redefinition of 'skb_frag_page'
include/linux/skbuff.h:1612: note: previous definition of 'skb_frag_page' was here
In file included from include/linux/ip.h:108,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/ip.h:4,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/datapath/linux/checksum.c:22:
/home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/skbuff.h:242: error: redefinition of 'skb_frag_page'
include/linux/skbuff.h:1612: note: previous definition of 'skb_frag_page' was here
In file included from include/linux/if_ether.h:126,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/if_ether.h:4,
from include/linux/netdevice.h:29,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/netdevice.h:4,
from include/linux/if_arp.h:26,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/if_arp.h:4,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/datapath/linux/datapath.c:23:
/home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/skbuff.h:242: error: redefinition of 'skb_frag_page'
include/linux/skbuff.h:1612: note: previous definition of 'skb_frag_page' was here
make[2]: *** [/home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/datapath/linux/genetlink-brcompat.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from include/linux/if_ether.h:126,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/if_ether.h:4,
from include/linux/netdevice.h:29,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/netdevice.h:4,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/datapath/linux/dp_notify.c:19:
/home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/skbuff.h:242: error: redefinition of 'skb_frag_page'
include/linux/skbuff.h:1612: note: previous definition of 'skb_frag_page' was here
In file included from include/linux/if_ether.h:126,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/if_ether.h:4,
from include/linux/netdevice.h:29,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/netdevice.h:4,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/datapath/linux/dp_sysfs_dp.c:32:
/home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/skbuff.h:242: error: redefinition of 'skb_frag_page'
include/linux/skbuff.h:1612: note: previous definition of 'skb_frag_page' was here
In file included from include/linux/if_ether.h:126,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/if_ether.h:4,
from include/linux/netdevice.h:29,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/netdevice.h:4,
from /home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/datapath/linux/dp_sysfs_if.c:23:
/home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/../datapath/linux/compat/include/linux/skbuff.h:242: error: redefinition of 'skb_frag_page'
include/linux/skbuff.h:1612: note: previous definition of 'skb_frag_page' was here
make[2]: *** [/home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/datapath/linux/brcompat_main.o] Error 1
make[2]: *** [/home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/datapath/linux/actions.o] Error 1
make[2]: *** [/home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/datapath/linux/dp_notify.o] Error 1
make[2]: *** [/home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/datapath/linux/checksum.o] Error 1
make[2]: *** [/home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/datapath/linux/datapath.o] Error 1
make[2]: *** [/home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/datapath/linux/dp_sysfs_dp.o] Error 1
make[2]: *** [/home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/datapath/linux/dp_sysfs_if.o] Error 1
make[1]: *** [_module_/home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/datapath/linux] Error 2
make[1]: Leaving directory `/usr/src/kernels/2.6.32-279.22.1.el6.x86_64'
make: *** [default] Error 2
make: Leaving directory `/home/wnoguchi/rpm/BUILD/openvswitch-1.7.3/_default/datapath/linux'
エラー: /var/tmp/rpm-tmp.he0OEq の不正な終了ステータス (%build)
RPM ビルドエラー:
マクロ %2 は不正な名前です (%define)
マクロ %2 は不正な名前です (%define)
マクロ %2 は不正な名前です (%define)
/var/tmp/rpm-tmp.he0OEq の不正な終了ステータス (%build)
パッチをダウンロードして当てます。
$ wget -O ovs.patch 'http://openvswitch.org/cgi-bin/gitweb.cgi?p=openvswitch;a=patch;h=6c4ea27c48b30eaec8e37e642d5072f53c5b2670' $ patch -p1 < ovs.patch patching file acinclude.m4 patching file datapath/linux/compat/include/linux/skbuff.h $ ./boot.sh $ ./configure $ make dist
パッチを当てたソースがtar.gzでできていることを確認
$ ls | grep tar.gz openvswitch-1.7.3.tar.gz
rpmビルド用のソースディレクトリにtar ballをもっていきます。
cp openvswitch-1.7.3.tar.gz ~/rpm/SOURCES/
rpmのビルド
# Open vSwitchのビルド rpmbuild -bb rhel/openvswitch.spec # カーネルモジュールのビルド rpmbuild -bb rhel/openvswitch-kmod-rhel6.spec
できたrpmを確認します。
$ pwd /home/wnoguchi/rpm/RPMS/x86_64 $ ls kmod-openvswitch-1.7.3-1.el6.x86_64.rpm openvswitch-debuginfo-1.7.3-1.x86_64.rpm openvswitch-1.7.3-1.x86_64.rpm
インストール
# cd /home/wnoguchi/rpm/RPMS/x86_64/ # rpm -ivh openvswitch-1.7.3-1.x86_64.rpm \ > openvswitch-debuginfo-1.7.3-1.x86_64.rpm \ > kmod-openvswitch-1.7.3-1.el6.x86_64.rpm 準備中... ########################################### [100%] 1:kmod-openvswitch ########################################### [ 33%] WARNING: /lib/modules/2.6.32-279.el6.x86_64/weak-updates/openvswitch/brcompat.ko needs unknown symbol ovs_dp_ioctl_hook 2:openvswitch ########################################### [ 67%] 3:openvswitch-debuginfo ########################################### [100%] needs unknown symbol ovs_dp_ioctl_hook
妙なエラーメッセージが表示されます。
# chkconfig --list openvswitch
openvswitch 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# service openvswitch status
ovsdb-server is not running
ovs-vswitchd is not running
# service openvswitch start
Inserting openvswitch module FATAL: Module openvswitch not found.
[FAILED]
iptables already has a rule for gre, not explicitly enabling.
なぜか失敗しました。
資料をあさっていると、どうもbridgeモジュールがロードされているのがいけないらしいです。
lsmod | grep bridge
bridgeモジュール検索してみたけどヒットしないんですよね・・・。
必殺再起動したらちゃんとロードされてました・・・。
# service openvswitch status
ovsdb-server is running with pid 2172
ovs-vswitchd is running with pid 2181
# which ovs-vsctl
/usr/bin/ovs-vsctl
# ovs-vsctl show
09308413-d439-47c1-b18c-864d848714e6
ovs_version: "1.7.3"
# service openvswitch restart
ovs-brcompatd is not running.
Killing ovs-vswitchd (2181) [ OK ]
Killing ovsdb-server (2172) [ OK ]
Starting ovsdb-server [ OK ]
Configuring Open vSwitch system IDs [ OK ]
Starting ovs-vswitchd [ OK ]
iptables already has a rule for gre, not explicitly enabling.
参考
- CentOS 6.3 に Open vSwitch 1.7.3 をインストールする | CUBE SUGAR STORAGE
- [one-users] openvswitch and brcompat in the post3.3 world
- きりんさん日記: KVMとOpen vSwitchをシンプルに使う(CentOS6.2)
- CentOS 6.3 で Open vSwitch がビルドできない時の解決方法 | CUBE SUGAR STORAGE
- Open vSwitch
投稿者紹介
-
私たちは、テクノロジに魅せられた個性あふれるメンバーによって構成された茨城県日立市に本社を構えるベンチャー企業です。
”テクノロジを通して「驚き」と「感動」を創造し、人々の「夢」と「笑顔」を支えます。” の経営理念をモットーに明るい未来を描き、ワクワクする企画提案を続けて参ります。
最近のエントリ
レポート2019.10.28ユニキャストレストランを開催しました🍳
レポート2019.08.29社内研修ワークショップ~マシュマロ・チャレンジ~
レポート2019.08.06Computex/InnoVEX 出展者・通訳として参加してきました。
レポート2018.06.12Computex 2018 レポート