小米路由器3到手一段時(shí)間了,狠狠心買(mǎi)了一塊1T移動(dòng)硬盤(pán)掛上,下載了幾部電影后,覺(jué)得資源浪費(fèi)比較嚴(yán)重。平時(shí)寫(xiě)代碼都是保存到淘寶code,一直覺(jué)得不夠私密,于是萌生了在路由器上架設(shè)SVN服務(wù)器的想法。
1、開(kāi)root 折騰幾次也不見(jiàn)效果,才注意到紅色標(biāo)注的“注意:穩(wěn)定版不支持。” 下載“ROM for R3 開(kāi)發(fā)版”,通過(guò)路由器WEB管理頁(yè)面升級(jí)為開(kāi)發(fā)版。再次開(kāi)ROOT成功。 2、搭交叉編譯環(huán)境
62752ac64feb039136a4bf7a5373605d.jpg (16.76 KB, 下載次數(shù): 12)
下載附件
保存到相冊(cè)
2017-1-8 15:44 上傳
這個(gè)地方太坑了,我的是小米路由器3,想當(dāng)然地覺(jué)得應(yīng)該是第一項(xiàng),里面的toolchain是一個(gè)ARM的GCC交叉編譯器,還好本人對(duì)嵌入式linux開(kāi)發(fā)有所了解,也編譯過(guò)一些程序。 (1)安裝虛擬機(jī),安裝ubuntu,以前都是用32位ubuntu的,這次也不例外,安裝完成后發(fā)現(xiàn)toolchain是64位的,無(wú)奈重裝ubuntu 64。 (2)編譯apr、apr-util、zlib和subversion,中間雖然有波折,但總算順利,具體不說(shuō)了,傳到路由器上后,執(zhí)行svnadmin,這是什么鬼?
1dd943c59d6a29ae95f1b39c8619d052.jpg (25.08 KB, 下載次數(shù): 12)
下載附件
保存到相冊(cè)
2017-1-8 15:44 上傳
小米路由器3采用MT7620芯片,不是ARM
下載小米路由器Mini的開(kāi)發(fā)工具,配置完成后特地寫(xiě)了一個(gè)hello world,運(yùn)行無(wú)誤。但編譯過(guò)程中提示環(huán)境變量STAGING_DIR未設(shè)置,選擇了無(wú)視,但終于還是編譯不過(guò)去?!癝TAGING_DIR到底設(shè)置為什么?”,既然小米路由器3是基于OpenWrt的,還是從OpenWrt的開(kāi)發(fā)工具下手吧。 3、正確的編譯過(guò)程 經(jīng)過(guò)無(wú)數(shù)次的失敗,終于能夠編譯成功了,過(guò)程如下:
(1)下載https://downloads.openwrt.org/chaos_calmer/15.05/ramips/rt3883/OpenWrt-SDK-15.05-ramips-rt3883_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2(服務(wù)器上有MT7620版本的,但實(shí)測(cè)編譯出的程序無(wú)法在小米路由器上運(yùn)行,RT3883的可以?。?,將壓縮包中staging_dir目錄的內(nèi)容解壓到/home/mipsel
cc67ea35520de05a4c0b79d82009f6e6.jpg (31.36 KB, 下載次數(shù): 15)
下載附件
保存到相冊(cè)
2017-1-8 15:44 上傳
(2)設(shè)置以下環(huán)境變量 STAGING_DIR="/home/mipsel" TOOLCHAIN="$STAGING_DIR/toolchain-mipsel_74Kc+dsp2_gcc-4.8-linaro_uClibc-0.9.33.2" DEPENDS=$STAGING_DIR/target-mipsel_74kc+dsp2_uClibc-0.9.33.2/usr
HOST="mipsel-openwrt-linux"
export PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:$STAGING_DIR/toolchain-mipsel_74kc+dsp2_gcc-4.8-linaro_uClibc-0.9.33.2/bin" export CC="$HOST-gcc" export CPP="$HOST-cpp" export GCC="$HOST-gcc" export CXX="$HOST-g++" export RANLIB="$HOST-ranlib" (3)下載http://archive.apache.org/dist/subversion/subversion-1.9.5.tar.gz,解壓,運(yùn)行其下get-deps.sh腳本下載依賴項(xiàng)。 分別用以下參數(shù)配置Apr、Apr-util、Zlib和Subversion,然后make && make install ./configure --prefix=$TARGET/apr --host=$HOST ac_cv_file__dev_zero=yes ac_cv_func_setpgrp_void=yes apr_cv_process_shared_works=yes apr_cv_mutex_robust_shared=yes apr_cv_tcp_nodelay_with_cork=yes ac_cv_sizeof_struct_iovec=8 (需要改configure文件和want.h,自行百度)
./configure --prefix=$TARGET/apr-util --host=$HOST --with-apr=/home/glory/svn/apr
./configure --prefix=$TARGET/zlib
./configure --prefix=$TARGET/subversion --host=$HOST --with-apr=$TARGET/apr --with-apr-util=$TARGET/apr-util --with-zlib=$TARGET/zlib 如此,編譯成功,將安裝目錄下的bin/*、lib/*.so*分別拷貝到bin和lib,上傳到路由器,創(chuàng)建庫(kù),修改svnserve.conf、authz、passwd三個(gè)文件,運(yùn)行。
787b68c684ae8c4b5418b8eb668de200.jpg (39.51 KB, 下載次數(shù): 9)
下載附件
保存到相冊(cè)
2017-1-8 15:44 上傳
(4)看似成功了,執(zhí)行一下創(chuàng)建目錄試試
902da0499612f08d788c2f87e258ce71.jpg (91.66 KB, 下載次數(shù): 11)
下載附件
保存到相冊(cè)
2017-1-8 15:44 上傳
用小烏龜測(cè)試也一樣,就是報(bào)錯(cuò)。
山重水復(fù)疑無(wú)路,柳暗花明又一村。
Malformed?一遍遍地修改參數(shù)、重新編譯,盯著屏幕看..................
3819742a0042d7609583b55b320f4008.jpg (67.97 KB, 下載次數(shù): 15)
下載附件
保存到相冊(cè)
2017-1-8 15:44 上傳
終于看到這三個(gè)值,不對(duì)吧?!文件格式畸形,大概就是字段長(zhǎng)度設(shè)置錯(cuò)誤了!果斷添加ac_cv_sizeof_ssize_t=4 ac_cv_sizeof_size_t=4 ac_cv_sizeof_off_t=4參數(shù),大功告成?。。。。。。。。。。。?! 到這里應(yīng)該上可執(zhí)行文件了,但此處上傳附件實(shí)在太慢了,上傳至CSDN了,svnserver for 小米路由器3,相信玩SVN的都是程序猿,如果有需要順便打賞點(diǎn)分?jǐn)?shù)吧。
配置說(shuō)明
(1)下載,解壓到外部硬盤(pán)(小米路由器3內(nèi)部可用存儲(chǔ)大約60M,能夠放下,但占用太多空間可能引起路由器不穩(wěn)定),如/extdisks/sda1/svn (2)設(shè)置環(huán)境變量 export PATH=$PATH:/extdisks/sda1/svn/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/extdisks/sda1/svn/lib (3)創(chuàng)建庫(kù) svnadmin create /extdisks/sda1/svn/repo (4)修改配置文件 vi /extdisks/sda1/svn/repo/svnserve.conf 修改以下行: anon-access = none auth-access = write password-db = passwd authz-db = authz vi /extdisks/sda1/svn/repo/authz 修改如下: [groups] admin=xxx,svnadmin [/] @admin = rw * = r
vi /extdisks/sda1/svn/repo/svnserve.conf 修改如下: [users]
svnadmin = xxxxxx xxx = xxx
(5)啟動(dòng)服務(wù) svnserve -d -r /extdisks/sda1/svn/repo (6)大功告成,剩下的設(shè)置開(kāi)機(jī)啟動(dòng)、配置防火墻等就不在此啰嗦了
|