前言
之前折腾了一下小宝固件软件中心的Aria2,安装是方便了,但是问题也不少。
- Bug不少,经常莫名其妙假死。 
- 添加设置需要在面板进行,如果是改conf文件,面板里面一提交,conf就会被重写。 
- 第二点就导致了自动更新tarcker列表的脚本无法执行。 
- 更新需要等待适配。 
今天看论坛有大佬编译了1.34的版本,所以就想舍弃软件中心版,直接自己安装。 虽然看不到了面板那么详细的数据,但是总体还不错。
步骤
自动挂载U盘
因为之前直接安装Aria2到路由,运行一段时间重启后会导致opt文件夹软链丢失,造成Aria2无法启动和运行。所以想用其他方法,然后看到了这篇文章,将opt文件夹链接到U盘,运行了一天十分稳定,重启后也不会丢失opt文件夹。 插上U盘,执行 df 命令:
| 1 | ZiGma@RT-AC86U-8450:/tmp/home/root# df | 
可以看到U盘路径是/tmp/mnt/sda1。 所以直接运行以下代码进行挂载。
| 1 | cat << EOF > /tmp/script_usbmount.tmp | 
继续执行以下代码后重启。
| 1 | nvram set script_usbumount="`cat /tmp/script_usbumount.tmp`" | 
绑定挂载U盘
使用过程中,重启之后发现Aria2没有运行,查看了进程也无法找到,也无法使用命令启动。 查了一下才发现U盘挂载点已经变成了/tmp/mnt/sdb1,所以要将U盘固定到盘符。 先利用
| 1 | blkid | 
查看已经挂载的所有硬盘的UUID。 可以看到
| 1 | /dev/sda1: UUID="e5fff8c8-c1f1-d301-60ff-f8c8c1f1d301" | 
需要注意的是要在正常挂载的情况下操作。 然后编辑/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 | echo ' | 
安装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 | /opt/etc/init.d/S81aria2 start | 
添加自动更新Tracker脚本
(不建议添加自动更新,会导致Aria2进程莫名消失) 在/opt/var/aria2新建文件trackers-list-aria2.sh写入以下内容,将编码格式设置为UTF-8,并将权限设置为0755。
| 1 | !/bin/sh | 
这里可以用
| 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" |