2025 年,Linux 内核正式移除了 AppleTalk 网络协议的近 4000 行代码。这个决定并不突然——苹果自己在 2009 年就已放弃 AppleTalk,但真正加速退役的,是近期涌入内核的大量 AI 生成补丁让维护这段"遗产代码"变成了不可承受的负担。Jakub Kicinski 提交的移除补丁,为这段即插即用网络的历史画上了句号。
AppleTalk 曾经为什么重要
1985 年,AppleTalk 随 Macintosh 一起问世。它的杀手特性是零配置联网:设备接入 LocalTalk 电缆后自动分配节点号、自动发现邻居,用户不需要手动设置 IP 地址或子网掩码。在那个还在手动敲 IP 配置的年代,这种即插即用体验相当惊艳。
AppleTalk 协议栈涵盖从物理层到应用层的完整体系——DDP(数据报传输协议)负责寻址和路由,ATP 提供可靠传输,AFP 支持文件共享,PAP 驱动打印。整个生态围绕"插上就能用"的理念构建,对早期局域网普及功不可没。
但代价也很明显:AppleTalk 的地址空间只有 16 位节点号 + 16 位网络号,路由效率低,带宽开销大。当 TCP/IP 在 90 年代成为事实标准后,AppleTalk 的衰落已成定局。苹果在 Mac OS X 10.6(2009)彻底移除了原生支持。
AI 补丁洪流成了最后一根稻草
Linux 内核的 AppleTalk 代码已经多年没有实际用户,但一直留在树里"以防万一"。问题出在近期的 AI 生成补丁浪潮上——大量自动化工具向内核提交格式合规但内容可疑的 patch,维护者不得不逐条审查。对于像 AppleTalk 这样无人使用、无人测试的子系统,每一条 AI 补丁都是纯粹的维护噪音:没人能验证它是否真的有效,因为根本没有运行环境。
Kicinski 的判断很直接:继续维护一段既无用户也无测试覆盖的代码,在 AI 补丁轰炸下已经不合理。与其持续消耗审查精力,不如干脆移除。近 4000 行代码随之从 net/appletalk 目录和相关配置中删除。
这个决定折射出一个更广的趋势:内核维护者正在对"死代码"采取更激进的态度。当审查资源有限时,保留无人使用的子系统不再是谨慎,而是浪费。
检查和清理你的环境
如果你的系统还在运行老旧内核,可能仍有 AppleTalk 模块残留。以下命令可以帮助你确认和清理:
# 检查当前内核配置中是否还有 AppleTalk 相关选项
grep -i APPLE /boot/config-$(uname -r)
# 查看是否有已加载的 AppleTalk 模块
lsmod | grep -i appletalk
# 检查内核源码树中是否还残留 appletalk 目录(如果你自行编译内核)
find /usr/src/linux-headers-$(uname -r) -path '*appletalk*' -type f
# 如果你在编译自定义内核,确保关闭相关选项后重新编译
# 在 .config 中确认以下行不存在或设为 n:
# CONFIG_ATALK=n
# 然后重新编译安装
make oldconfig && make -j$(nproc) && sudo make modules_install install
如果你维护的是嵌入式或工业系统,曾依赖 AppleTalk 与老旧 Mac 设备通信,现在需要评估替代方案:
- 文件共享:迁移到 SMB/CIFS 或 NFS
- 打印服务:改用 IPP 或 LPD
- 路由和寻址:完全依赖 TCP/IP,用 DHCP 实现自动地址分配
# 一个简单的 DHCP 自动配置示例(替代 AppleTalk 的零配置理念)
# /etc/dhcp/dhcpd.conf 片段
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.100 192.168.10.200;
option routers 192.168.10.1;
option domain-name-servers 192.168.10.1;
# 设备插上即可获得地址——用 DHCP 实现类似 AppleTalk 的即插即用
}
退役的启示
AppleTalk 的移除不只是删代码,它提出了几个值得思考的问题:
-
AI 补丁改变了维护成本结构。过去保留死代码的代价是"占空间",现在代价是"消耗审查时间"。维护者需要更果断地裁剪无人使用的子系统。
-
零配置理念没有死,只是换了载体。AppleTalk 的即插即用思想今天体现在 mDNS/Bonjour、DHCP、IPv6 自动配置中。协议会退役,好想法会迁移。
-
遗留系统的迁移窗口是有限的。苹果 2009 年停支持,Linux 2025 年删代码——中间有 16 年的过渡期。如果你的系统依赖某个正在衰退的协议,不要等到最后一刻才动手。
对于绝大多数开发者,这个变更不会有任何直接影响——你大概率从未用过 AppleTalk。但它提醒我们:内核不是博物馆,每一行代码都需要有人愿意维护。当维护者说"够了",那就是真的够了。