1. 程式人生 > >wr720n v4 折騰筆記(五):終篇-編譯安裝openwrt附帶njit

wr720n v4 折騰筆記(五):終篇-編譯安裝openwrt附帶njit

默認 包管理器 到你 必須 選擇 mage 移動 invalid utf8

前言:

由於沒有多余的U盤,所以想直接壓縮生成一個帶njit-client的openwrt固件。其中按照網上的教程走,遇到了一些問題,這裏前面的步驟來源於網絡。後面給出處理問題的方法。


一、準備工作

  • 準備一臺運行Linux或者類Unix操作系統的PC,比如Ubuntu,Debian,Fedora,MAC OS,FreeBSD,Suse等。下文所列出命令都Ubuntu 16.04下的命令,其他linux發行版請到這裏查看相關的命令。
  • 需要大約350MB硬盤空間,用於下載軟件包(當然,選擇編譯的軟件越多,需要下載的源代碼包就越多,可能需要多達幾個G的硬盤空間)。
  • 需要6~8GB可用硬盤空間,用於編譯OpenWrt。
  • 一般情況下,我們還需要一個非root用戶。
  • 最後是耐心和時間,OpenWrt邊下載邊編譯,編譯幾個小時那是家常便飯,並且中間還有可能出錯。

二、編譯openwrt

1.安裝 git 以獲取源代碼:

在終端中運行:

1 2 sudo apt-get update sudo apt-get install git-core

2.安裝必要的編譯工具:

1 sudo apt-get install libtool autoconf automake gcc-multilib bison screen gcc g++ binutils patch bzip2 flex make gettext unzip libc6 git-core git build-essential libncurses5-dev zlib1g-dev gawk quilt asciidoc libz-dev subversion

3.下載openwrt源代碼,這裏我下載的是trunk (main development tree) :

1 git clone git://git.openwrt.org/openwrt.git

如果想下載Barrier Breaker 14.07 分支,就這樣:

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

4.更新下載和安裝擴展軟件包:

假設你的工作目錄為openwrt,進入openwrt目錄:

1 cd openwrt

然後把feeds.conf.default復制一份命名為feeds.conf:

1 cp feeds.conf.default feeds.conf

(添加njit-client的源)打開feeds.conf,在最後加上一行

1 src-svn njit https://github.com/liuqun/openwrt-clients/trunk/njit

然後是更新下載擴展軟件包,並安裝它們到package/feeds/目錄:

1 2 ./scripts/feeds update -a ./scripts/feeds install -a

5.配置openwrt

現在開始配置OpenWrt,選擇你需要目標平臺,以及選擇將要編譯和添加進固件的軟件包。運行命令:

1 make menuconfig

若回顯提示缺少軟件包或編譯庫等依賴,則按提示安裝所缺軟件包或庫等即可。

然後你就來到了這個界面:

技術分享

這個配置界面跟Linux內核的配置界面基本差不多,幾乎每一項都有3個選擇Y/M/N:

  • Y:選擇Y,該軟件將被編譯,並且加入到你的目標固件裏;
  • M:選擇M,該軟件包將會被編譯,但不會被放入固件裏。在需要它的時候,可以用OPKG軟件包管理器進行安裝;
  • N:選擇N,該軟件包將不會被編譯,也不會被安裝進固件。
  • /:搜索軟件包。
  • 方向鍵是移動光標
  • 回車鍵是確認
  • 空格鍵是選擇,可以代替Y/M/N鍵的使用

例如我用的型號是D-LINK DIR-615 D4,到第一幅圖Support Hardware那裏查詢對應的Target和Platform,查到之後選擇對應的Target System和Subtarget和Target Profile,我選的是Ralink RT28XX/3XXX和RT305X和對應的Profile。

又例如你是TP-LINK TL-MR3420,就這樣選:

1 2 Target System ---> (X) Atheros AR71xx/AR7240/AR913x Target Profile ---> (X) TP-LINK TL-MR3420 v1

之後就是選擇擴展軟件包,按需要添加。

  • 添加LuCI(這樣才自帶網頁GUI端):LuCI ->Collections -> <*> luci(就是找到luci然後按一下Y)
  • 添加LuCI的中文語言包:LuCI ->Translations -> <*> luci-i18n-chinese
  • 添加UTF8編碼:Kernel modules -> Native Language Support -> <*> kmod-nls-utf8
  • 添加njit-client:Network -> <*> njit8021xclient
  • 下面的njit8021xclient-web也順便選了吧,這個是一個簡單的LuCI的配置界面

其他的軟件包就按需要添加吧,註意不要太多(我可憐的4M ROM…),不然編譯到最後會提示文件太大無法創建。

好了,選完之後回到主菜單,選Exit退出並保存,回到終端。

(不裝njit-client可忽略)如果你的系統是Ubuntu,那麽在編譯之前建議執行此操作

1 sudo mv /usr/bin/pcap-config /usr/bin/pcap-config.bak

總之就是幹掉pcap-config,否則編譯會出錯,就像這樣:

auth.c: In function ‘SendResponseIdentity’:
auth.c:432:11: error: invalid ‘asm’: invalid use of ‘%w’

當時編譯出錯了真是折騰了好久,最後終於在這裏看到了njit-client作者的解答。

然後把默認的無線開啟,這樣刷機之後方便許多。打開package/kernel/mac80211/files/lib/wifi/mac80211.sh,將

1 option disabled 1

的1改為0,編譯出來就默認打開wifi了。

下面的encryption也可以改下,不改就是默認沒密碼。

要改的話,把none改為psk2,再加一行option key yourpassword即可。

之後就是開始編譯了:執行

1 make V=s

其中“V=s”表示輸出詳細的debug信息,也可以直接執行make。

編譯完成之後,在 /openwrt/bin/ 下就會生成刷機用的.bin文件,在packages/下有軟件包的.ipk文件。刷機方法就請自行百度了。

刷完之後重啟路由,把電腦本地連接的ip改為192.168.1.x,然後在瀏覽器中進入192.168.1.1就進入LuCI了。沒有LuCI的就telnet 192.168.1.1自行配置吧。然後在瀏覽器裏設置一些東西,例如剛進去就要改密碼、改WAN口的IP(學校給的)、DNS、網關(學校給的)、MAC地址(如果校園網綁定了MAC)、設置DHCP服務(設完之後可以把本地連接的手動ip改回自動獲取,DNS好像要用學校給的DNS)什麽的,慢慢做吧。

測試一下njit-client吧!在putty終端中執行

1 njit-client [username] [password] [interface] & #改成自己的用戶名和密碼,接口必須對應

試試吧!其中[interface]是接口,例如eth0,eth1,總之要對應你的WAN口,在luci裏就可以查看,例如我就是eth0.2,ar71xx的多數是eth1。

技術分享

能連接上之後就做一個開機啟動腳本吧~在路由器的 /etc/init.d/ 目錄下建立一個自動運行腳本 njitclient,內容如下:

1 2 3 4 5 6 7 8 9 10 11 12 #!/bin/sh /etc/rc.common #(c) 2010 ivan_wl START=50 start() { njit-client [yourusername] [yourpassword] [interface] & #這裏自己改一下 } stop() { killall njit-client killall udhcpc }

之後運行命令

1 2 chmod +x /etc/init.d/njitclient #加上可執行屬性 /etc/init.d/njitclient enable #開啟開機自動運行


後記

我按照這個教程並沒有成功,其中在編譯的時候總是出現patch失敗。

因此我直接手動打patch,同時把patch刪掉。

最終的patch後的njit文件可以在這裏下載:

http://download.csdn.net/download/vspiders/10002510

下載之後,替換掉dl文件夾裏面的njit包,然後刪掉feeds/njit/njit8021xclient/patch文件,正常編譯即可。

這裏附上最終生成的固件:

openwrt-ar71xx-generic-tl-wr720n-v4-squashfs-sysupgrade.bin

wr720n v4 折騰筆記(五):終篇-編譯安裝openwrt附帶njit