小妞给爷笑笑 发表于 2017-1-8 15:45

一步一坑完成小米路由器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)大功告成,剩下的设置开机启动、配置防火墙等就不在此啰嗦了

瓦力的爱心魔方 发表于 2017-1-8 18:58

多谢大神的分享

AK47-cq 发表于 2018-6-24 22:27

想挂个网页,,私人使用,也不费电,也不费钱,一直不成功,

喵星人_yMNN5 发表于 2019-1-7 20:16

小米路由器R2D用不了,有合适R2D的svn吗

nh58468 发表于 2020-8-28 12:36

有人成功吗{znds8}
页: [1]
查看完整版本: 一步一坑完成小米路由器3的SVN服务器架设