瞎折腾 - 斐讯 N1 变身 Armbian Linux 记录

起因

现在在宿舍用的是联通的网络(广州联通,50Mbps). 之所以在南方还选择联通的原因是想着在直连的情况下去日本等亚洲国家的速度会比电信好, 事实也的确是这样(非高峰时段 100ms 以内).

但是吧,不知道是联通特别关照我还是出国路由抽风, 针对国外 IP 的连接不定时会全部被阻断 (港澳台都断,妈个鸡), 几分钟后恢复正常. 我 IW4x(ID: YooooEX,来玩耍呀) 一个服务器都找不到, 这还能玩耍?

需求有了, 接下来就是要怎么解决的问题了.

想法

既然国外连接都会被阻断, 那就只能在国内弄个中转跳板了.
  • 加速器

pass poor

  • 国内VPS中转

现在深港/沪日的 IPLC 价格其实还好, NAT VPS 一个月能控制在 100 以内, 就是流量和带宽余量都很捉急, 而且就为了这个似乎有点浪费啊 poor

  • 家宽中转

家里的电信宽带办的时间也是挺久的, 所以拨号有外网 IP, 即使在升级过多次套餐后也依然如此(现为 200Mbps / 30Mbps uplink). 那不就可以玩耍了? 又不是没当过高 Ping 战士…

对于 NAT 网络, 2018年底三大运营商已经在很多地方配置和开放了 IPv6 路由, 这使得以往部署个人服务最大的门槛 - 公网IP 被消除了. 只要你的路由支持 IPv6 并且正确下发配置(我这边是无状态,使用DHCPv6-PD分配地址), 在路由后的设备都是可以获取到公网 IP 的.

不过随着 Ipv6 的普及, 越来越多未被正确配置隔离的设备会被直接暴露在公网上, 到时又是黑产丰收的季节了.

设备选择

本来想的是用 Raspberry Pi 3b+ 来做服务器的, 后来算了一下成本:

  • 开发板: 200+
  • 外壳+散热+电源+好SD卡: 200+

emmmm,这价格再加点都能捡套 3317u 的平台了,而且 3b+ 的有线走的USB通道, 感觉 300Mbps 的吞吐量在未来一两年内就不太够用了.

在纠结是选择 x86 还是 3b+ 的过程中, 我在网上和各个论坛中游荡, 当逛到恩山时,想着更新下路由固件的我看到了跑路讯的两个设备: 斐讯N1斐讯T1, 被其性价比折服.

具体硬件配置:

T1N1
CPUAmlogic S912(b?), 8-Core Cortex-A53, 1.5GhzAmlogic S905D, 4-Core Cortex-A53, 1.8Ghz
GPUMali-T820 MP3Mail-450
RAM2G2G
Storage16G EMMC8G EMMC
NetworkBT4, 802.11 n/acBT4, 802.11 n/ac
InterfaceHDMI * 1, USB * 1, 100M Ethernet * 1, AV * 1HDMI * 1, USB * 2, 1000M Ethernet * 1

配置上来说是 T1 比较高, 但是 T1 的有线是 100M 的, 而且 USB 接口也比 N1 少一个, 最后还是选了 N1.

目前 N1 在咸鱼上 80 左右就能收到,而 T1 还是要小一百的,怎么选择就看你自己的需求了.

准备

  • USB 双公头线
  • USB 键盘和显示器(HDMI, 其他接口需转接)
  • 电脑
  • 正常U盘 (8G+)
  • Win32 Disk Imager: 镜像烧录工具,你也可以选择自行选择工具. 下载地址
  • ADB(Android SDK Platform Tools): Android Developers
  • Armbian 镜像: 下载地址 (N1 选择 S905,T1 选择 S912)
  • 降级分区: Mega/百度云 (提取码: n21w)

将东西都准备好之后就可以开始弄了.

设备降级

由于我的 N1 到手就是官改的版本, 自带 root, 所以我是直接在终端里面开启网络ADB的

1
2
3
4
su
setprop service.adb.tcp.port 5555
stop adbd
start adbd

原版系统请参考下文

在N1的主界面的 固件版本 点击4次,会看到adb打开的提示

ref1

开启后连接即可

1
2
3
4
5
adb connect ip-address
# adb 连接默认端口是5555,如果使用自定端口
# adb connect ip-address:port

adb reboot fastboot

等设备进入 Fastboot 模式后, 用双公头连接 N1 靠近 HDMI 的 USB 口和电脑

1
2
3
fastboot flash boot boot.img
fastboot flash bootloader bootloader.img
fastboot flash recovery recovery.img

刷入分区后重启

1
fastboot reboot

烧录镜像

解压镜像, 打开 Win32 Disk Imager, 选镜像和U盘, 搞定

烧录完成后,进入新显示的磁盘(Boot),修改 uEnv.ini

1
2
3
4
; meson-gxl-s905d-p230.dtb ---> N1
; meson-gxm-q201.dtb ---> T1
dtb_name=/dtb/meson-gxl-s905d-p230.dtb
...

修改完毕后弹出U盘.

安装

将显示器和键盘连接到 N1, 将U盘插入到 N1 靠近 HDMI 的 USB 口, 然后进入更新模式

1
adb reboot update

设备重启完毕后,你应该进入 Live CD 了, 默认账号密码是 root1234

进入系统后, 在 /root/ 目录下有一个名字叫 install-22018.sh 的文件, 运行并根据提示配置 Armbian, 等待安装完毕

1
2
3
4
5
./install.sh
...
...
# reboot 重启设备
# poweroff 关闭设备

关闭或重启设备时将U盘拔出,就可以进入安装到 EMMC 的系统了.

如果要配置和使用无线可以用 nmtui, 至少还有个界面看

如果没有公网 IP 可以使用 Frp 等工具来打洞: Frp

有公网就直接上 DDNS 吧,我使用的是 CloudFlare, 一个脚本加定时任务就能搞定:

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash

localIpv6=`ip -6 a | grep global | awk '{print $2}' | awk -F '/' '{print $1}'`

echo "ipv6 is: $localIpv6, updating to CloudFlare..."

curl -X PUT https://api.cloudflare.com/client/v4/zones/$zone/dns_records/$domain \
-H 'Content-Type: application/json' \
-H 'X-Auth-Email: [email protected]' \
-H 'X-Auth-Key: yourapikey' \
-H 'cache-control: no-cache' \
-d '{"type": "AAAA","proxied": false,"name": "example.com","content": "'$localIpv6'"}'

crontab 加个任务

1
# */5 * * * * sh /root/ddns.sh > /dev/null

其他玩法就慢慢发掘吧, 这和正常的 Linux 并没有多大的区别. 说起来这是目前我玩过最大内存的 Linux 设备了…

如果你对 Armbian 不感冒的话, 这里也有其他系统可以玩: phicomm-n1