小米路由器3到手一段時間了,狠狠心買了一塊1T移動硬盤掛上,下載了幾部電影后,覺得資源浪費比較嚴重。平時寫代碼都是保存到淘寶code,一直覺得不夠私密,于是萌生了在路由器上架設(shè)SVN服務(wù)器的想法。
1、開root 折騰幾次也不見效果,才注意到紅色標注的“注意:穩(wěn)定版不支持。” 下載“ROM for R3 開發(fā)版”,通過路由器WEB管理頁面升級為開發(fā)版。再次開ROOT成功。 2、搭交叉編譯環(huán)境
62752ac64feb039136a4bf7a5373605d.jpg (16.76 KB, 下載次數(shù): 12)
下載附件
保存到相冊
2017-1-8 15:44 上傳
這個地方太坑了,我的是小米路由器3,想當然地覺得應(yīng)該是第一項,里面的toolchain是一個ARM的GCC交叉編譯器,還好本人對嵌入式linux開發(fā)有所了解,也編譯過一些程序。 (1)安裝虛擬機,安裝ubuntu,以前都是用32位ubuntu的,這次也不例外,安裝完成后發(fā)現(xiàn)toolchain是64位的,無奈重裝ubuntu 64。 (2)編譯apr、apr-util、zlib和subversion,中間雖然有波折,但總算順利,具體不說了,傳到路由器上后,執(zhí)行svnadmin,這是什么鬼?
1dd943c59d6a29ae95f1b39c8619d052.jpg (25.08 KB, 下載次數(shù): 12)
下載附件
保存到相冊
2017-1-8 15:44 上傳
小米路由器3采用MT7620芯片,不是ARM
下載小米路由器Mini的開發(fā)工具,配置完成后特地寫了一個hello world,運行無誤。但編譯過程中提示環(huán)境變量STAGING_DIR未設(shè)置,選擇了無視,但終于還是編譯不過去?!癝TAGING_DIR到底設(shè)置為什么?”,既然小米路由器3是基于OpenWrt的,還是從OpenWrt的開發(fā)工具下手吧。 3、正確的編譯過程 經(jīng)過無數(shù)次的失敗,終于能夠編譯成功了,過程如下:
(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版本的,但實測編譯出的程序無法在小米路由器上運行,RT3883的可以?。?,將壓縮包中staging_dir目錄的內(nèi)容解壓到/home/mipsel
cc67ea35520de05a4c0b79d82009f6e6.jpg (31.36 KB, 下載次數(shù): 15)
下載附件
保存到相冊
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,解壓,運行其下get-deps.sh腳本下載依賴項。 分別用以下參數(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)建庫,修改svnserve.conf、authz、passwd三個文件,運行。
787b68c684ae8c4b5418b8eb668de200.jpg (39.51 KB, 下載次數(shù): 9)
下載附件
保存到相冊
2017-1-8 15:44 上傳
(4)看似成功了,執(zhí)行一下創(chuàng)建目錄試試
902da0499612f08d788c2f87e258ce71.jpg (91.66 KB, 下載次數(shù): 11)
下載附件
保存到相冊
2017-1-8 15:44 上傳
用小烏龜測試也一樣,就是報錯。
山重水復(fù)疑無路,柳暗花明又一村。
Malformed?一遍遍地修改參數(shù)、重新編譯,盯著屏幕看..................
3819742a0042d7609583b55b320f4008.jpg (67.97 KB, 下載次數(shù): 15)
下載附件
保存到相冊
2017-1-8 15:44 上傳
終于看到這三個值,不對吧?!文件格式畸形,大概就是字段長度設(shè)置錯誤了!果斷添加ac_cv_sizeof_ssize_t=4 ac_cv_sizeof_size_t=4 ac_cv_sizeof_off_t=4參數(shù),大功告成!?。。。。。。。。。。。?/font> 到這里應(yīng)該上可執(zhí)行文件了,但此處上傳附件實在太慢了,上傳至CSDN了,svnserver for 小米路由器3,相信玩SVN的都是程序猿,如果有需要順便打賞點分數(shù)吧。
配置說明
(1)下載,解壓到外部硬盤(小米路由器3內(nèi)部可用存儲大約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)建庫 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)啟動服務(wù) svnserve -d -r /extdisks/sda1/svn/repo (6)大功告成,剩下的設(shè)置開機啟動、配置防火墻等就不在此啰嗦了
|