前言
我的pi 3b买来一年半了,之前一直跑的是raspbian(真的难受) 软件包真的旧。自己滚到raspbian testing呢,pi的专有包都还是stable的。混源一下很容易就滚炸(大炸过一次)。我之前都快几个月没敢滚那个系统了(懒爆)
然后好不容易想到要改换alarm了,由于太懒又拖了好久。这次能下定决心,其实也部分因为玩了灵车n1,对alarm有点了解了。
接下来是正题
pi3/3b/3b+在archlinuxarm.org上是有官方支持的。(然而这官方支持真辣鸡)
因为pi3是64bit的博通破u 所以aarch64和armv7的alarm都能跑。然而官方的安装指南和wiki其实大部分都是写给armv7的,除了少数是架构通用的外,真正给aarch64的就只有最下方这么点。
AArch64 Installation
This provides an installation using the mainline kernel and U-Boot. Use this installation only if you have no dependencies on the closed source vendor libraries shipped in the ARMv7 release. This installation has near full support for the device, including the VC4 graphics.
Follow the above instructions, substituting with the following tarball:
http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-3-latest.tar.gz
不过对于一个从armv7 only的raspbian好不容易逃出来的人来说,继续用armv7显然是不可接受的。于是aarch64大法好啦。
于是开始follow installation guide啦。alarm写进卡里之后,的确能正常启动,sdio的无线网卡驱动完全没问题,然而11n实在太慢,好在我之前就有个mt7610u的usb wifi dongle。
关于这个dongle:
我拔下来插在archlinux的x86机子上试过,是能直接认出来的,也就是说新内核是有驱动了。插在pi上却没反应。dmesg里看了看,当时天真地估计是只有的模块没编译,自己编译一个内核就好了,还想着找alarm的人看看能不能加两个kernel config。
之前这个dongle一直是插在pi上,用的是这个驱动。alarm源里也有dkms包,叫dkms-mt7610。不过呢我在alarm上试过了,已经不能编译了(源码估计要改下 gcc报了两个Werror)。之前我的rpi是万年4.9内核,手动mark hold不给更新的,因为每次更内核这个驱动都要重新make,保不准哪天就彻底boom了。
回到正题,既然alarm跑起来了,就装点日常包,顺便装个de(xfce)。结果安装过程是painfully slow 简直没法忍受。(顺便提醒千万别忘装xorg driver xf86-video-fbdev
或xf86-video-fbturbo-git
否则dm似乎完全看不出问题,起了de xorg玄学EE)
我起初想是sdio的辣鸡网卡(802.11n only)还有这sd卡渣io的锅,后来幸亏Neo_Chen在ot群里一句话把我点醒: “但 Mainline 缺 CPUFreq” 然后我检查了一下 发现这alarm的linux-aarch64 kernel还真的是如Neo_Chen所说,万年600Mhz。
于是我考虑换内核。alarm给pi3的是linux-aarch64然而600mhz… linux-raspberrypi是armv7的不能用。aur有个linux-aarch64-raspberrypi-bin然而看了看还不如自己编译。Neo_Chen告诉我有个gentoo大佬的config可以参考一下。我就很激动地花了不少时间抄alarm的PKGBUILD 捏了一个4.14的内核包出来。
用distcc编译的时候才发现一个严重的问题–4.14的内核根本没有CONFIG_MT76x0U。mtk家族只有mt7601一个。
查了一下发现除了mt7601很早就进kernel了,其他都是4.19 刚!刚!进!的!
于是,想了不少办法。一个是折腾之前那个旧驱动,看看能不能修好;另一个是把新的驱动backport进4.14。
然而就是没看到raspberrypi/linux其实是有主线分支的。大骂自己几句之后,从4.19.y分支弄来源码,改了改再打了个包。
一万年之后终于完成了编译,放到pi上安装一下,嗯cpufreq、mt76好了,但又碰到一个坑 https://github.com/raspberrypi/linux/issues/1210
使用过程中发现 1( 好像所有的gpio库都坏了,直接操作gpio sysfs是可以的 2( sdio那个brcm的wifi彻底坏了(缺CONFIG_BRCMFMAC_SDIO) 3( mt76的驱动可能刚刚进内核,不是很稳定。
不过又不是不能用,这两天我再看看能不能修好brcm,mt76估计不是我能修的。
后记
晒一张图
折腾了两天,到这里呢,这个alarm基本算是能用了(其实还没) 。说实话,真的比折腾n1还累啊。我要这rpi又有何用 (掀桌
2018年12月16日更新:
brcmfmac由于未知原因仍然修不好,mt76也还有不少小毛病,不过又不是不能用。