0%

记风火轮MIQI-RK3288开发板的踩坑过程

记风火轮MIQI-RK3288开发板的踩坑过程

之前从某鱼上看到了价格比较合适的一块RK3288开发板,就顺便买下来了。记录一下烧录镜像过程中的踩坑记录。

我买的就是上面这块板子,配置还是很不错的:RK3288四核处理器、2G DDR3、16G eMMC、4个USB2.0、HDMI、千兆网口、还有串口调试和一大票的GPIO。无论是当作家用服务器还是当超高配单片机或者是学习内核驱动开发感觉都不错,而且价格也比较便宜,这价格也不需要啥自行车。比我之前用的opi PC2这种小水管强多了(其实我就跑跑bot挂个下载器,偶尔当作vsc的远程环境来用,PC2完全是够了)。(其实PC2的电源设计是有问题的,当CPU高频工作时会跑飞,也许增加电容可以改善这种情况)

上面这个就是我目前的小水管服务器。

镜像烧录

这块板子到手后我上电发现是Android的系统,而我是要做一个小服务器的,所以我要做的第一步就是烧录一个linux的系统上去。

由于这块板子自带了eMMC,所以不需要额外的内存卡用于烧写镜像,而是需要特殊的工具来完成烧写。

有一说一,这款产品的网站做的是真垃圾捏。存的资料都是伯度网盘,好多资料都失效了;而且官方也没有详细的教程;wiki页面还全是英文的,里面的图还全都废了,真就不要国内用户了呗。

这个是板子的页面,可以感受一下。

首先,我们需要下载瑞芯微提供的烧录工具和驱动(RK3288就是瑞芯微的)。我们需要烧录到eMMC中,所以下载AndroidTools和对应的驱动并安装(现在这俩东西叫RKDevTool和RK驱动助手)。

然后还需要下载我们需要的镜像。可以在这里下载(提取码:4m0o),镜像在firmwares文件夹里。不过似乎这里的也能用,后面的镜像更新,所以推荐去这里下。但是这个官网的下载速度和伯度网盘差不多,我以我就找个小的下,我选了RK3288_Server_Ubuntu这个镜像,毕竟平时我也是需要关闭掉图形化显示的,所以不如干脆选一个不带图形化的界面的版本。

烧录前先把之前说的驱动装好,然后摁住板子后面的唯一一个按键不松手,把板子和电脑相连后等待几秒再松开那个按键,这样就进入了LOADER模式。打开那个AndroidTools,然后在升级固件的窗口中选择固件,然后点击烧录就完成了。

然后断电再重新上电,随便找个显示器装上,就能看到成功启动了。不过由于我们没有装图形化显示界面,所以全是黑框框。以及这个默认的账号和密码都是firefly,它官网说的都不对,不过这种一般都是拿自己的公司来作为账号和密码,还是很好猜的

配置网络

很显然我们不能每次使用这块板子就找来显示屏和鼠标键盘这种东西连上去,否则就显得太蠢了。

我们首先需要找个好地方来放板子,这个好地方需要满足以下条件:

  • 离路由器或者交换机近,可以提供网线直连。因为板子的USB是2.0,就不要接一个愚蠢的usb网卡了,而且作为一台服务器,使用无线传输方式来接入互联网真是太掉价了。
  • 有足够的充电设备,因为后续扩展硬盘上去是需要额外供电设备的。
  • 比较阴凉,虽然本身散热还行,但是最好还是找个阴凉的地方。

我选择把这台小服务器扔在宿舍里,虽然在实验室里可能会更好(宿舍限电,说不定啥时候就崩了),但是实验室的交换机离我有点远,要拉一根很长的网线才行。

配置网络的时候最好将其配置成局域网内的静态IP,而不要DHCP分配。因为前者在局域网内访问会很方便,而且我这个路由器又是捡垃圾捡来的,它那个地址续租好像有点问题(不是很确定,但是非静态地址过一段时间会断网)。

首先输入ifconfig查看网卡和当前ip地址,然后通过修改/etc/network/interfaces文件来修改网卡配置信息。

1
2
3
4
5
6
7
8
9
10
11

sudo vim /etc/network/interfaces

# 下面是interfaces文件中的内容

auto eth0
iface eth0 inet static
address 192.168.1.205
gateway 192.168.1.1
netmask 255.255.255.0

这样就配置好了静态IP。

配置frp内网穿透

由于这台服务器位于内网,我们要访问它就需要和它连接在一个子网内,但是这很明显不方便。而为了能够在外网访问它,我们需要使用内网穿透工具,此处选用了frp。

使用frp时,要保证我们拥有一个公网ip,frp的配置分为客户端与服务器,客户端即为我们的板子,服务器是拥有公网ip的主机。

我们首先进入frp的github页面,下载我们需要的frp程序,注意,这个程序是同步需要在我们的板子和远程主机上下载并启动的,且需要对应架构。

客户端配置

由于我们的板子是32位arm架构的(你可以输入arch来查看架构),所以我们需要下载arm版本的frp程序并解压。

1
2
3
4
5
6
7

wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_arm.tar.gz

tar -zxvf frp_0.44.0_linux_arm.tar.gz

cd frp_0.44.0_linux_arm

然后开始配置frp客户端,我们先将ssh进行穿透。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

vim frpc.ini

# 下面是配置文件内容

[common]
server_addr = 127.0.0.1 # 这个是服务器端的公网ip
server_port = 7000 # 这个是服务器端开放的端口,可以参见服务器端配置

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

然后就可以输入./frpc -c frpc.ini启动一下看看效果,正常启动就没问题。

服务器端配置

仅仅配置了客户端我们目前还是没有办法进行远程登录,还需要额外配置服务器端的frp程序。

我手上的这台服务器是x86_64架构的,所以我们需要下载对应架构的frp程序。

1
2
3
4
5
6
7

wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz

tar -zxvf frp_0.44.0_linux_amd64.tar.gz

cd frp_0.44.0_linux_amd64

然后类似的,我们也需要修改服务器端的配置文件。

1
2
3
4
5
6
7
8
9
10
11

vim frps.ini

# 下面是配置文件内容

[common]
bind_port = 7000 # 这个就是前面说的服务器端使用的ip地址
dashboard_port = 7500 # 这个是提供统计信息的界面,在浏览器中输入http://{服务器ip}:7500就能看到
dashboard_user = admin # 下面这俩是统计信息界面的账号密码,可以自己设置。
dashboard_pwd = admin

配置完成后我们输入./frps -c frps.ini来启动服务器端程序看看运行结果,正常运行就是ok的。

最后注意需要在云服务器中的安全组里打开防火墙不然可能无法连接。

自启动与后台执行

但是这样的话就会出现几个问题:

  • 板子每次重启都需要在内网内启动frpc程序
  • 远程服务器的ssh不能断开,否则frps程序会随着ssh断开而关闭

我们先来解决第二个问题,因为可以通过screen来快速解决。

1
2
3
4
5
6

screen -S frps # 先创建一个screen窗口
./frps -c frps.ini # 在窗口内执行

CTRL^A D # 按下ctrl^a 再按下d,此时这个窗口连同执行的程序就会进入后台。

如果我们想重新连入这个窗口可以输入screen -r frp,这样可以很方便的查看日志,彻底关闭这个窗口可以按下ctrl^a 再按下k。

对于第一个问题,我们的解决方法是写一个bash脚本然后每次开机都自启动这个脚本。

我们先写一个我们需要被自启动的脚本

1
2
3
4
5
6
7
8

vim start.sh

# 下面是脚本内容

cd /usr/local/frp_0.39.1_linux_arm64
nohup ./frpc -c frpc.ini &

然后我们编辑/etc/rc.local,如果没有这个文件可以参考这里。然后把我们的启动脚本添加进去。

1
2
3
4
5
6
7

sudo vim /etc/rc.local

# 下面是添加的内容 在exit 0之前

bash /usr/local/start.sh &

这样就完成了。