risc-v 开发板虽然可以运行 Linux 发行版,但是毕竟还是处于起步阶段,生态是没法跟 arm 以及 x86 相比的。
这段时间在研究这台 visionfive,在软件这方面也折腾了不少,本文记录一下心得。
以前拿到开发板或者可以运行 Linux 的机顶盒时,我喜欢在上面装下载软件,以及开启 smb 共享,让它作为一台简易 NAS 来使用。这次在 visionfive 上面我也有进行尝试。
首先 BT 下载软件 transmission 和 qbittorrent 在这上面想要安装都非常简单,直接用 dnf 就行
dnf install transmission-daemon |
samba 也可以直接用 dnf 安装
dnf install samba |
这种是比较简单的,这里就不多细讲了。
像有些开源软件,它是托管在 GitHub 上面的,这类软件,我们可以到它的 GitHub release 里面,下载 riscv 架构的可执行文件。这里举两个例子
syncthing
这是一个多平台同步软件,之前有一段时间,我经常使用它将我手机里的照片、视频,同步到电脑上面。
想要让它在 visionfive 上面运行,需要到 https://github.com/syncthing/syncthing/releases 里面找名字带 riscv64 的,目前最新的是这个
我们可以通过 wget 将它下载到本地,然后使用 tar 解压
wget https://github.com/syncthing/syncthing/releases/download/v1.19.2/syncthing-linux-riscv64-v1.19.2.tar.gz |
此时我们得到的是一个文件夹
$l syncthing-linux-riscv64-v1.19.1 |
执行文件夹里的 syncthing 即可启动这个软件,然后它会输出一些启动信息
➜ cd syncthing-linux-riscv64-v1.19.1 |
等一会会出现一条比较重要的信息
[6RXV3] 16:13:32 INFO: Access the GUI via the following URL: http://127.0.0.1:8384/ |
它表示我们只能在 visionfive 上面使用浏览器访问这个网址,才可以打开 syncthing 的图形化界面。如果你像我一样,并没有给 visionfive 接显示器,一直都是 ssh 连接来操作的。此时这一步就没有进行下去了。
所以我们需要先停止软件,改一下配置文件后,再来启动。按 ctrl + c
这两个按键可以退出软件,然后我们使用 nano 来修改配置文件。
nano ~/.config/syncthing/config.xml |
找到 <address>127.0.0.1:8384</address>
这一行,改为 <address>0.0.0.0:8384</address>
,再次输入 ./syncthing
启动软件
此时就可以用电脑的浏览器来访问运行在 visionfive 上面的 syncthing 了。
miniserve
这个软件是我个人非常喜欢的文件展示应用,它的主要功能就是将某个文件夹通过 web 的方式共享出来,但是功能远不止于此。它还是支持上传功能,以及添加用户名密码验证,所以也可以把它当一个简易网盘来使用。
项目:https://github.com/svenstaro/miniserve
安装方法:
wget https://github.com/svenstaro/miniserve/releases/download/v0.19.4/miniserve-v0.19.4-riscv64gc-unknown-linux-gnu |
使用:
./miniserve |
非常简单,下载后赋予它可执行权限,然后直接 ./
就可以运行了。这样它会将你当前所在的文件夹,通过 8080
端口共享出来。
如果想使用其它端口,可以使用 -p
来指定,想添加上传功能,使用 -u
,想共享其它的文件夹,直接将文件夹路径写上去即可。
示例:
➜ ./miniserve -u -p 9527 /tmp/test |
自行编译
上面讲到的 syncthing 和 miniserve,它们的 release 里都有提供 riscv 的可执行文件,所以我们使用起来还算是比较容易。
但这类还是比较少数的,其它开源软件大多数目前都是没有提供 riscv 版的,所以如果我们想要使用的话,就需要自行编译。
先来一个简单的——zerotier
这个软件的功能是组虚拟局域网,让家里没有公网 ip 的用户,也可以远程访问家里设备。
想让它在 visionfive 上面运行我们需要自行编译,很简单,下载源代码到本地,进入项目文件夹,执行 make 编译就行
git clone --depth=1 https://github.com/zerotier/ZeroTierOne.git |
编译完成后当前目前下多出 zerotier-one
和 zerotier-cli
./zerotier-cli -v |
另外我还尝试编译 frp 这款软件,这个耗费了我不少的时间。由于它是用 go 写的,想要编译它需要有 go 环境,然后我就想到 golang 的官网下载,却发现并没有提供 riscv 版的。
走了一堆弯路之后,我才发现 visionfive 的 Fedora 里竟然自带 go
➜ ~ go version |
不过我使用它并没法成功编译 frp,想使用自带的 go1.14.6 编译现在最新的 go1.18 也没成功。
之后又发现在 x86 上面是可以使用 go 设定交叉编译,来编译 riscv64 的可执行文件的。
最终我使用这两条命令,成功编译出 riscv 版的 frp 服务器端和客户端
go env -w GOPROXY=https://goproxy.cn |
网络问题,先设置代理
CGO_ENABLE=0 GOOS=linux GOARCH=riscv64 go build ./cmd/frpc |
这样编译出来的文件是在当前目录下的,想存放在其它地方,应该使用 -o 参数
CGO_ENABLE=0 GOOS=linux GOARCH=riscv64 go build -o bin/frpc-riscv64 ./cmd/frpc |
➜ frpc -v |
那么用同样的方法,也可以编译 filebrowser 的后端部分
GOOS=linux GOARCH=riscv64 go build |
➜ file filebrowser |
前端部分需要 nodejs 和 npm ,这个官方没有提供 riscv 版,GitHub 上面有修改版,说是可以给 riscv 用,不过我没弄成功。