电竞比分网-中国电竞赛事及体育赛事平台

分享

【詳細(xì)教程】編譯openwrt + njit

 simplelam 2013-11-23

這個(gè)教程,簡(jiǎn)單地說是我一年以來(lái)的鼓搗成果,也是我對(duì)我baidu/google看過無(wú)數(shù)教程的一個(gè)大雜燴。我大一之前的那個(gè)暑假的時(shí)候在貼吧看了這個(gè)帖http://tieba.baidu.com/p/1621858667之后,燃起了我對(duì)openwrt路由器的激情。在看了很多很多個(gè)教程之后,我把我的心得匯總在這里,希望對(duì)各位有所幫助~PS.20130902更新:華工五山校區(qū)測(cè)試成功。

首先,最重要的,你需要有一個(gè)能刷openwrt的路由器。怎么知道自己的路由支不支持呢?請(qǐng)參看http://wiki./toh/start,右邊的Supported Hardware – Router type里面就是支持的,如下圖。簡(jiǎn)單地說,ROM必須≥4MB(假如有8MB+就最好了,4M的ROM挺苦逼的),RAM必須≥16MB才能刷入openwrt。

2013-07-14 10_38_16的屏幕截圖

怎么刷機(jī)?不同的路由刷的方法也是不同的,所以請(qǐng)自行百度。刷機(jī)的風(fēng)險(xiǎn)也是不同的,有的刷變磚了要救回來(lái)比較難(我沒試過),有的怎么刷都能輕松刷回來(lái)……當(dāng)然你也可以去淘寶直接買一個(gè)刷好了的,反正也不貴。

 

刷機(jī)的固件怎么來(lái)?去openwrt官網(wǎng)下載是最方便的方法,不過這樣刷出來(lái)的不一定有LuCI(一個(gè)網(wǎng)頁(yè)圖形界面,貌似trunk沒有,Attitude Adjustment有?),只能用命令行的方法來(lái)管理;而且之后還要自己安裝njit-client及其依賴包,比較麻煩;此外,njit-client的交叉編譯問題也沒有解決。當(dāng)然也可以去各論壇上下載各大神編譯的固件,不過我這路由好像比較小眾,沒大神啊,只能靠自己了。

最重要的是,現(xiàn)在網(wǎng)上流傳的njit-client絕大多數(shù)都是1.2版的,都要libopenssl這個(gè)體積龐大的依賴包,直接導(dǎo)致了ROM剩余空間非常少的問題,所以下面我來(lái)講一下自己編譯openwrt固件和最新版的njit-client 1.3的方法~本文最后附上我編譯的ramips和ar7xxx的njit-client 1.3 的ipk下載。

13

space

我還裝了一些ipv6支持、QoS什么的還剩200多k空間

自己編譯看上去好像好高級(jí)的樣子 w(?Д?)w ,其實(shí)我也是一步一步看教程的o(* ̄▽ ̄*)o 以下內(nèi)容有相當(dāng)一部分參考了這里的教程。

 

一、準(zhǔn)備工作

  • 首先,準(zhǔn)備一臺(tái)運(yùn)行Linux或者類Unix操作系統(tǒng)的PC,比如Ubuntu,Debian,F(xiàn)edora,MAC OS,F(xiàn)reeBSD,Suse等,推薦使用Ubuntu。下文所列出命令都為ubuntu下的命令,其他linux發(fā)行版請(qǐng)到這里查看相關(guān)的命令。
  • 這里假設(shè)使用的是Ubuntu,其他OS只是在安裝PC所需的工具和函數(shù)庫(kù)時(shí)所使用的命令不同而已,比如apt-get install改為yum install。
  • 需要大約350MB硬盤空間,用于下載軟件包(當(dāng)然,選擇編譯的軟件越多,需要下載的源代碼包就越多,可能需要多達(dá)幾個(gè)G的硬盤空間)。
  • 需要3~4GB可用硬盤空間,用于編譯OpenWrt。
  • 需要寬帶連接,因?yàn)镺penWrt提供的主要是腳本文件不包含源代碼,需要從網(wǎng)絡(luò)下載所需的源代碼包。
  • 一般情況下,我們還需要一個(gè)非root用戶。
  • 最后是耐心和時(shí)間,OpenWrt邊下載邊編譯,編譯幾個(gè)小時(shí)那是家常便飯,并且中間還有可能出錯(cuò)。

 

二、編譯openwrt

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

在終端中運(yùn)行:

$ sudo apt-get install subversion

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

$ 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

3.下載openwrt源代碼,這里我下載的是openwrt官方的Attitude Adjustment分支:

svn co svn://svn./openwrt/branches/attitude_adjustment openwrt_attitude_adjustment

如果想下載Development branch(trunk)(注意這是二選一,有一個(gè)就夠了):

svn co svn://svn./openwrt/trunk/ openwrt_trunk

4.更新下載和安裝擴(kuò)展軟件包:

假設(shè)你的工作目錄為openwrt_trunk,進(jìn)入openwrt_trunk目錄:

cd openwrt_trunk

feeds.conf.default復(fù)制一份命名為feeds.conf:

cp feeds.conf.default feeds.conf

(不裝njit-client此步可忽略)打開feeds.conf,在最后加上一行

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

路徑修改  2013.11.15

如果要安裝scutclient,就加一行

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

執(zhí)行了下面兩步之后還可以查看./package/scut/readme.html獲取更詳細(xì)的幫助

更新下載擴(kuò)展軟件包,并安裝它們到package/feeds/目錄:

./scripts/feeds update -a

./scripts/feeds install -a

 

5.配置openwrt

現(xiàn)在開始配置OpenWrt,選擇你需要目標(biāo)平臺(tái),以及選擇將要編譯和添加進(jìn)固件的軟件包。運(yùn)行命令:

make menuconfig

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

然后你就來(lái)到了這個(gè)界面:

2013-07-14 10_39_12的屏幕截圖

這個(gè)配置界面跟Linux內(nèi)核的配置界面基本差不多,幾乎每一項(xiàng)都有3個(gè)選擇Y/M/N:

  • Y:選擇Y,該軟件將被編譯,并且加入到你的目標(biāo)固件里;
  • M:選擇M,該軟件包將會(huì)被編譯,但不會(huì)被放入固件里。在需要它的時(shí)候,可以用OPKG軟件包管理器進(jìn)行安裝;
  • N:選擇N,該軟件包將不會(huì)被編譯,也不會(huì)被安裝進(jìn)固件。
  • /:搜索軟件包。
  • 方向鍵是移動(dòng)光標(biāo)
  • 回車鍵是確認(rèn)
  • 空格鍵是選擇,可以代替Y/M/N鍵的使用

 

例如我的是D-LINK DIR-615 D4,到第一幅圖Support Hardware那里查詢對(duì)應(yīng)的Target和Platform,查到之后選擇對(duì)應(yīng)的Target System和Subtarget和Target Profile,我選的是Ralink RT28XX/3XXX和RT305X和Default Profile。

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

Target System —> (X) Atheros AR71xx/AR7240/AR913x

Target Profile —> (X) TP-LINK TL-MR3420 v1

之后就是選擇擴(kuò)展軟件包,按需要添加。

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

如果當(dāng)時(shí)svn下載的是trunk,默認(rèn)可能就沒有LuCI,那就要在feeds.conf后添加

src-svn luci http://svn.luci./luci/branches/luci-0.11/contrib/package
并執(zhí)行./scripts/feeds update -a 和 ./scripts/feeds install -a

 

其他的軟件包就按需要添加吧,注意不要太多(我可憐的4M ROM…),當(dāng)然如果你的路由能支持掛載U盤什么的那就更爽了(再也不擔(dān)心空間不夠了),這方面請(qǐng)自行百度。

 

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

(不裝njit-client可忽略)如果你的系統(tǒng)是Ubuntu,那么在編譯之前必須執(zhí)行此操作
sudo mv /usr/bin/pcap-config /usr/bin/pcap-config.bak

總之就是干掉pcap-config,否則編譯會(huì)出錯(cuò),就像這樣

auth.c: In function ‘SendResponseIdentity’:
auth.c:432:11: error: invalid ‘a(chǎn)sm’: invalid use of ‘%w’

當(dāng)時(shí)編譯過不去真是折騰了好久,最后終于在這里看到了njit-client作者的解答。

 

之后就是編譯了,執(zhí)行

make V=99

其中“V=99”表示輸出詳細(xì)的debug信息,也可以直接執(zhí)行make。

這個(gè)過程是漫長(zhǎng)的,尤其是有時(shí)在下載一些位于國(guó)外服務(wù)器的源代碼的時(shí)候,速度甚至<1kB/s(絕對(duì)不是我?guī)挼膯栴}),這個(gè)各位就要做好心理準(zhǔn)備了(也可以按Ctrl + C 中斷編譯,把那個(gè)下載很慢的文件鏈接拖到下載工具,下載回來(lái)之后放到 /工作目錄/dl/ 下)。

有時(shí)候編譯也會(huì)出錯(cuò),根據(jù)我的經(jīng)驗(yàn)這是由于更新了新的版本,而這個(gè)版本又有問題,連編譯都不能通過( ⊙ o ⊙ ),我不是學(xué)編程的所以也沒辦法,只能等后續(xù)的bugfix,要么就回滾到舊的沒問題的版本(我也試過更新了feeds然后某一個(gè)軟件包有問題然后編譯失敗的),總之有的東西真的不是越新越好啊╮(╯-╰)╭

 

編譯完成之后,在 /工作目錄/bin/ 下就會(huì)生成刷機(jī)用的.bin文件,在packages/下有軟件包的.ipk文件和。刷機(jī)方法就請(qǐng)自行百度了。

刷完之后重啟路由,把電腦本地連接的ip改為192.168.1.x,然后在瀏覽器中進(jìn)入192.168.1.1就進(jìn)入LuCI了。然后在瀏覽器里設(shè)置一些東西,例如剛進(jìn)去就要改密碼、改WAN口的IP(學(xué)校給的)、DNS、網(wǎng)關(guān)(學(xué)校給的)、MAC地址(如果校園網(wǎng)綁定了MAC)、設(shè)置DHCP服務(wù)(設(shè)完之后可以把本地連接的手動(dòng)ip改回自動(dòng)獲取,DNS好像要用學(xué)校給的DNS)、設(shè)置wifi什么的(PS.無(wú)線默認(rèn)關(guān)閉),這里不再詳述。

 

測(cè)試一下njit-client吧!在putty之類的里面執(zhí)行

njit-client username password interface     #改成自己的用戶名密碼
試試吧!其中[interface]是接口,例如eth0,eth1,一般是eth0,總之要對(duì)應(yīng)你的WAN口,在luci里就可以查看,例如我就是eth0.2。

20130714184945

 

能連接上之后就做一個(gè)開機(jī)啟動(dòng)腳本吧~在路由器的 /etc/init.d/ 目錄下建立一個(gè)自動(dòng)運(yùn)行腳本 njitclient,內(nèi)容如下:

#!/bin/sh /etc/rc.common
#(c) 2010 ivan_wl
START=50

start() {
njit-client username password eth0 &
}

stop() {
killall njit-client
killall udhcpc
}

之后運(yùn)行命令

chmod +x /etc/init.d/njitclient          #加上可執(zhí)行屬性

/etc/init.d/njitclient enable           #開啟開機(jī)自動(dòng)運(yùn)行

 

基本上就講完了?。?!Enjoy!

openwrt功能太多了,各位有空可以慢慢研究~有什么問題歡迎在下面提出~

 

ramips的njit-client下載:njit8021xclient_1.3-testing_ramips.zip

ar71xx的:njit8021xclient_1.3-testing_ar71xx.zip

20130918更新:我加了華工的路由器研究群262939451之后,得知原來(lái)有部分宿舍的認(rèn)證系統(tǒng)有所升級(jí),用原來(lái)的客戶端可能會(huì)有連不上的情況。針對(duì)這個(gè)問題,群里有高手修改過了源碼,我編譯了一下,也傳上來(lái)供各位測(cè)試一下。我的使用情況是改不改都能正常使用的。

ramips:njit8021xclient_1.3_SCUT-testing_ramips.rar

ar71xx:njit8021xclient_1.3_SCUT-testing_ar71xx.rar

20131116更新scutclient,對(duì)應(yīng)新客戶端:   PS.使用遇到問題請(qǐng)到群262939451進(jìn)行反饋,我什么都不知道╮(╯▽╰)╭

ramips:scutclient_1.0-unstable_ramips.zip

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多