作为一个转型中的Apple生态App开发者,虽然大多数时间主要用Mac系统进行开发,但考虑到作为多年的Linux爱好者和使用者,近些时间关注到DHH搞的Omachy,它使用了Hyprland这样一个比较新的dynamic tiling window manager,且基于Wayland,性能上还是不错的,让我想起来二十多年前在大学时代玩compiz时那种很fancy的感觉。
Omachy基于ArchLinux构建,因此本质上与ArchLinux同源,而我不再喜欢用别人深度定制的发行版,希望具备一定的自由度;另外我多年前已经从ArchLinux转换为Ubuntu,因此实际上ArchLinux我本身亦比较熟悉。 另外值得提一句的是,我更早是Gentoo用户,而Gentoo彼时不支持二进制软件包,我人生的很多时间花在了等待Gentoo portage更新编译系统上面。。。
因此我决定将自己的NUC从Ubuntu直接切换为ArchLinux,切换过程中我甚至保留了自己的Home目录,整体上切换非常顺利,而且Hyprland体验整体上来说还是非常棒的,具备非常好的响应速度;至于我一些依赖于Ubuntu 来构建的软件包,则可以通过docker环境来解决。
但最近在偶尔的使用过程中注意到,重启NUC后,经常性的出现WIFI无法连接的问题,只能通过强制将NUC的wifi模块iwlwifi重新卸载加载才得以解决。而经过查找与分析,最终才确认了原来是安装ArchLinux时, 为了访问网络,安装并启用了iwd这个服务,这个服务与我后来在Hyprland环境中安装使用的NetworkManager有冲突,出现了同时管理一块wlan网关的争用问题。
简单看了下iwd项目的介绍,看起来这个项目已经有8年多的时间,目标是实现一个不依赖于其他第三方library,仅依赖于Linux Kernel和C library这样一个更加完整性的无线网卡管理设备,其实NetworkManager是可以使用 iwd作为后端来配置无线网卡,但此时要求iwd自身不应该以服务运行,而是由NetworkManager来负责拉起进程来使用。说实话这个架构还不错,不过是不是可以更激进一点,直接拿go来写,不依赖CGO,搞个只跟Kernel通信的方案 ,会不会也是一种有意思的实现呢?
这可能是ArchLinux具备比较多选择的操作系统的一个典型问题,因此小记一篇,作为重新切换ArchLinux的一点记录吧。