一步一坑完成小米路由器3的SVN服务器架设
小米路由器3到手一段时间了,狠狠心买了一块1T移动硬盘挂上,下载了几部电影后,觉得资源浪费比较严重。平时写代码都是保存到淘宝code,一直觉得不够私密,于是萌生了在路由器上架设SVN服务器的想法。1、开root折腾几次也不见效果,才注意到红色标注的“注意:稳定版不支持。”下载“ROM for R3 开发版”,通过路由器WEB管理页面升级为开发版。再次开ROOT成功。2、搭交叉编译环境这个地方太坑了,我的是小米路由器3,想当然地觉得应该是第一项,里面的toolchain是一个ARM的GCC交叉编译器,还好本人对嵌入式linux开发有所了解,也编译过一些程序。(1)安装虚拟机,安装ubuntu,以前都是用32位ubuntu的,这次也不例外,安装完成后发现toolchain是64位的,无奈重装ubuntu 64。(2)编译apr、apr-util、zlib和subversion,中间虽然有波折,但总算顺利,具体不说了,传到路由器上后,执行svnadmin,这是什么鬼?小米路由器3采用MT7620芯片,不是ARM
下载小米路由器Mini的开发工具,配置完成后特地写了一个hello world,运行无误。但编译过程中提示环境变量STAGING_DIR未设置,选择了无视,但终于还是编译不过去。“STAGING_DIR到底设置为什么?”,既然小米路由器3是基于OpenWrt的,还是从OpenWrt的开发工具下手吧。3、正确的编译过程 经过无数次的失败,终于能够编译成功了,过程如下:
(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(服务器上有MT7620版本的,但实测编译出的程序无法在小米路由器上运行,RT3883的可以!),将压缩包中staging_dir目录的内容解压到/home/mipsel(2)设置以下环境变量 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脚本下载依赖项。 分别用以下参数配置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,上传到路由器,创建库,修改svnserve.conf、authz、passwd三个文件,运行。 (4)看似成功了,执行一下创建目录试试
用小乌龟测试也一样,就是报错。
山重水复疑无路,柳暗花明又一村。 Malformed?一遍遍地修改参数、重新编译,盯着屏幕看.................. 终于看到这三个值,不对吧?!文件格式畸形,大概就是字段长度设置错误了!果断添加ac_cv_sizeof_ssize_t=4 ac_cv_sizeof_size_t=4 ac_cv_sizeof_off_t=4参数,大功告成!!!!!!!!!!!!! 到这里应该上可执行文件了,但此处上传附件实在太慢了,上传至CSDN了,svnserver for 小米路由器3,相信玩SVN的都是程序猿,如果有需要顺便打赏点分数吧。
配置说明
(1)下载,解压到外部硬盘(小米路由器3内部可用存储大约60M,能够放下,但占用太多空间可能引起路由器不稳定),如/extdisks/sda1/svn(2)设置环境变量export PATH=$PATH:/extdisks/sda1/svn/binexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/extdisks/sda1/svn/lib(3)创建库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修改如下: admin=xxx,svnadmin [/] @admin = rw * = r
vi /extdisks/sda1/svn/repo/svnserve.conf修改如下:
svnadmin = xxxxxx xxx = xxx
(5)启动服务svnserve -d -r /extdisks/sda1/svn/repo(6)大功告成,剩下的设置开机启动、配置防火墙等就不在此啰嗦了
多谢大神的分享 想挂个网页,,私人使用,也不费电,也不费钱,一直不成功, 小米路由器R2D用不了,有合适R2D的svn吗 有人成功吗{znds8}
页:
[1]