最近需要研究openvswitch的工作原理,所以着手搭建openvswitch的环境。
由于centOS 的稳定性,一直受到本人青睐。选择了最近新发布的CentOS-6.4_64的作为系统和LTS的openvswitch1.4.6,但事实证明这个选择极具挑战性,所以将探究过程记录于此。
网上大部分资料显示的是使用Fedora_17安装openvswitch,因为内部自带ovs的内核模块。最关键的是关于在CentOS-6.3/6.4的安装文章基本属于转载,经过本人多次尝试,发现根本行不通。
主要分为两派(当然的参照自带安装说明文档来安装了):
1.属于参考INSTALL安装的,在./configure --with-linux= /usr/local/`uname -r`/build (指定内核源码路径)以后,在 make编译过程中提示大量错误,INSTALL 文档并未说明如何修改,安装无法继续进行。
2.属于参考INSTALL.RHEL安装的(介于CentOS 和RHEL的关系), 发现居然default RPM source directory $HOME/rpmbuild/SOURCES 根本找不到,所以
rpmbuild -bb rhel/openvswitch.spec
不能成功执行,而且难以解决。
注:大量依赖相关软件版本很低,不符合要求,需要升级(yum和tarball方式都要用到)例如autoconf .当然前提是INSTALL 上写明的依赖软件包还是要事先装上的。
所以各种错误各种复杂。
本人的安装步骤:
1、依据INSTALL文档, 尽量使用yum安装所有能安装的依赖软件包。
2、 我直接使用 yum update ,升级了系统可以升级的所有软件包。(最好更换yum源到163的源)
3、手动tarball安装 autoconf version 》= 2.64
4、在openvswitch官网下载好openvswitch-1.4.6.的压缩包文件
5、 tar -zxvf 。。。。。
6、 将以前build链接删掉,重新链接上(有过报错的经历才知道,这一步的重要性)
cd /lib/modules/`uname -r`
rm build
ln
-s /usr/src/kernels/`uname -r`/ build
7、cd
~/openvswitch-1.4.6
./boot.sh
./configure -with-linux=/lib/modules/`uname -r`/build
8
、在进行make之间先将skbuff.h 的几个定义注释掉,否则后面回报错(可以在第9步后)。
vi openvswitch-
1.4
.
6
/datapath/linux/compat/
include
/linux/skbuff.h
将242和244行的 :
static
inline
struct
page *skb_frag_page(
const
skb_frag_t *frag)和
static inline void skb_reset_mac_len(struct sk_buff *skb)注释掉。
例如:
9 、#make
其实最好先不进行第8步,第8步需要注释掉的函数也不完全,最好建议先make然后会报错,显示哪个文件的函数有重定义,再去直接注释掉比较合适(本人就遇到三个地方重定义,需要注释掉)
10、make install
11、 查看在工作的bridge模块.
lsmod | grep bridge
卸载掉 rmmod bridge
12、insmod datapath/linux/openvswitch_mod.ko
13、查看下: dmesg | tail
基本到这就差不多了。
探索成功安装的过程学到了很多其他的知识,还是十分令人高兴的。
通过这次也发现,google的力量远远强于“百度”,英文文献确实十分丰富。
关键参考博客:http://networkstatic.net/open-vswitch-red-hat-installation/#!prettyPhoto