Ubuntu 16.04 源码安装 openVswitch 2.10.0

本文详细介绍了在Ubuntu16.04环境下,如何从源码编译安装Open vSwitch 2.10.0,并配置其内核模块及数据库。涵盖了必备工具安装、编译步骤、解决依赖问题、初始化数据库及启动服务等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境

Ubuntu 16.04
内核版本 4.8.0-36-generic
openVswitch 2.10.0

下载ovs代码
# wget http://openvswitch.org/releases/openvswitch-2.10.0.tar.gz
# tar -zxvf openvswitch-2.10.0.tar.gz
安装必备的工具
# apt-get install automake autoconf gcc uml-utilities libtool build-essential pkg-config linux-headers-`uname –r`
编译安装ovs
# cd openvswitch-2.10.0
# ./boot.sh
# ./configure  --with-linux=/lib/modules/`uname -r`/build
# make
# make install
安装ovs内核模块
 # insmod datapath/linux/openvswitch.ko

如果提示unknown symbol, 表示缺少一些依赖

# modinfo openvswitch
filename:       /lib/modules/4.8.0-36-generic/kernel/net/openvswitch/openvswitch.ko
license:        GPL
description:    Open vSwitch switching datapath
srcversion:     0DCA09B6BCF4444097F8069
depends:        nf_conntrack,nf_nat,libcrc32c,nf_nat_ipv6,nf_nat_ipv4,nf_defrag_ipv6
intree:         Y
vermagic:       4.8.0-36-generic SMP mod_unload modversions  

可以看到openvswitch.ko依赖nf_conntrack等等模块, 于是加载这些模块,然后再安装openvswitch.ko

# modprobe nf_conntrack
# modprobe nf_nat
# modprobe libcrc32c
# modprobe nf_nat_ipv6
# modprobe nf_nat_ipv4
# modprobe nf_defrag_ipv6

# insmod datapath/linux/openvswitch.ko
# lsmod | grep open
openvswitch           106496  2
nf_defrag_ipv6         36864  2 nf_conntrack_ipv6,openvswitch
nf_nat_ipv6            16384  1 openvswitch
libcrc32c              16384  1 openvswitch
nf_nat_ipv4            16384  2 openvswitch,iptable_nat
nf_nat                 28672  4 openvswitch,nf_nat_ipv6,nf_nat_masquerade_ipv4,nf_nat_ipv4
nf_conntrack          110592  9 nf_conntrack_ipv6,openvswitch,nf_conntrack_ipv4,nf_conntrack_netlink,nf_nat_ipv6,nf_nat_masquerade_ipv4,xt_conntrack,nf_nat_ipv4,nf_nat 
初始化ovsdb

利用自带的schema,创建数据库

# mkdir -p /etc/openvswitch
# ovsdb-tool create /etc/openvswitch/conf.db vswitchd/vswitch.ovsschema
启动ovsdb-server进程
# ovsdb-server /etc/openvswitch/conf.db -vconsole:emer -vsyslog:err -vfile:info --remote=punix:/usr/local/var/run/openvswitch/db.sock --private-key=db:Open_vSwitch,SSL,private_key --certificate=db:Open_vSwitch,SSL,certificate --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert --no-chdir --log-file=/usr/local/var/log/openvswitch/ovsdb-server.log --pidfile=/usr/local/var/run/openvswitch/ovsdb-server.pid --detach --monitor  

如果提示file or directory not exist, 那就手动创建对应的目录

启动ovsdb-vswitchd进程
# ovs-vswitchd unix:/usr/local/var/run/openvswitch/db.sock -vconsole:emer -vsyslog:err -vfile:info --mlockall --no-chdir --log-file=/usr/local/var/log/openvswitch/ovs-vswitchd.log --pidfile=/usr/local/var/run/openvswitch/ovs-vswitchd.pid --detach --monitor 
启动完成
# ps -aux | grep ovs
root       3403  0.0  0.0   9120   144 ?        Ss   03:51   0:00 ovsdb-server: monitoring pid 3404 (healthy)
root       3404  0.0  0.2   9372  2516 ?        S    03:51   0:00 ovsdb-server /etc/openvswitch/conf.db -vconsole:emer -vsyslog:err -vfile:info --remote=punix:/usr/local/var/run/openvswitch/db.sock --private-key=db:Open_vSwitch,SSL,private_key --certificate=db:Open_vSwitch,SSL,certificate --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert --no-chdir --log-file=/usr/local/var/log/openvswitch/ovsdb-server.log --pidfile=/usr/local/var/run/openvswitch/ovsdb-server.pid --detach --monitor
root       3406  0.0  0.1  14168  1828 ?        Ss   03:52   0:00 ovs-vswitchd: monitoring pid 3407 (healthy)
root       3407  0.0  3.1 235852 31168 ?        SLl  03:52   0:06 ovs-vswitchd unix:/usr/local/var/run/openvswitch/db.sock -vconsole:emer -vsyslog:err -vfile:info --mlockall --no-chdir --log-file=/usr/local/var/log/openvswitch/ovs-vswitchd.log --pidfile=/usr/local/var/run/openvswitch/ovs-vswitchd.pid --detach --monitor
root       3836  0.0  0.0  14224   972 pts/8    S+   06:02   0:00 grep --color=auto ovs 

Enjoy it ~

### VS Code 中启用或改善代码补全功能 #### 配置设置方法 VS Code 的代码补全功能基于 IntelliSense 提供支持,这是一种智能感知技术,能够提供上下文敏感的建议。为了增强此功能,可以采取以下措施: 1. **安装必要的扩展** 对于 C++ 文件中的代码补全,推荐安装 Microsoft 官方提供的 “C/C++” 扩展[^2]。该扩展集成了 IntelliSense 和其他调试工具,可显著提升代码补全的质量。 2. **配置 `c_cpp_properties.json` 文件** 此文件用于定义编译器路径、包含路径和其他选项。通过正确配置这些参数,IntelliSense 可以为特定项目生成更精确的补全建议。例如,在工作区根目录下的 `.vscode/c_cpp_properties.json` 文件中添加如下内容: ```json { "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "/usr/include" ], "defines": [], "compilerPath": "/usr/bin/gcc", "intelliSenseMode": "gcc-x64", "browse": { "path": ["${workspaceFolder}"], "limitSymbolsToIncludedHeaders": true, "databaseFilename": "" } } ], "version": 4 } ``` 3. **自定义代码片段** 用户可以通过创建自定义代码片段来实现快速补全。例如,对于输入 `"Hell World suc"` 或 `"World Peace suc"` 进行补全的功能需求,可以在 `.vscode/snippets/cpp.code-snippets` 文件中定义如下代码片段: ```json { "Hello World Success": { "prefix": "Hell World suc", "body": [ "#include <iostream>", "using namespace std;", "", "void helloWorld() {", "\tcout << \"Hello, World!\" << endl;", "}" ], "description": "Insert Hello World function with success message." }, "World Peace Success": { "prefix": "World Peace suc", "body": [ "#include <iostream>", "using namespace std;", "", "void worldPeace() {", "\tcout << \"World Peace Achieved!\" << endl;", "}" ], "description": "Insert World Peace function with success message." } } ``` 4. **调整用户设置** 修改用户的全局设置或工作区设置以优化补全体验。例如,开启自动导入和提高补全优先级: ```json { "editor.quickSuggestions": { "other": true, "comments": false, "strings": false }, "editor.suggest.snippetsPreventQuickSuggestions": false, "C_Cpp.autocomplete": "Advanced", "C_Cpp.intelliSenseEngine": "Default" } ``` 5. **更新 VS Code 和扩展版本** 确保运行的是最新版 VS Code 和相关扩展程序,因为新版本通常修复已知问题并改进性能[^3]。 ```python def example_function(): """This is an example of how code completion might work.""" pass ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值