TN3399开发板折腾记录
0x01 背景
需要一个能支持GICv3的设备。春节时,在安卓旧手机上折腾了一圈,买了2个旧手机(红米2、1加3T),都不行。
- 红米2,可以通过开源的hyp固件[https://github.com/msm8916-mainline/qhypstub/issues],实现KVM。但是对应的芯片是MSM8916的,只支持GICv2。
- 1加3T,芯片MSM8996是支持GICv3的。但是对应的hyp固件相关信息没有开源,所以无法支持虚拟机。
- 板子是在闲鱼上买的。300块,包邮。
- 到手后发现内核版本是4.7的Armbian。不是我需要的5.x的。
所以就开始折腾了。记录下折腾的过程,希望能帮到各位同学。
以下操作过程中最好有个显示器或者串口设备,看不到输出的话,折腾效率很低。
0x02 换内核
内核在https://github.com/lanseyujie/tn3399_v3/。
直接使用编译好的。按照板子的刷机流程,刷好了之后发现Wifi网络不稳定。
详细教程在这个论坛中也有https://www.right.com.cn/forum/thread-4033942-1-1.html。
0x03 Wifi问题
具体表现是,在同网段的其他主机去ping它。出现超高延迟,达到200ms,还会丢包。
开始以为网卡的天线太小了。买了外置天线,接上也不行。开始怀疑是网卡的问题。
- 下载5.8.1的内核
- 准备内核编译环境
- 配置内核
具体的配置过程,网上有教程。我使用的USB无线网卡是Realtek 8188CUS型号的。使用的内核中没有默认编译支持。需要自己开启。需要打开CONFIG_RTL8XXXU_UNTESTED=y
选项。
在内核目录下,通过make M=drivers/net/wireless/realtek/rtl8xxxu modules
,编译需要的驱动目录。
最终编译好了,加载驱动时,提示没有固件。从这里找到了固件,下载安装好。
1 | wget http://ftp.de.debian.org/debian/pool/non-free/f/firmware-nonfree/firmware-realtek_20190114-2_all.deb |
都安装好了。设备probe异常。提示如下错误:
1 | Failed to write block at addr: 1080 size: 0080 |
后来发现是插的USB口不对。它不支持USB3,换了USB2的口就可以了。
更换之后,网络就非常稳定了。
1 | --- 192.168.31.111 ping statistics --- |
0x04 更新内核
默认的内核选项有一些不满足需求。经过修改后,更新到/boot下。在/boot/extlinux/extlinux.conf中添加一个启动项即可。Image和dtb可以从新编译出的内核目录拷出,github上有说明。
1 | default kernel-5.8.1 |
反正我是更新了内核之后,可以在上面跑k8s的。这样直接操作是有点风险的,准备好重新刷系统。我是把内核的目标挂载在另外一个SD卡中,重新刷系统后,更新内核还算比较快。
0x05 小结
只能说ARM开发板折腾是需要点基础和毅力的,USB网卡驱动死活加载不成功时,都 一度想放弃了。