over 4 years ago

目標

透過更換韌體將 TP-LINK TL-WR1043ND 變成一台支援 OpenFlow 1.3 的 switch

準備工作

環境

  • TP-Link TL-WR1043ND version 1.1
  • Ubuntu Linux 14.04 (32/64 bit)

編譯(cross-compiling)步驟

  • 使用一般使用者帳號,官網文件有說明不要使用 root 帳號來編譯
  1. 安裝編輯 OpenWRT 所需的套件 (on Linux)
    apt-get install build-essential binutils flex bison autoconf gettext \
    texinfo sharutils subversion libncurses5-dev ncurses-term zlib1g-dev gawk git-core

  2. 下載 OpenWRT source (Attitude Adjustment 12.09 stable)
    git clone http://git.openwrt.org/12.09/openwrt.git

  3. 切換至 openwrt 資料夾
    cd openwrt

  4. 將 feeds.conf.default rename
    mv feeds.conf.default feeds.conf

  5. 下載並安裝所有可用的 feeds
    ./scripts/feeds update -a
    ./scripts/feeds install -a

  6. 安裝所有 luci Web UI 的套件
    ./scripts/feeds install -a luci

  7. 設定並選擇想要編譯的套件
    make menuconfig

    • Target System: Atheros AR7xxx/AR9xxx
    • Target Profile: TP-LINK TL-WR1043N/ND
    • LuCI -> Collections -> luci
      註: 套件可以編譯成 built-in 或者 package,若編譯成 package,需要再透過 opkg 進行安裝
  8. 下載 CPqD 的 OpenFlow for OpenWRT 的 source
    git clone https://github.com/CPqD/openflow-openwrt.git

  9. 建立 symbolic link

    • ~/openwrt/packages/openflow-1.3 -> ~/openwrt/openflow-openwrt/openflow-1.3
      cd ~/openwrt/packages/ ln -s ~/openwrt/openflow-openwrt/openflow-1.3/
    • ~/openwrt/files -> ~/openwrt/openflow-openwrt/openflow-1.3/files
      cd ~/openwrt ln -s ~/openwrt/openflow-openwrt/openflow-1.3/files
  10. 選擇編譯 OpenFlow 的套件
    make menuconfig

    • Network -> openflow.......................... Open Flow 1.3 Switch Userspace Package
  11. 編譯
    make

後續工作

編譯完成後,會在 ~/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 指令寫入新的軔體

Reference

[1] https://github.com/CPqD/ofsoftswitch13/wiki/OpenFlow-1.3-for-OpenWRT
[2] http://wiki.openwrt.org/doc/howto/buildroot.exigence

← Install FlowVisor on Ubuntu 13.10 Fluentd, Elasticsearch and Kibana on FreeBSD →