前言
之前折腾了一下小宝固件软件中心的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" |