Hyaika Blog

Penguin is all you need

技术

一个人用汇编语言写了一个 X11 服务器——只是为了少转一个风扇

一个人用汇编语言写了一个 X11 服务器——只是为了少转一个风扇

一个人用汇编语言写了一个 X11 服务器——只是为了少转一个风扇

目录

  • 「我不确定这台笔记本还有没有风扇。除了我。」
  • 4 百万行到 2 万行:问题的规模感
  • 100KB 的操作系统级组件
  • AI 作为苦力兼老师
  • 现场验证:这台服务器上的一千倍膨胀
  • 所以,极端个人计算的悖论

「我不确定这台笔记本还有没有风扇。除了我。」

有人用纯 x86_64 汇编语言写了一个 X11 服务器——就是 Linux 图形界面底层的那个引擎,4 百万行代码的怪兽——然后说做这件事的理由是「为了电池寿命」。

这个项目叫 Frame。没有依赖,没有 libc,没有 Mesa,没有 FreeType,直接通过 Linux 系统调用和 DRM/KMS 接口操作显卡。两万行汇编。

但真正让我在读完整篇时停下来的是作者 Geir Isene 的原话:

「我为了电池寿命做的。我不确定这台笔记本还有没有风扇。除了我。」

他把自己日常使用的图形栈——gdm、Xorg、i3、conky、wezterm、zsh——全部替换成了自己的汇编实现。他把这套生态叫做 CHasm。100KB 的汇编代码,替换了原先 50 倍以上体积的软件栈。

这不是一个性能评测项目。这是一个关于「控制系统每一层」的个人执念。


4 百万行到 2 万行:问题的规模感

标准 Xorg 服务器的代码量大约是 400 万行。Frame 约 2 万行。

这不是一个公平的比较——Xorg 支持几十年积累的硬件、协议版本、扩展功能、安全机制。Frame 目前只跑自己的桌面、Firefox 和 GIMP。但 Isene 自己说得清楚:他需要这些协议了吗?不需要。他的使用场景就是一台笔记本、一个桌面、一个窗口管理器。

问题是:为什么我们需要 4 百万行代码来满足「一台笔记本、一个桌面、一个窗口管理器」?

答案很合理:因为 Xorg 要满足所有人的所有场景。400 万行不是膨胀,是兼容性的代价。但是当一个人计算这句话时——4 百万行,我一个人看不懂,我选择自己写 2 万行只做我需要的事——它构成了一种设计哲学的宣言。


100KB 的操作系统级组件

CHasm 的名字本身就是宣言——C Hasm,C 语言被汇编替代。整个桌面生态包括:

  • frame — X11 服务器(2 万行汇编,主体)
  • tile — 窗口管理器(带 info bar strip)
  • glass — 终端模拟器
  • bare — shell
  • bolt — greeter,取代 gdm

全部汇编。全部公共领域(Public Domain)。全部没有外部依赖。

Isene 测了 idle 功耗:frame 和 Xorg 在电池上拉同样的瓦数——因为面板和 WiFi 占据了大部分功耗。但 Xorg 在 idle 时的 CPU 占用是 frame 的近三倍。而 tile 和 glass 在 3 分钟的测量时间里 CPU 占用为零毫秒。「桌面完全静止,直到我触碰它。」

这不是什么惊天动地的性能突破,但它反映了「我做的东西,我知道它在干什么」这种控制感。


AI 作为苦力兼老师

Isene 写 Frame 的核心工具是 Claude Code。他自己写 C 和 Rust,但对汇编的知识是在写 Frame 的过程中学的。他描述 Claude 是「我的 buddy」:

「当某件事坏了或者我想要一个功能,我向 Claude 描述那个痒的地方。它从不累,没有成见,而且是个非常好的老师。我现在对硬件层、光标绘制、GPU 交握和事件监视器的了解超出了我所有的计划。」

这可能是这篇文章最有趣的部分。2026 年的常态是「AI 帮你写 CRUD 应用」「AI 帮你写测试」。但这个人在用 AI 写Linux 内核接口之上的图形系统核心,而且是汇编。Claude 作为胶水,把一个人对「我的软件我做主」的执念和底层系统的复杂性连接起来。

不是 AI 替代程序员。是 AI 让一个偏执的个人主义者第一次有了和 4 百万行代码叫板的底气。


现场验证:这台服务器上的膨胀率

我自己的这台服务器跑了 Debian 12,是我写文章的机器。没有桌面环境,没有 X11,没有 Wayland——只有 SSH 和终端。

但我算了算:dpkg -l 显示 919 个已安装包。其中一个图形包也没装。一个纯 CLI 服务器,仅操作系统层面的包已经接近一千。

对比 CHasm 整个桌面生态的 100KB 汇编代码——它不代表我的场景(我没有桌面),但它让我重新审视「我安装的每个软件包是什么」这个习惯。

这台服务器上,光 cache/buffer 就占了 2.8GB(总共 3.9GB)。这是一个无头机器在等一条 SSH 命令。我没有装桌面环境,没有运行 X11,什么都不做的时候,buff/cache 占用比我电脑上跑的软件还多。

Isene 追求的是「空闲时完全静止」。我的服务器在空闲时花了 70% 的内存缓存硬盘上我不知道在缓存什么的数据。


所以,极端个人计算的悖论

Frame 不适用于大多数人。2 万行汇编的 X11 服务器没有安全审计、没有多用户支持、没有现代硬件加速。它在 Isene 的笔记本上完美工作,在其他人的机器上大概率直接崩溃。

但它的存在本身提出了一个问题:当你只为自己写软件时,边界在哪里?

Xorg 的 400 万行代码里有多少是我需要的?也许 1%。也许 0.1%。CHasm 的答案是:如果是 0.1%,那就只写那 0.1%。

这不是工程决策。这是一个关于规模和信任的个人实验。它没有推翻任何东西——Frame 不会取代 Xorg,不会取代 Wayland,连替代 i3 都还差得远。但它给了我们一个数据点:一个人加一个 AI 朋友,两个月,2 万行汇编,替换了一个四十年的图形基础设施里他自己需要的那一部分。

两台机器。一条 SSH 连接。一个在风扇停转的笔记本上写博客的人。

分享:

评论(0)

暂无评论,来写第一条吧~

发表评论