Chimera Linux折腾记

2025-03-29 17:16

这篇文章记录一下自己是如何在一台十年前的MacBook Air上折腾Chimera Linux的.

先说一下为什么, 主要是我自己用过的发行版虽然很多, 但是都有了很多很多的历史包袱. 我想看看现代一点的发行版能够做到什么程度. 从介绍来看, Chimera Linux的技术路线比较讨喜. 比如没有使用systemd, 比如使用了FreeBSD里面的userland.

具体的折腾算是一波三折. 首先比较顺利地下载镜像刷到U盘然后在这台MacBook Air上U盘启动进系统一气呵成, 让人感觉有点不现实. 不过再仔细一看, 发现硬盘没成功加载, 蓝牙虽然能用但是无线网卡却没识别. 不算太圆满的开局, 不过还能接受, 至少比我之前折腾FreeBSD要顺利得多了.

然后开始解决硬盘的问题, 拿着报错查了下, 发现是一个内核参数的问题, 需要在内核启动时加上intel_iommu=off, 不算什么特别的, 需要重启电脑而已, 而且每次进系统之前都要记得去grub里面改, 否则硬盘就不能识别. 正确的修改方式是编辑/etc/default/grub, 不过对于LiveCD, 这种做法是无效的.

然后就是更纠结的无线网卡的问题. 症状是/dev/net下面没设备文件. lspci看了下, 是BCM4360, LiveCD中默认加载的b43bcma模块都没法带动这个卡. 查到一些文档, 比如这个, 于是要编译内核模块了. 本想在Live CD环境中编译, 这样unknown会少很多, 不过repository里面的内核版本和Live CD里的内核版本有区别, 于是我就打算先安装系统, 然后再去解决驱动的问题.

我按照官方文档分好了区(ZFS+EFI+boot), 挂载, 然后执行chimera-bootstrap -l /media/root来将LiveCD中的内容复制到新分区中去. 这一步最后会有报错, 记得好像是说无法跨设备来创建硬链接. 我猜是这个脚本/命令没有处理好这种细节, 于是就忽略了. 后面开始执行apk upgrade --available时速度很慢, 因为网络走的是手机热点通过蓝牙来传递数据, 所以带宽很小. 我升级了一群包后直接Ctrl-C了, 后面正常安装grub后重启没问题, 但是进不了X, 这个时候蓝牙服务也没打开. 这个比较麻烦, 因为之前从来没有处理过命令行下没网络修蓝牙的情况, 而且即使蓝牙修好了还需要通过蓝牙连接到手机才能上网. 于是重启, 再次祭出LiveCD后挂载zfs进去修了. 记得不错的话, 要么是sddm没安装, 要么是sddm-dinit没安装, 安装后就都能正常工作了.

当然当然还要继续编译网卡驱动呢. 参考了这个SlackBuild, 把这个脚本稍稍改了下(gist), 就能正常编译了.

当然现实中才没这么简单呢, 先要装clanggmake, 然后要去装/更新linux-stable{,dev}, 最坑的是还要安装wireless-regdb这个包. 原始脚本中应该是使用gcc来编译的, 而Chimera Linux是clang. 我懒得去找环境变量, 直接将clang软链接成了gcc, 编译也没啥问题. 编译成功后可以得到wl.ko这个内核模块文件, 用modprobe就能正常加载, 不管是modprobe -r还是加黑名单, 都能让这个网卡用我们刚编译的wl.ko来启动(PCI信息里也能看到), 但是我的/dev/net里仍是只有一个手机共享热点的tun设备. 最后是死马当活马医似的将dmesg的报错(加载regulatory.db出错)查了下, 发现真是缺少数据库的缘故. apk安装对应的这个软件包后就好了.

最后加上一点小杂感:

我自己会继续跟进这个发行版, 目前来看还是有一定潜力的, 作者的更新也很勤快.