almost 8 years ago

很多資料說明openvswitch已經建立在官方套件內,但是透過官方opkg以下方法還是失敗,只好自行編譯了!!!

cd /lib
rm libatomic.so*
opkg install openvswitch
ps w | grep ovs

上面指令若失敗則只好自己動手編譯吧!!!

實驗環境

  • OS: Ubuntu desktop x64 14.04.
  • OpenWRT version: 14.07
  • Open vSwitch version: 2.3.1
  • Target Device: TP-LINK WR1024D v2.0

Ubuntu編譯前置套件

先更新套件清單

sudo apt-get update

再安裝套件

sudo apt-get -y install build-essential binutils bison autoconf gettext texinfo subversion git-core libncurses5-dev zlib1g-dev gawk flex quilt libssl-dev xsltproc libxml-parser-perl unzip ncurses-term

下載OpenWrt Source code (stable version, 14.07)

git clone git://git.openwrt.org/14.07/openwrt.git

開始編譯 (不要使用root進行以下指令)

首先先建立feeds.conf (相關opkg要編譯套件的來源網址)

cd openwrt
mv feeds.conf.default feeds.conf

更新套件來源 feeds conf

./scripts/feeds update -a

將Open vSwitch repository 增加到feeds.conf中,並再次更新

echo 'src-git openvswitch git://github.com/pichuang/openvwrt.git' >> feeds.conf
./scripts/feeds update -a

然後打上libatomic patch:

wget https://gist.githubusercontent.com/pichuang/7372af6d5d3bd1db5a88/raw/4e2290e3e184288de7623c02f63fb57c536e035a/openwrt-add-libatomic.patch -q -O - | patch -p1

更改Open vSwitch版本為2.3.1
(因為不再維護了,版本還停留在舊版2.3.0,因此將版本更新為新版2.3.1)

vim feeds/openvswitch/openvswitch/Makefile

修改PKG_RELEASE與PKG_VERSION為下列新的版本

PKG_RELEASE:=0
PKG_VERSION:=2.3.1

再次執行feeds update

./scripts/feeds update -a

這時候就可以看到 feeds/openvswitch.index 裡面,Open vSwitch 的版本就改成了 2.3.1-0

執行 feeds install

./scripts/feeds install -a

執行 make menuconfig

make menuconfig

利用上下左右、M、空白鍵來切換與選擇不同的編譯選項。在選擇編譯選項時,原則上是:

  • 系統預設值保留不變,除非要拿掉甚麼功能,ex: ppp。
  • 盡量將需要編譯的項目選擇為 M,而不是 *,除非認定必要存在。
  • 選擇的過程中或是離開前,選擇 save 可以將選項儲存起來,檔名保留為 .config (檔名不可以變更)。

選擇 Target System -> Atheros AR7xxx/AR9xxx
選擇 Target Profile -> 選擇指定的 device 名稱,TP-Link TL-W1043N/ND
選擇 Network -> openvswitch-common、openvswitch-ipsec、openvswitch-switch
選擇 Advanced configuration options (for developers) -> Target Options -> 取消勾選 Build packages with MPIS16 instructions
選擇 Advanced configuration options (for developers) -> Toolchain Options -> Binutils Version ->Linaro binutils 2.24
網頁管理介面:
選擇 Luci -> Collections -> luci

Make

這個步驟再每一次 make menuconfig 之後都要執行一次

echo '#CONFIG_KERNEL_BRIDGE is not set' >> .config

開始編譯 OpenWRT

make V=s

自己用VM編譯兩個半小時才完成有夠恐怖
編譯完成後的檔案會放在 openwrt/bin/

開始刷機

編譯完成後,會在 ~/openwrt/bin/ar71xx 資料夾產生四個 binary file

openwrt-ar71xx-generic-tl-wr1043nd-v1-*-factory.bin
- 適用於仍是官方軔體的 TL-WR1043ND,可透過原廠的 Web UI 上傳並寫入軔體
openwrt-ar71xx-generic-tl-wr1043nd-v1-*-sysupgrade.bin
- 適用於已安裝 OpenWRT 的 TL-WR1043ND,可透過下列任一種方式
-- LuCI Web UI 上傳並寫入韌體
-- 上傳至 WR1043ND 上再透過 sysupgrade 指令寫入新的軔體

刷機完成就可以登入查看ovs有無成功執行囉

ps w | grep ovs

編譯好的ROM

Ref:
https://github.com/openwrt/packages/tree/master/net/openvswitch
http://worldend.logdown.com/posts/256561-compile-openwrt-with-open-vswitch
http://ywang.logdown.com/posts/196787-openflow-13-for-openwrt
http://linton.tw/2014/05/13/openflow-13-for-openwrt-on-tl-1043nd-with-open-vswitch/
http://blog.zymr.com/building-and-configuring-open-vswitch-on-openwrt-for-cloud-networking

從官網下載OpenWrt進行原廠升級
http://wiki.openwrt.org/toh/tp-link/tl-wr1043nd

← 【RYU】Ubuntu 14.04.4 install Ryu SDN Framework 【LinuxMint】LinuxMint 17.1 MATE xrdp remote desktop →
 
comments powered by Disqus