[经验技巧] 路由mini安装OpenWRT源的Transmission插件,实现PT下载(需SSH)

来源:互联网 发布:mysql 批量update语句 编辑:程序博客网 时间:2024/06/07 07:47

原文链接:http://www.miui.com/thread-2093928-1-1.html


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


首先感谢诸多网友的文章教程,正是参考了他们的成果才有了我今天的成果。主要参考了以下但不限于这些:
http://bbs.xiaomi.cn/thread-9701693-1-1.html
http://www.cnblogs.com/swordzj/archive/2012/12/30/2839788.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. 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. config rule 'transmission_peer_tcp'
  10.         option src 'wan'
  11.         option dest_port '51413'
  12.         option proto 'tcp'
  13.         option target 'ACCEPT'
  14.         option name 'transmission incoming tcp'

  15. config rule 'transmission_peer_udp'
  16.         option src 'wan'
  17.         option dest_port '51413'
  18.         option proto 'udp'
  19.         option target 'ACCEPT'
  20.         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存储设备还没准备好。如果有谁成功实现自启动就好了。
1 0
原创粉丝点击