OpenWrt跑电骡¶
目录¶
前言
准备
硬件设备
预备知识
U盘挂载
安装Entware
创建新用户
安装
配置
运行
重启
鸣谢
前言¶
本文介绍在 OpenWrt 系统里跑 aMule 软件。 OpenWrt玩法很多,各种修改版五花八门,本文仅提供一种利用官方 OpenWrt + Entware 并用普通权限用户跑骡子的玩法。
先劝退一波:极度不建议在主路由器里跑电骡,路由器就让它仅仅完成路由和防火墙的功能就好,没必要加码其它应用,效率低负担重风险高。 网页,数据库,流媒体,电骡BT等等都放到下级设备里更安全易用。
不玩不舒服的老司机请继续。。。
准备¶
硬件设备¶
能插U盘,且已经安装好OpenWrt操作系统的路由器或其它设备。OpenWrt系统的安装就不在本文范围内了。
U盘一只,用来创建文件系统挂载到 /opt 安装Entware.
预备知识¶
您至少须具备Linux基础知识,并且能通过ssh登陆OpenWrt.
除非有特别说明,本文所有命令都用root身份执行,命令中需要替换的部分用尖括号<>标注。
OpenWrt从25.12版本起改用 apk
作为软件包管理器,本文中OpenWrt的软件安装均用apk操作,
未升级的 opkg 系统请自行升级。
Entware目前仍然使用旧的opkg包管理器,电骡相关工具都用opkg安装。
国内OpenWrt镜像仓库可极大提高软件下载速度,下面换用 科大镜像:
cd /etc/apk/repositories.d
cp distfeeds.list distfeeds.bak
sed -i 's/downloads.openwrt.org/mirrors.ustc.edu.cn\/openwrt/g' \
distfeeds.list
U盘挂载¶
先来安装一些软件:
apk update
apk add block-mount e2fsprogs fdisk \
kmod-fs-ext4 kmod-usb-storage-uas
安装完毕后插入U盘,系统会自动识别,通常为 /dev/sda.
然后创建分区:
fdisk /dev/sda
此时会进入fdisk操作界面,常用操作有:
g- 创建gpt分区表n- 新建分区,分区类型选 83 Linuxw- 保存并退出q- 不保存退出
分区大小不用填,默认是一个分区占据全部空间,通常为 /dev/sda1. 然后创建文件系统:
mkfs.ext4 /dev/sda1
创建挂载点并挂载文件系统:
mkdir /opt
mount -t ext4 /dev/sda1 /opt
在 /etc/config/fstab 里添加以下段落以使系统在启动后自动挂载:
config 'mount'
option target '/opt'
option device '/dev/sda1'
可以重启一下确保自动挂载正常。
安装Entware¶
用 uname -m 命令查看一下设备的处理器架构,然后去
这个页面
下载对应的安装脚本。
绝大多数路由器应该用 https://bin.entware.net/armv7sf-k3.2/installer/generic.sh.
然后安装 Entware, 安装过程中软件下载有点慢,耐心等待:)
sh generic.sh
安装完成后按如下配置Entware.
创建文件 /etc/profile.d/99-local.sh 内容为:
[ -r /opt/etc/profile ] && . /opt/etc/profile
换用Entware 北外镜像:
cp /opt/etc/opkg.conf /opt/etc/opkg.conf.bak
sed -i -e 's/http:/https:/g' \
-e 's/bin.entware.net/mirrors.bfsu.edu.cn\/entware/g' \
/opt/etc/opkg.conf
编辑 /opt/etc/init.d/rc.unslung, 在 ACTION=$1 这一行的下面加上两行:
[ "$ACTION" = 'boot' ] && ACTION=start
[ "$ACTION" = 'shutdown' ] && ACTION=stop
让系统启动/关机时执行Entware里安装的服务:
ln -s /opt/etc/init.d/rc.unslung /etc/rc.d/S99rc.unslung
ln -s /opt/etc/init.d/rc.unslung /etc/rc.d/K00rc.unslung
Entware的安装与配置到此结束。
创建新用户¶
用root身份跑骡子是强烈不推荐的。现在创建一个新用户 janedoe 专门跑骡子。
在 /etc/passwd 的末尾加一行:
janedoe:x:1000:1000:janedoe:/opt/home/janedoe:/bin/sh
在 /etc/group 的末尾加一行:
janedoe:x:1000:
创建文件夹并修改权限:
mkdir /opt/home/janedoe
chown janedoe:janedoe /opt/home/janedoe
chmod 750 /opt/home/janedoe
安装 sudo:
apk add sudo
准备工作到此结束。
安装¶
在Entware里安装 amule:
opkg update
opkg install amule
这会安装三个重要的程序:
amuled- 电骡后台服务,执行骡子全部功能;amulecmd- 电骡命令行操控工具;amuleweb- 电骡网页操控工具。
配置¶
先用下面的命令切换到 janedoe 账户:
sudo -u janedoe -i
然后创建两个目录:
mkdir -p ~/amule/incoming
mkdir -p ~/amule/temp
运行一下amuled:
amuled
运行会报错退出,但是默认配置会生成在这个目录里: ~/.aMule.
进入 .aMule 目录:
cd ~/.aMule
下载最新服务器和kad节点文件到当前目录里:
wget -O server.met "http://upd.emule-security.org/server.met"
wget -O nodes.dat "http://upd.emule-security.org/nodes.dat"
生成密码的md5值:
echo -n '<电骡密码>' | md5sum | cut -d ' ' -f 1
输出结果类似于:
d30d85deadf34dcb3745c594e1b809b8
记下来备用。
下面修改amuled的配置文件 amule.conf 。以下三项是必须修改的设置:
#接受外部连接必须是1,不然无法操控
AcceptExternalConnections=1
#骡子监听远程操控的地址
ECAddress=127.0.0.1
#远程登录密码的md5值,把前面记下的md5贴过来
ECPassword=d30d85deadf34dcb3745c594e1b809b8
以下是一些常用的可选设置,可以不改,建议按实际情况设置。
#设置昵称
Nick=JaneDoe
#最大下载速度,单位KBytes/s,下同。
MaxDownload=200
#最大上传速度
MaxUpload=400
#每个上传线程的预计速度。这个数值并不限制每个线程的速度上限,
#而是用于计算上传线程数=MaxUpload/SlotAllocation
SlotAllocation=100
#TCP监听端口
Port=4662
#UDP监听端口
UDPPort=4662
#从当前服务器自动更新服务器列表。最好关掉
AddServerListFromServer=0
#是否连接服务器。我通常关掉
ConnectToED2K=1
#临时文件夹,前面创建过
TempDir=/opt/home/janedoe/amule/temp
#下载完成后移入文件夹
IncomingDir=/opt/home/janedoe/amule/incoming
#下面是amuleweb的配置
[WebServer]
#是否开启网页操控功能
Enabled=1
#远程登录密码的md5值,把前面记下的md5贴过来
Password=d30d85deadf34dcb3745c594e1b809b8
#网页服务监听端口
Port=4711
改好配置后保存退回到命令行。 根据刚才改好的配置生成amulecmd的配置文件 remote.conf:
amulecmd --create-config-from=amule.conf
~/.aMule 目录里的配置工作就完成了。
输入 exit 退回到root身份.
为了使系统以普通用户身份自动启动amuled,须编辑 /opt/etc/init.d/S57amuled, 修改以下三项设置:
PROCS=/opt/bin/amuled
ARGS=""
PREARGS="sudo -u janedoe"
运行¶
启动和停止 amuled, 注意这些命令仍旧需要用root身份执行,但骡子是以 janedoe 身份运行的。
/opt/etc/init.d/S57amuled start
/opt/etc/init.d/S57amuled stop
上面两个命令会在系统启动/关机时自动执行。若不想让电骡随系统启动,执行:
cd /opt/etc/init.d && mv S57amuled K42amuled
检查 amuled 是否在运行:
/opt/etc/init.d/S57amuled check
用 amulecmd 命令来操控amuled.
如果用 janedoe 身份执行amulecmd,会直接进入操作界面,不需要密码。
用其他身份执行amulecmd会要求输入密码。常用的命令有:
help 帮助
status 状态
statistics 统计
add 添加ed2k链接
cancel 取消任务
search 搜索
exit 退出
具体用法自行查阅: help <命令>
若想跳过密码,比如用root身份跑amulecmd不想让它提示敲密码,需要将janedoe的remote.conf复制过来:
mkdir /root/.aMule
cp /opt/home/janedoe/.aMule/remote.conf /root/.aMule
远程¶
警告:amule的远程通信内容没有加密,用户名、密码、共享内容等都是明文发送的,仅适合在本地局域网内使用。 同时,要确保主路由器的防火墙挡住了从外网到amule远程操控端口的连接,默认端口为 4711 和 4712。
如果在前面的配置中开启了 WebServer, 在浏览器里输入电骡的地址和端口:
http://<IP地址>:4711/amuleweb/
输入密码后点Submit按钮就能进入操控界面了。
用 amulecmd 也可以远程,需要先把前面的 ECAddress= 配置项目留空,然后重启电骡使其生效。
从另一台设备上用amulecmd远程登陆电骡:
amulecmd -h <IP地址> -p 4712
提示:用 -P '' (大写字母P传空值参数)可以强制amulecmd提示输入密码。
更多参数及用法请看 amulecmd --help.
amulecmd的配置也可以放到 remote.conf 中,命令行参数的优先级高于配置文件。
用 amulegui 也可以远程,图形界面留给读者自行研究。
重启¶
amuled一直存在内存占用逐渐升高的问题,怀疑有内存泄漏。 一个简单的解决方法是用一个定时任务每天/周自动重启amuled. 下面介绍利用 cron 的定时任务自动重启amuled的设置方法。
创建一个文本文件 /opt/bin/amuled-recycle, 内容如下。
这段脚本的意思是,若电骡在运行则重启它。
#!/bin/sh
[ -x /opt/etc/init.d/S57amuled ] && \
/opt/etc/init.d/S57amuled check >/dev/null 2>&1 && \
/opt/etc/init.d/S57amuled restart >/dev/null 2>&1
true
修改权限为可执行文件:
chmod 755 /opt/bin/amuled-recycle
设置 crontab 在每天5点执行上面的脚本:
crontab -e
在编辑界面输入以下一行内容,然后保存退出。
0 5 * * * /opt/bin/amuled-recycle
以上即是设置每天5点重启电骡。若只在每周日5点重启,请将上面第三颗 * 改成 0.
其它定时设定请查阅 crontab说明文档.
鸣谢¶
本文初版 OpenWRT跑电骡教程 由群友 Abola 发表于 telegraph. 本文进行了大量增补与修改。
结束 2026年3月 更新于 2026年4月