经过研究发现,基于OpenWRT的小米路由器系统是支持OpenWRT源中的ipk插件包的,通过opkg命令来安装,前提是找到对应CPU架构的源。硬盘版板块已经有人成功找到并安装OpenWRT的源,但mini与硬盘版的CPU架构不同,不能使用硬盘版的源。最终,我成功找到的小米路由器mini可用的OpenWRT源。



首先感谢诸多网友的文章教程,正是参考了他们的成果才有了我今天的成果。主要参考了以下但不限于这些:


http://bbs.xiaomi.cn/thread-9701693-1-1.html


http://bbs.xiaomi.cn/thread-9827624-1-1.html


http://bbs.xiaomi.cn/thread-10171076-1-1.html



再放一张最终的运行效果图:



下面进入正题,其中补充说明的部分可以不看。



【一、安装】


首先,当然要SSH到小米路由器mini下。



补充说明:


在安装过程中我遇到了存储空间不足的问题,通过“df -h”命令,可以查看文件系统的空间使用情况。发现内部/data存储空间总共只有1MB,而ipk插件包默认都是安装到/data下的,空间完全不够用啊。因此,我决定将插件都安装到USB存储设备中,也就是移动硬盘或优盘。官方插件不也是安装到USB存储设备中吗,这还有个好处是可以有效阻止硬盘自动休眠导致PT下载失败,当然也可能减少硬盘寿命,有利有弊。我曾经将ipk插件安装到/tmp内存中,PT下载时就遇到了这样的问题,也可能不是硬盘自动休眠导致的,/tmp空间虽然大,但每次重启都会丢失,需要重新安装,安装到USB存储设备就不会丢失。

    1.  root@XiaoQiang:~# df -h
    2.  Filesystem                Size      Used Available Use% Mounted on
    3.  rootfs                   10.5M     10.5M         0 100% /
    4.  /dev/root                10.5M     10.5M         0 100% /
    5.  tmpfs                    61.4M      2.4M     59.0M   4% /tmp
    6.  tmpfs                   512.0K         0    512.0K   0% /dev
    7.  /dev/mtdblock7            1.0M    752.0K    272.0K  73% /data
    8.  /dev/mtdblock7            1.0M    752.0K    272.0K  73% /etc
    9.  tmpfs                    61.4M      2.4M     59.0M   4% /userdisk/sysapiht tpd
    10.  /dev/root                 1.0M    752.0K    272.0K  73% /mnt
    11.  /dev/mtdblock7            1.0M    752.0K    272.0K  73% /mnt
    12.  /dev/sda1               931.5G    614.8G    316.7G  66% /extdisks/sda1


    复制代码

    1. 修改OpenWRT源地址



    vi编辑/etc/opkg.conf,修改首行后面的地址为“http:// downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/base”,在最后一行添加“dest usb /extdisks/sda1/opkg”。

      1.  root@XiaoQiang:~# vi /etc/opkg.conf
      2.  src/gz attitude_adjustment http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/base
      3.  dest root /data
      4.  dest ram /tmp
      5.  lists_dir ext /data/var/opkg-lists
      6.  option overlay_root /data
      7.  dest usb /extdisks/sda1/opkg


      复制代码

      更新源:

        1.  root@XiaoQiang:~# opkg update


        复制代码

        补充说明:


        从地址中可以看出“ramips”就是小米路由器mini的CPU架构,而“mt7620a”正是小米路由器mini的CPU型号。这个源地址正是安装OpenWRT插件包的关键。其中有两个地址:

        http:// downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/base 
        
        http:// downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/packages

        “packages”结尾的源中才包含Transmission等应用,而“base”结尾的源中包含运行这些应用所需的基础库,因此我们先使用base源地址,安装基础库。


        最后添加一行“dest usb /extdisks/sda1/opkg”的目的是告知opkg插件安装命令增加一个插件安装目录,也就是USB存储设备中的opkg目录下(opkg目录是我在USB存储设备中新建的目录)。以后使用opkg命令安装插件时使用“opkg -d usb install ...”来安装到USB存储设备中。



        再补充说明:


        如果你先用packages源地址试图直接安装Transmission,会提示缺少依赖的插件包:

          1.  root@XiaoQiang:~# opkg -d usb install transmission-daemon
          2.  Installing transmission-daemon (2.84-1) to usb...
          3.  Downloading http:// downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/packages/transmission-daemon_2.84-1_ramips_24kec.ipk.
          4.  Collected errors:
          5.  * satisfy_dependencies_for: Cannot satisfy the following dependencies for transmission-daemon:
          6.  *      libc *  libcurl *       libopenssl *    libpthread *    libevent2 *    librt *
          7.  * opkg_install_cmd: Cannot install package transmission-daemon.


          复制代码

          由此可以,需要先用base源地址安装libc、libcurl、libopenssl、libpthread、libevent2、librt这些依赖的基础插件包。下面就来安装它们。



          2. 安装Transmission所需的基础插件包



          其中,libc无法通过“opkg -d usb install libc”来直接安装,只能手动下载后安装它。



          首先进入到一个能够下载文件的目录,可以是/tmp临时目录,但我用/extdisks/sda1/opkg目录,下载后可以以后留用:

          1.  root@XiaoQiang:~# cd /tmp
          2.  或者
          3.  root@XiaoQiang:~# mkdir /extdisks/sda1/opkg
          4.  root@XiaoQiang:~# cd /extdisks/sda1/opkg/


          复制代码

          下载libc基础插件包(它的地址可以通过在浏览器中打开base源地址,搜索“libc”找到):

            1.  root@XiaoQiang:/extdisks/sda1/opkg# wget http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/base/libc_0.9.33.2-1_ramips_24kec.ipk


            复制代码

            安装它(它会自动安装依赖的libgcc包):

              1.  root@XiaoQiang:/extdisks/sda1/opkg# opkg -d usb install libc_0.9.33.2-1_ramips_24kec.ipk


              复制代码

              安装Transmission所依赖的其他插件包,可以一起安装:

                1.  root@XiaoQiang:/extdisks/sda1/opkg# opkg -d usb install libcurl libevent2 libopenssl libpthread librt


                复制代码

                补充说明:


                可以通过命令“opkg download libgcc libcurl libevent2 libopenssl libpthread librt libpolarssl zlib”一次性下载所有依赖的包到本地以后留用。


                可以通过命令“opkg list-installed”列出当前安装的插件包:

                  1.  root@XiaoQiang:/extdisks/sda1/opkg# opkg list-installed
                  2.  libc - 0.9.33.2-1
                  3.  libcurl - 7.38.0-1
                  4.  libevent2 - 2.0.21-1
                  5.  libgcc - 4.8-linaro-1
                  6.  libopenssl - 1.0.1j-1
                  7.  libpolarssl - 1.3.8-2
                  8.  libpthread - 0.9.33.2-1
                  9.  librt - 0.9.33.2-1
                  10.  zlib - 1.2.8-1


                  复制代码

                  3. 安装Transmission插件包



                  首先要改成packages源地址,并更新源:

                    1.  root@XiaoQiang:/extdisks/sda1/opkg# vi /etc/opkg.conf
                    2.  src/gz attitude_adjustment http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/packages
                    3.  dest root /data
                    4.  dest ram /tmp
                    5.  lists_dir ext /data/var/opkg-lists
                    6.  option overlay_root /data
                    7.  dest usb /extdisks/sda1/opkg
                    8.  
                    9.  root@XiaoQiang:/extdisks/sda1/opkg# opkg update


                    复制代码

                    安装Transmission的两个组件:transmission-daemon(核心程序),transmission-web(网页控制中心)

                      1.  root@XiaoQiang:/extdisks/sda1/opkg# opkg -d usb install transmission-daemon
                      2.  root@XiaoQiang:/extdisks/sda1/opkg# opkg -d usb install transmission-web


                      复制代码

                      至此安装结束,下面来配置和启动Transmission。



                      【二、配置和启动】



                      1. 因为我们不是默认安装到/data,而是按照到USB存储设备,所以运行下面这个命令添加“TRANSMISSION_WEB_HOME”环境变量,来告知Transmission网页控制台的所在目录:

                        1.  root@XiaoQiang:/extdisks/sda1/opkg# export TRANSMISSION_WEB_HOME=/extdisks/sda1/opkg/usr/share/transmission/web/


                        复制代码

                        2. 启动并生成默认的配置目录(我将配置目录同样制定到USB存储设备中):

                          1.  # /extdisks/sda1/opkg/usr/bin/transmission-daemon -g /extdisks/sda1/opkg/transmission-daemon


                          复制代码

                          3. 编辑Transmission的配置文件,其中"download-dir"是默认下载到的目录,而"rpc-port"是网页控制台所用的端口,默认是9091:

                            1.  root@XiaoQiang:/extdisks/sda1/opkg# vi /extdisks/sda1/opkg/transmission-daemon/settings.json
                            2.  修改以下:
                            3.      "download-dir": "/extdisks/sda1/Downloads", 
                            4.      "rpc-port": 9876,
                            5.      "rpc-whitelist-enabled": false, 
                            6.  如果要设置用户名和密码登陆(注意保留引号,感谢segafans分享方法):
                            7.      "rpc-authentication-required": true,
                            8.      "rpc-password": "密码",
                            9.      "rpc-username": "用户名",


                            复制代码

                            补充说明:


                            修改端口的原因在于默认端口9091已经被系统占用,名为“plugincenter”(插件中心?)的程序:

                              1.  root@XiaoQiang:/extdisks/sda1# netstat -lpa | grep 9091
                              2.  tcp        0      0 localhost:9091          0.0.0.0:*               LISTEN      8099/plugincenter


                              复制代码

                              4. 重启Transmission使修改后的配置生效:

                                1.  root@XiaoQiang:/extdisks/sda1/opkg# killall -HUP transmission-daemon


                                复制代码

                                【三、配置防火墙】



                                1. 编辑防火墙配置文件,在文件最后添加以下内容:

                                1.  root@XiaoQiang:/extdisks/sda1/opkg# vi /etc/config/firewall
                                2.  添加以下:
                                3.  config rule 'transmission_web'
                                4.          option src 'wan'
                                5.          option dest_port '9876'
                                6.          option proto 'tcp'
                                7.          option target 'ACCEPT'
                                8.          option name 'transmission mgmt from wan'
                                9.  
                                10.  config rule 'transmission_peer_tcp'
                                11.          option src 'wan'
                                12.          option dest_port '51413'
                                13.          option proto 'tcp'
                                14.          option target 'ACCEPT'
                                15.          option name 'transmission incoming tcp'
                                16.  
                                17.  config rule 'transmission_peer_udp'
                                18.          option src 'wan'
                                19.          option dest_port '51413'
                                20.          option proto 'udp'
                                21.          option target 'ACCEPT'
                                22.          option name 'transmission incoming udp'


                                复制代码

                                2. 重启防火墙使配置生效:

                                  1.  root@XiaoQiang:/extdisks/sda1/opkg# /etc/init.d/firewall restart


                                  复制代码

                                  至此,你可以在浏览器中输入地址“192.168.31.1:9876”来访问Transmission的网页控制台(出于习惯,我把路由器地址改成了192.168.1.1)。



                                  每次重启路由器都需要SSH到路由器下,运行下面两个命令:

                                    1.  # export TRANSMISSION_WEB_HOME=/extdisks/sda1/opkg/usr/share/transmission/web/
                                    2.  # /extdisks/sda1/opkg/usr/bin/transmission-daemon -g /extdisks/sda1/opkg/transmission-daemon


                                    复制代码

                                    我曾尝试让其自启动,通过将这两行命令添加到/etc/rc.local中的“exit 0”之前,但失败了。可能是因为在启动脚本运行时,USB存储设备还没准备好。如果有谁成功实现自启动就好了。