小米路由器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/bin export 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 修改如下: [groups] admin=xxx,svnadmin [/] @admin = rw * = r
vi /extdisks/sda1/svn/repo/svnserve.conf 修改如下: [users]
svnadmin = xxxxxx xxx = xxx
(5)启动服务 svnserve -d -r /extdisks/sda1/svn/repo (6)大功告成,剩下的设置开机启动、配置防火墙等就不在此啰嗦了
|