ZiGma

【瞎折腾】梅林固件利用entware环境安装Aria2

字数统计: 1,320阅读时长: 6 min
2018/05/17 Share

前言

之前折腾了一下小宝固件软件中心的Aria2,安装是方便了,但是问题也不少。

  • Bug不少,经常莫名其妙假死。

  • 添加设置需要在面板进行,如果是改conf文件,面板里面一提交,conf就会被重写。

  • 第二点就导致了自动更新tarcker列表的脚本无法执行。

  • 更新需要等待适配。

今天看论坛有大佬编译了1.34的版本,所以就想舍弃软件中心版,直接自己安装。 虽然看不到了面板那么详细的数据,但是总体还不错。

步骤

自动挂载U盘

因为之前直接安装Aria2到路由,运行一段时间重启后会导致opt文件夹软链丢失,造成Aria2无法启动和运行。所以想用其他方法,然后看到了这篇文章,将opt文件夹链接到U盘,运行了一天十分稳定,重启后也不会丢失opt文件夹。 插上U盘,执行 df 命令:

1
2
3
4
5
6
7
8
ZiGma@RT-AC86U-8450:/tmp/home/root# df
Filesystem 1K-blocks Used Available Use% Mounted on
ubi:rootfs_ubifs 79016 56648 22368 72% /
mtd:bootfs 4480 3348 1132 75% /bootfs
mtd:data 8192 624 7568 8% /data
/dev/mtdblock8 49152 18256 30896 37% /jffs
/dev/sda1 7315130 5 6920322 0% /tmp/mnt/sda1
/dev/sda 488384508 100183552 388200956 21% /tmp/mnt/Disk

可以看到U盘路径是/tmp/mnt/sda1。 所以直接运行以下代码进行挂载。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cat << EOF > /tmp/script_usbmount.tmp
if [ \$1 = "/tmp/mnt/sda1" ]
then
ln -sf \$1 /tmp/opt
/opt/etc/init.d/rc.unslung start
fi
EOF
nvram set script_usbmount="`cat /tmp/script_usbmount.tmp`"
cat << EOF > /tmp/script_usbumount.tmp
if [ \$1 = "/tmp/mnt/sda1" ]
then
/opt/etc/init.d/rc.unslung stop
fi
EOF

继续执行以下代码后重启。

1
2
nvram set script_usbumount="`cat /tmp/script_usbumount.tmp`"
nvram commit

绑定挂载U盘

使用过程中,重启之后发现Aria2没有运行,查看了进程也无法找到,也无法使用命令启动。 查了一下才发现U盘挂载点已经变成了/tmp/mnt/sdb1,所以要将U盘固定到盘符。 先利用

1
blkid

查看已经挂载的所有硬盘的UUID。 可以看到

1
2
/dev/sda1: UUID="e5fff8c8-c1f1-d301-60ff-f8c8c1f1d301"
/dev/sdb: LABEL="Disk" UUID="528629456341BE39"

需要注意的是要在正常挂载的情况下操作。 然后编辑/etc/fstab文件,添加:

1
UUID=e5fff8c8-c1f1-d301-60ff-f8c8c1f1d301 /dev/sda1 ext4 defaults 0 0

说明一下字段意义: - UUID - 挂载位置 - 格式 - 挂载参数(具体参考mount -o命令选项) - 是否需要dump备份 - 系统启动时进行磁盘检查的顺序

安装entware环境

将entware环境安装到上述的U盘中。

1
entware-setup.sh

安装完成后可以用cd /opt/查看,一般来讲是可以看到U盘目录,继续用

1
opkg update

更新仓库索引到本地。

安装虚拟内存

因为在查找原因时,有反应说软件中心的虚拟内存和entware环境下的Aria2有冲突,所以虚拟内存在这里进行安装。 依次执行

1
dd if=/dev/zero of=/tmp/mnt/sda1/swapfile bs=1024 count=512000

1
mkswap /tmp/mnt/sda1/swapfile
1
swapon /tmp/mnt/sda1/swapfile

创建启动脚本

1
2
3
4
5
6
7
8
echo '
#!/bin/sh
# Turn On Usage Of Swapfile
if [ -f "/tmp/mnt/sda1/swapfile" ];then
swapon /tmp/mnt/sda1/swapfile
echo "Turning Swapfile On"
fi
' >> /jffs/scripts/post-mount

安装Aria2

1
opkg install aria2

配置conf文件

可以直接用WinSCP直接修改/opt/etc/aria2.conf文件。 也可以直接用我的,需要自己修改下载路径和Token。 (dir=XXX/XXX 和 rpc-secret=XXXX) conf下载 配置完后利用

1
/opt/etc/init.d/S81aria2 restart

重启服务

更新版本(aria2c文件)

先将Aria2服务停止

1
/opt/etc/init.d/S81aria2 stop

然后在/opt/bin中替换编译的aria2c文件,并将权限设置为0755后重启Aria2服务。

1
/opt/etc/init.d/S81aria2 start

限制CPU占用

查看了路由器管理界面,发现下载时CPU占用过高,所以要对Aria2进行CPU限制。 安装cpulimit

1
opkg install limitcpu

安装完后通过命令限制cpu占用

1
cpulimit -P aria2c -l 30 -b

添加开机启动

在/jffs/scripts/post-mount文件最后添加

1
2
/opt/etc/init.d/S81aria2 start
cpulimit -P aria2c -l 30 -b

添加自动更新Tracker脚本

(不建议添加自动更新,会导致Aria2进程莫名消失) 在/opt/var/aria2新建文件trackers-list-aria2.sh写入以下内容,将编码格式设置为UTF-8,并将权限设置为0755。

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/sh
list=`wget -qO- https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt|awk NF|sed ":a;N;s/\n/,/g;ta"`
if [ -z "`grep "bt-tracker" /opt/etc/aria2.conf`" ]; then
sed -i '$a bt-tracker='${list} /opt/etc/aria2.conf
echo add......
else
sed -i "s@bt-tracker.*@bt-tracker=$list@g" /opt/etc/aria2.conf
echo update......
fi
sleep 1

/opt/etc/init.d/S81aria2 restart

这里可以用

1
/bin/sh /opt/var/aria2/trackers-list-aria2.sh

测试一下这个脚本,如果报错显示

1
syntax error: unexpected end of file (expecting "then")

那么利用

1
vi /opt/var/aria2/trackers-list-aria2.sh

删除每行最后所有的^M后保存即可。(具体如何在Linux编辑请百度) 最后将下面定时运行这个脚本命令写入/jffs/scripts/post-mount文件,每天凌晨4点更新Tracker。

1
cru a trackersupdate "0 4 * * * /bin/sh /opt/var/aria2/trackers-list-aria2.sh"
CATALOG
  1. 1. 前言
  2. 2. 步骤
    1. 2.1. 自动挂载U盘
    2. 2.2. 绑定挂载U盘
    3. 2.3. 安装entware环境
    4. 2.4. 安装虚拟内存
    5. 2.5. 安装Aria2
    6. 2.6. 配置conf文件
    7. 2.7. 更新版本(aria2c文件)
    8. 2.8. 限制CPU占用
    9. 2.9. 添加开机启动
    10. 2.10. 添加自动更新Tracker脚本