经过研究发现,基于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存储设备还没准备好。如果有谁成功实现自启动就好了。