[經驗技巧] 路由mini安裝OpenWRT源的Transmission外掛,實現PT下載(需SSH)
阿新 • • 發佈:2019-01-07
經過研究發現,基於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儲存裝置就不會丟失。
-
[email protected]:~# df -h
-
Filesystem Size Used Available Use% Mounted on
-
rootfs 10.5M 10.5M 0 100% /
-
/dev/root 10.5M 10.5M 0 100% /
-
tmpfs 61.4M 2.4M 59.0M 4% /tmp
-
tmpfs 512.0K 0 512.0K 0% /dev
-
/dev/mtdblock7 1.0M 752.0K 272.0K 73% /data
-
/dev/mtdblock7 1.0M 752.0K 272.0K 73% /etc
-
tmpfs 61.4M 2.4M 59.0M 4% /userdisk/sysapiht tpd
-
/dev/root 1.0M 752.0K 272.0K 73% /mnt
-
/dev/mtdblock7 1.0M 752.0K 272.0K 73% /mnt
- /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”。
-
[email protected]:~# vi /etc/opkg.conf
-
src/gz attitude_adjustment http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/base
-
dest root /data
-
dest ram /tmp
-
lists_dir ext /data/var/opkg-lists
-
option overlay_root /data
- dest usb /extdisks/sda1/opkg
- [email protected]:~# 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,會提示缺少依賴的外掛包:
-
[email protected]:~# opkg -d usb install transmission-daemon
-
Installing transmission-daemon (2.84-1) to usb...
-
Downloading http:// downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/packages/transmission-daemon_2.84-1_ramips_24kec.ipk.
-
Collected errors:
-
* satisfy_dependencies_for: Cannot satisfy the following dependencies for transmission-daemon:
-
* libc * libcurl * libopenssl * libpthread * libevent2 * librt *
- * opkg_install_cmd: Cannot install package transmission-daemon.
2. 安裝Transmission所需的基礎外掛包
其中,libc無法通過“opkg -d usb install libc”來直接安裝,只能手動下載後安裝它。
首先進入到一個能夠下載檔案的目錄,可以是/tmp臨時目錄,但我用/extdisks/sda1/opkg目錄,下載後可以以後留用:
-
[email protected]:~# cd /tmp
-
或者
-
[email protected]:~# mkdir /extdisks/sda1/opkg
- [email protected]:~# cd /extdisks/sda1/opkg/
- [email protected]:/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
- [email protected]:/extdisks/sda1/opkg# opkg -d usb install libc_0.9.33.2-1_ramips_24kec.ipk
- [email protected]:/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”列出當前安裝的外掛包:
-
[email protected]:/extdisks/sda1/opkg# opkg list-installed
-
libc - 0.9.33.2-1
-
libcurl - 7.38.0-1
-
libevent2 - 2.0.21-1
-
libgcc - 4.8-linaro-1
-
libopenssl - 1.0.1j-1
-
libpolarssl - 1.3.8-2
-
libpthread - 0.9.33.2-1
-
librt - 0.9.33.2-1
- zlib - 1.2.8-1
3. 安裝Transmission外掛包
首先要改成packages源地址,並更新源:
-
[email protected]:/extdisks/sda1/opkg# vi /etc/opkg.conf
-
src/gz attitude_adjustment http://downloads.openwrt.org/barrier_breaker/14.07/ramips/mt7620a/packages/packages
-
dest root /data
-
dest ram /tmp
-
lists_dir ext /data/var/opkg-lists
-
option overlay_root /data
-
dest usb /extdisks/sda1/opkg
- [email protected]:/extdisks/sda1/opkg# opkg update
-
[email protected]:/extdisks/sda1/opkg# opkg -d usb install transmission-daemon
- [email protected]:/extdisks/sda1/opkg# opkg -d usb install transmission-web
【二、配置和啟動】
1. 因為我們不是預設安裝到/data,而是按照到USB儲存裝置,所以執行下面這個命令新增“TRANSMISSION_WEB_HOME”環境變數,來告知Transmission網頁控制檯的所在目錄:
- [email protected]:/extdisks/sda1/opkg# export TRANSMISSION_WEB_HOME=/extdisks/sda1/opkg/usr/share/transmission/web/
- # /extdisks/sda1/opkg/usr/bin/transmission-daemon -g /extdisks/sda1/opkg/transmission-daemon
-
[email protected]:/extdisks/sda1/opkg# vi /extdisks/sda1/opkg/transmission-daemon/settings.json
-
修改以下:
-
"download-dir": "/extdisks/sda1/Downloads",
-
"rpc-port": 9876,
-
"rpc-whitelist-enabled": false,
-
如果要設定使用者名稱和密碼登陸(注意保留引號,感謝segafans分享方法):
-
"rpc-authentication-required": true,
-
"rpc-password": "密碼",
- "rpc-username": "使用者名稱",
修改埠的原因在於預設埠9091已經被系統佔用,名為“plugincenter”(外掛中心?)的程式:
-
[email protected]:/extdisks/sda1# netstat -lpa | grep 9091
- tcp 0 0 localhost:9091 0.0.0.0:* LISTEN 8099/plugincenter
- [email protected]:/extdisks/sda1/opkg# killall -HUP transmission-daemon
【三、配置防火牆】
1. 編輯防火牆配置檔案,在檔案最後新增以下內容:
-
[email protected]:/extdisks/sda1/opkg# vi /etc/config/firewall
-
新增以下:
-
config rule 'transmission_web'
-
option src 'wan'
-
option dest_port '9876'
-
option proto 'tcp'
-
option target 'ACCEPT'
-
option name 'transmission mgmt from wan'
-
config rule 'transmission_peer_tcp'
-
option src 'wan'
-
option dest_port '51413'
-
option proto 'tcp'
-
option target 'ACCEPT'
-
option name 'transmission incoming tcp'
-
config rule 'transmission_peer_udp'
-
option src 'wan'
-
option dest_port '51413'
-
option proto 'udp'
-
option target 'ACCEPT'
- option name 'transmission incoming udp'
- [email protected]:/extdisks/sda1/opkg# /etc/init.d/firewall restart
每次重啟路由器都需要SSH到路由器下,執行下面兩個命令:
-
# export TRANSMISSION_WEB_HOME=/extdisks/sda1/opkg/usr/share/transmission/web/
- # /extdisks/sda1/opkg/usr/bin/transmission-daemon -g /extdisks/sda1/opkg/transmission-daemon