Mac下给斐讯N1盒子刷机Linux系统Armbian

垃圾的校园网同时只能有一个设备在线,寝室一堆米家的设备,账号用在路由器上了,而且是开启了断线自动重连,在实验室上网就是一个问题了。

不过好在学校的IPV6服务不需要验证,还很快,之前的做法是找一台主机上面开了个某不可描述的软件,所有流量从国外绕一圈,但是电脑上要设一堆代理,像spark这样的程序还不支持设置代理,就很麻烦。最近发现了斐讯N1,瞬间种草啊。千兆网口,双频无线,2G内存,A53的CPU是差了那么一点,但是做路由器足够了,关键功耗贼低呀(虽然丢实验室不用掏电费)。

配置

外观

目前只有某多多有货,80包邮,包装薄都没撕开,外观看起来很喜欢的样子。

固件降级

下载2.19版本固件

对刷机这块不太懂,据恩山上帖子所说,2.19以上版本线刷模式有点问题,我拿到的N1版本是2.27,所以需要先降级。

首先要下载2.19版本的固件,密码是nzwy53,为了避免分享被取消,我在OneDrive留了个备份。解压后可以得到四个文件。

开启adb调试

如果电脑上没有装过adb的话,可以通过以下命令来安装。

1
brew cask install android-platform-tools

Windows 系统可以在官方网站下载

给N1接上显示器(HDMI接口),用双头USB刷机线连接电脑和N1盒子,接上鼠标(鼠标建议接在远离HDMI的那个USB口,原因后面说),插上网线(断开网络连接,避免自动升级),然后通电。

进入系统后可以看到如下界面,在固件版本这一行字上用鼠标连点四下,可以看到有一个很小的文字弹出,显示adb已开启。

开启线刷功能

进入fastboot模式

找到N1盒子的ip地址,然后在电脑上执行以下命令进入fastboot模式

1
2
3
4
5
adb connect $N1_IP

#可以通过 adb devices 命令查看已连接设备

adb shell reboot fastboot

$N1_IP换成N1的ip地址

刷入boot等固件

等N1重启后,输入以下命令来把2.19版本的固件刷入到N1上。注意要一一对应,不要直接复制粘贴,并且后面的固件地址要写对,不然会被刷成砖哦。

刷成砖哦。

1
2
3
4
5
fastboot flash boot boot.img

fastboot flash bootloader bootloader.img

fastboot flash recovery recovery.img

等待完成后,重新一下。

1
fastboot reboot

重启之后固件版本看上去没有什么变化,(据说)是因为我们只是降级了固件,其实已经刷成功了。

降级的时候不会降版本号,2.28降级后还是2.28。就好像给手机刷机刷入第三方recovery但原系统不会变一样。

这时候刷机线还是要一直插着的

刻录系统盘

Armbian镜像下载

斐讯N1盒子是arm架构的,所以x86的镜像不支持,可以使用Armbian,有debian和ubuntu系统,可以在这里下载镜像。

网盘下载的东西看起来不是很靠谱的样子,但是根据架构不同,支持的镜像也不一样,搞不清它们之间有什么区别,所以还是屈服了orz

有很多版本可以选择,可以根据自己的爱好选,随着时间流逝,版本也会变,不过听说5.44版本以下开启热点会有问题,所以尽量选高一点的。

我是直接选择了最高版本的5.89,然后要选择S9xxx,接下来就可以根据自己喜好下载了,平时一般debian用的多,所以选了无桌面版的debian,Armbian_5.89_Aml-s905_Debian_buster_default_5.1.0_20190617.img.xz,下载完之后,解压。

刻录启动盘

找一个U盘,因为N1的USB接口是2.0,所以有的U盘可能会不支持。

Windows上刻录U盘可以用UltraISO或者是Win32DiskImager,Mac下直接用dd就行。

首先通过命令diskutil list来确认你的U盘盘符,一般是/dev/disk2,如果不是的话后面的命令记得对照着改。

然后取消挂载

1
diskutil unmountDisk /dev/disk2

使用dd命令把img镜像文件刻录到U盘中

1
sudo dd if=~/Downloads/Armbian_5.89_Aml-s905_Debian_buster_default_5.1.0_20190617.img of=/dev/rdisk2 bs=1m

别急着拔U盘

修改dtb文件

因为具体的型号众多,需要根据机器型号来指定对应的dtb (Device Tree Blob)文件。

在U盘根目录下可以找到一个uEnv.ini文件,将meson-gxl-s905x-khadas-vim.dtb换成meson-gxl-s905d-p230.dtb

5.62后的版本:修改根目录下的uEnv.ini文件,将meson-gxl-s905x-khadas-vim.dtb换成N1对应的meson-gxl-s905d-p230.dtb
之前的版本:复制dtb/meson-gxl-s905d-p230.dtb到根目录,并重命名为dtb.img

启动新系统

接下来一步是考验你身体灵活性的一步^_^,教程里说不能直接把U盘插到运行中的安卓系统中,会破坏启动盘文件。

第一步:把鼠标拔下来,刷机线别拔。这块需要注意的是要留出离HDMI接口近的那个接口,因为实践中发现只有这个USB可以加载U盘里的系统。
第二步:在电脑终端上输入adb shell reboot update,别急着回车。
第三步:一只手准备敲回车,另一只手准备好插入U盘,先重启设备,然后另一只手再以迅雷不及掩耳响叮当之势在黑屏的那一刹那把U盘插进去。

如果没有进入Linux系统,请重试。甚至可能要重刻录U盘。

如果成功进入新系统,恭喜你。

通过 ssh 连接进Armbian系统,默认账号是root,密码是1234,需要先修改默认密码。

欢迎页面

进入成功之后就不需要刷机线了。

把Linux系统写到N1

现在已经有了一个运行着Linux系统的N1盒子了,但是一直插着U盘总是很麻烦,我们可以把U盘里的系统移到斐讯N1盒子自带的EMMC存储中去,这样就可以脱离U盘使用了,而且重启也不需要U盘来引导。

首先要备份一下EMMC原本的文件,这样万一玩腻了,还能刷回去。

输入ddbr,然后选择b,后面全部同意,备份的时间有点久,可以出去喝杯茶啥的。

(备份是放在U盘里的,别删了。这个我是咋知道的呢?为了确认流程,我又刻录了一次镜像,后来想刷回去的时候发现备份不见了。。。)

当前目录下有一个install.sh文件,执行它就可以了,需要等几分钟。

大概看了一下内容,基本就是把U盘里有用的文件都拷贝到EMMC上了,这要得益于Linux一切都是文件的特点。

下次重启就可以单独用盒子启动了,不过记得提前把U盘拔了。至于怎么拔出来,可以在重启的瞬间拔出来,可以先断电然后拔出来,也可以直接拔,看你的心情。

至此,一个运行着Linux系统、可以单独运行的小主机就完成了。(又多了一台吃灰神器)

跑个测试脚本看看,IO一般,不过比上次买的蜗牛星际的SSD要好很多了。

测试

路由器改造

本来是打算参考树莓派开启热点的脚本来配置的,但是一直不成功,后来发现armbian系统自带了初始化工具,直接用自带的工具就行。

在终端输入armbian-config,然后选择Network,然后Hotspot,等待一段时间(需要安装dnsmasq等程序)后返回、退出即可。

配置无线热点

这时候,就能看到多了一个名为ARMBIAN的Wi-Fi热点了,密码是12345678,可以在/etc/hostapd.conf文件中修改相关配置。

此外dnsmasq默认配置里使用了8.8.8.8作为dns解析,可能会有影响,在/etc/dnsmasq.conf文件里删除server=这一行然后重启服务。

实际测试的时候,发现首次连入很慢,重启之后就正常了。

最后,感谢恩山大佬们的辛勤奉献。

参考

SSH配置密钥登录以及简单的安全设置

在树莓派上搭建全局透明代理网关

N1玩法总结整理——刷入电视盒子系统或者Linux系统

斐讯N1刷Armbian Linux做服务器

斐讯 N1 刷入 Armbian 系统

N1通过U盘跑LINUX(armbian)的教程

斐讯N1和T1降级关键分区恢复线刷功能

利用 Dnsmasq 部署 DNS 服务