斐讯K3 官改ROOT版 rclone添加Dropbox自动同步

发布于 2018-02-13  10k 次阅读


前些日子入手了斐讯K3,近期就刷了许多网上的固件。
PS:刚刚更新完就发现rclone有一个选项--no-check-certificate=true。吐血中...

一、ROM总结

1. LEDE固件

LEDE固件中,最好用的是LEDE by stones。下载地址
只能使用开源驱动,所以缺点很明显:

  • 只有USB2.0
  • 无线信号较差

优点:

  • 软件支持很全,尤其是koolshare带的酸酸乳,功能强大。
  • 扩展程序丰富
  • 内核新,不锁定根目录,二次开发很容易

但因为我想搭个NAS,拷贝文件时不到30MB/s的速度实在无法忍受,遂换了官改ROOT固件。

2. 官改ROOT

一个是出自 abccba94,另一个是 tianbaoha,都集成了entware软件中心和常用的程序。实测都可以跑到读100MB/s,写70MB/s。

二、使用Dropbox

2.1 准备工作

使用之前,确保安装了entware软件中心。

因为我需要同步的功能,所以简单的 dropbox_uploader 还满足不了我,最终把目标盯在了rclone上。

PS:运行某些程序如果出现了命令不存在,如readlink不存在,执行

opkg find *readlink*

即可看到:

coreutils-readlink - 8.23-3 - Full version of standard GNU readlink utility.

然后执行

opkg install coreutils-readlink

安装上就行了。

2.1 安装rclone

opkg install rclone_nohf

然后按照官网上说的来配置,你就会发现这个问题:

x509 failed to load system roots and no roots provided

无法连接到dropbox  API?其实是因为本地没有根证书,所以无法建立https连接。

你可以试试

wget https://www.baidu.com

它会告诉你:无法连接到www.baidu.com,因为无法验证它的根证书颁发机构。

2.2 安装根证书

首先安装openssl:

opkg install openssl

然后参照Install Certs In OpenWrt安装根证书。

本来一句话

opkg install ca-certificates

就能搞定,但是官方ROOT版本的/etc和/usr目录等都不可写,所以我们就只有更改系统证书保存目录,然后手工添加了。

创建证书保存目录:

mkdir -p /tmp/media/nand/certs

创建自己的profile文件:

vi /tmp/media/nand/profile

内容是:

export SSL_CERT_DI=/tmp/media/nand/certs

执行

source /tmp/media/nand/profile

使变更生效。

目前没办法修改/etc/profile文件,所以每次重启后需要手动执行一遍。

安装openssl util:

opkg install openssl-util

然后创建add-certs.sh:

vi /tmp/media/nand/add-certs.sh

内容如下:

#!/bin/sh
# author: joda
openssl=/opt/bin/openssl
certdir=$SSL_CERT_DIR
if [ ! -f $openssl ]; then
 echo "ERROR: Can't find $openssl. openssl-util installed?" >&2
fi
if [[ "$1" = "-f" ]]; then
 overwrite=1
 shift # remove $1
fi

if [ -f "$1" ]; then
 certfile=$1
 certname=`basename $certfile`
 echo "Certificate $certname"
 echo " copy to $certdir"
 if [ "1" -ne "$overwrite" ] && [ -f "$certdir/$certname" ]; then
 echo >&2
 echo "ERROR: certificate $certname exists" >&2
 exit 2;
 fi
 cp "$1" "$certdir/$certname"

# create symbolic link from hash
 echo -n " generating hash: "
 HASH=`$openssl x509 -hash -noout -in $certfile`
 echo "$HASH"

# handle hash collisions
 suffix=0
 while [ "1" -ne "$overwrite" ] && [ -h "$certdir/$HASH.$suffix" ]; do
 let "suffix += 1"
 done
 echo " linking $HASH.$suffix -> $certname"
 if [ $overwrite ]; then
 ln -sf "$certname" "$certdir/$HASH.$suffix"
 else
 ln -s "$certname" "$certdir/$HASH.$suffix"
 fi
else
 echo >&2
 echo "ERROR: file does not exist $1" >&2
 echo >&2
 echo "This script adds (root) certificates for wget(ssl) to $certdir." >&2
 echo "SYNTAX: `basename $0` [Options] [x509-certificate]" >&2
 echo >&2
 echo "Option: -f force overwriting if certificate exists" >&2
fi

Install Certs In OpenWrt页面相比,只是修改了openssl换成了entware安装的位置。

在 docker 中创建一个 ubuntu 容器,安装 ca-certificates ,然后就可以提取ca了:

docker run -ti --rm --name ca ubuntu
apt update
apt install ca-certificates
docker cp ca:/usr/share/ca-certificates/mozilla .

提取到的ca就在mozilla文件夹中。导到路由器中:

cd mozilla && scp -r mozilla admin@p.to:/tmp/media/nand/cas

然后执行一个小小的循环,将所有cas下的证书导入:

for i in cas/*
do
  /tmp/media/nand/add-certs.sh $i
done

接着就可以享受rclone咯