Centos6.7 Centos7.0 安装OpenVSwitch痛苦经历

由于RedHat系列系统默认不安装OpenVSwitch,因此需要自己安装。如果你是Centos6.7以前的版本,那么我只能说,你非常走运!!并且不用浏览本博客文章。

下面我的Linux系统环境

[root@centos6 ~]# uname -a

Linux centos6.7 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

[root@centos6 ~]#

一、 官方网站下载源码

我们第一步就是要获取源代码。通过以往的经验,我们可以从官方网站上下载我们需要的版本[下载地址]。我下载是

openvswitch-2.3.2.tar.gz

二、 rpmbulid编译

百度搜索能够搜出很多关于如何编译OVS,方法大同小异,也可阅读源码中帮助文档。 为了方便大家编译,下面是大致编译方法。

1、 准备编译环境

yum -y install gcc makePython-devel openssl-devel graphviz autoconfautomake rpm-build

redhat- rpm-config libtool

如果没有安装kernel-devel kernel-headers

[root@centos6 ~]# wgetftp://ftp.owlriver.com/pub/local/COLUG//RPM-build-tree.txt

[root@centos6 ~]# sh RPM-build-tree.txt


3、 rpm包编译

tar zxf openvswitch-2.3.2.tar.gz

cd openvswitch-2.3.2

cp ../openvswitch-2.3.2.tar.gz /root/rpmbuild/SOURCES/

cp rhel/openvswitch-kmod.files /root/rpmbuild/SOURCES/

rpmbuild -bb rhel/openvswitch.spec

rpmbuild -bb rhel/openvswitch-kmod-rhel6.spec

在编译openvswitch的时候非常顺利,但是在编译kmod驱动的时候就不那么顺利了。下面是编译错误。

/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/../linux/compat/utils.c
/usr/bin/make -C /usr/src/kernels/2.6.32-573.3.1.el6.x86_64
M=/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux modules
make[1]: Entering directory `/usr/src/kernels/2.6.32-573.3.1.el6.x86_64'
CC [M]
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/actions.o
CC [M]
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/datapath.o
In file included from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/actions.c:21:
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/skbuff.h:
In function 'skb_clear_hash':
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/skbuff.h:302:
error: 'struct sk_buff' has no member named 'l4_rxhash'
In file included from include/linux/if_ether.h:136,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/if_ether.h:4,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../include/linux/if_ether.h:26,
from include/linux/netdevice.h:29,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/netdevice.h:4,
from include/linux/if_arp.h:26,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/if_arp.h:4,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/datapath.c:23:
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/skbuff.h:
In function 'skb_clear_hash':
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/skbuff.h:302:
error: 'struct sk_buff' has no member named 'l4_rxhash'
In file included from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/actions.c:22:
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/in.h:
At top level:
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/in.h:8:
error: redefinition of 'proto_ports_offset'
include/linux/in.h:292: note: previous definition of 'proto_ports_offset'
was here
In file included from include/linux/netfilter.h:9,
from include/net/netns/x_tables.h:5,
from include/net/net_namespace.h:18,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/net/net_namespace.h:4,
from include/linux/netdevice.h:48,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/datapath.c:23:
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/in.h:
At top level:
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/in.h:8:
error: redefinition of 'proto_ports_offset'
include/linux/in.h:292: note: previous definition of 'proto_ports_offset'
was here
In file included from include/linux/if_arp.h:26,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/datapath.c:23:
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/netdevice.h:37:
error: conflicting types for 'netdev_rx_handler_register'
include/linux/netdevice.h:2215: note: previous declaration of
'netdev_rx_handler_register' was here
In file included from include/net/sock.h:50,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/net/sock.h:4,
from include/linux/tcp.h:180,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/tcp.h:4,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/actions.c:26:
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/linux/netdevice.h:37:
error: conflicting types for 'netdev_rx_handler_register'
include/linux/netdevice.h:2215: note: previous declaration of
'netdev_rx_handler_register' was here
In file included from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/actions.c:31:
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/net/ip.h:9:
error: redefinition of 'ip_is_fragment'
include/net/ip.h:249: note: previous definition of 'ip_is_fragment' was here
In file included from include/net/xfrm.h:18,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/../compat.h:26,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/../datapath.h:29,
from
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/datapath.c:57:
/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/../datapath/linux/compat/include/net/ip.h:9:
error: redefinition of 'ip_is_fragment'
include/net/ip.h:249: note: previous definition of 'ip_is_fragment' was here
make[2]: ***
[/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/datapath.o]
Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: ***
[/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux/actions.o]
Error 1
make[1]: ***
[_module_/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux]
Error 2
make[1]: Leaving directory `/usr/src/kernels/2.6.32-573.3.1.el6.x86_64'
make: *** [default] Error 2
make: Leaving directory
`/root/rpmbuild/BUILD/openvswitch-2.3.2/_default/datapath/linux'
error: Bad exit status from /var/tmp/rpm-tmp.bR1bj9 (%build)

大概意思,头文件冲突。这种编译错误,是非常让人头疼的。我经过百度以及谷歌后,均没有查找什么有价值的解决方

案,这个问题困扰了我多日,更换过各种版本,从1.9~2.4的发布版本,都尝试过但仍然存在问题。 曾经一度想换操作

系统,直到无意中查看官方网站中论坛-mail来往记录,才发现如下内容。

三、 解决方案

http://openvswitch.org/pipermail/discuss/2015-September/018885.html

大致意思是在官方发布的release版本在centos6.7中都存在编译不过的问题,但这些问题在github都已经更新并且修改完毕,我们可以从github中克隆代码并且进

行编译。

我去,这就是开源软件的弊端吗!!! 好吧,我只能尝试从github中获取代码并且进行编译啦。 天啊!!还真编译成功了,两个软件都编译ok,并且运行起来了。

[root@centos6 ~]# service openvswitch status
ovsdb-server is running with pid 2091
ovs-vswitchd is running with pid 2102
[root@centos6 ~]#

四、 总结

当经过百度和谷歌都没有查到相关解决方案的时候,我估计很多人都会陷入绝境,不知所错。 总结如下:

第一、 但是你要知道这样一句话: 你要相信你不是遇见这个问题的第一人。

第二、 当遇到无法解决的问题时候,请逛一逛官方论坛。


PS:如果在编译的时候,出现类似test错误,解决方案如下: 请在rpmbulid指定参数 --without check。例如:

rpmbuild -bb --without check rhel/openvswitch.spec

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


linux下开机自启: 在/etc/init.d目录下新建文件elasticsearch 并敲入shell脚本: 注意, 前两行必须填写,且要注释掉。 第一行为shell前行代码,目的告诉系统使用shell。 第二行分别代表运行级别、启动优先权、关闭优先权,且后面添加开机服务会用到。 shell脚本
1、因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 chmod +x /etc/rc.d/rc.local 2、赋予脚本可执行权限假设/usr/local/script/autostart.sh是你的脚本路径,给予执行权限 chmod +x /usr
最简单的查看方法可以使用ls -ll、ls-lh命令进行查看,当使用ls -ll,会显示成字节大小,而ls- lh会以KB、MB等为单位进行显示,这样比较直观一些。 通过命令du -h –max-depth=1 *,可以查看当前目录下各文件、文件夹的大小,这个比较实用。 查询当前目录总大小可以使用d
ASP.NET Core应用程序发布linux在shell中运行是正常的。可一但shell关闭网站也就关闭了,所以要配置守护进程, 用的是Supervisor,本文主要记录配置的过程和过程遇到的问题 安装Supervisor 1 yum install python-setuptools
设置时区(CentOS 7) 先执行命令timedatectl status|grep 'Time zone'查看当前时区,如果不是时区(Asia/Shanghai),则需要先设置为中国时区,否则时区不同会存在时差。 #已经是Asia/Shanghai,则无需设置 [root@xia
vim /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO="static" ONBOOT=yes IPADDR=192.168.8.106 NETMASK=255.255.252.0 GATEWAY=192.168.
一、安装gcc依赖 由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装 [root@localhost local]# yum install -y gcc 二、下载并解压安装包 [root@localhost local
第一步 On CentOS/RHEL 6.*: $ sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm On CentOS/RHEL 7: $
/// <summary> /// 取小写文件名后缀 /// </summary> /// <param name="name">文件名</param> /// <returns>返回小写后缀,不带“.”</ret
which nohup .bash_profile中并source加载 如果没有就安装吧 yum provides */nohup nohup npm run start & nohup ./kibana &
1.1 MySQL安装 1.1.1 下载wget命令 yum -y install wget 1.1.2 在线下载mysql安装包 wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 1.1.3 安装My
重启 reboot shutdown -r now init 6 关闭 init 0 shutdown -h now shutdown -h 20:25 #8点25关机查看内存 free CPU利用率 top 日期 date 设置时间 date 033017002015 #月日时间年 日历 cal
1、firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁用 : systemctl disable firewalld 开机启用 :
1 下载并安装MySQL官方的 Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 使用上面的命令就直接下载了安装用的Yum Repository,大概
CentOS6.x CentOS6中转用Upstrat代替以前的init.d/rcX.d的线性启动方式。 一、相关命令 通过initctl help可以查看相关命令 [root@localhost ~]# initctl help Job commands: start Start job. sto
1、使用命令:df -lk 找到已满磁盘 2、使用命令:du --max-depth=1 -h 查找大文件,删除
ifconfig:查看网卡信息 网卡配置文件位置: /etc/sysconfig/network-scripts/文件夹 nmtui:配置网卡 netstat -tlunp:查看端口信息 端口信息存储位置: /etc/services文件 route:查看路由信息 wget:下载网路文件,例如 wg
ps -ef:查看所有进程, ps -ef |grap firewalld 查看与firewalld相关的进程 which :查看进程:which firewalld kill 进程id:杀掉进程 kill 640,强制杀:kill -9 640 man:查看帮助,例如 man ps 查看
useradd:添加用户 useradd abc,默认添加一个abc组 vipw:查看系统中用户 groupadd:添加组groupadd ccna vigr:查看系统中的组 gpasswd:将用户abc添加到ccna组 gpasswd -a abc ccna groups abc:查看用户abc属