如果把操作系统的发展史比作《三国演义》那么本文更像《三国演义》而不是《三国志》。本系列尝试用故事化的方式讲述 Unix、Linux、BSD、GNU、Windows、macOS、Android 等操作系统背后的发展历程。文中的人物、事件和技术演进都尽量参考公开资料但为了让故事更容易理解会适当简化一些历史细节也会加入作者自己的理解。它不是一篇学术论文而是一段程序员视角的技术故事。如果读完之后你产生兴趣愿意继续查阅官方资料那这篇文章的目的就达到了。引子第一次进入 Linux 世界的人通常都会懵如果你准备安装 Windows选择通常很简单Windows 11 家庭版Windows 11 专业版Windows 11 企业版。虽然版本不少但它们都叫 Windows。界面大致相同。软件基本兼容。更新也来自微软。但是当你准备安装 Linux 时画风突然变了。有人推荐UbuntuDebianFedoraArch LinuxLinux MintopenSUSEManjaroRocky LinuxKali Linux。继续往下搜索还会看到KubuntuXubuntuLubuntuPop!_OSGentooSlackwareAlpine LinuxNixOS。再搜索一会儿你可能会发现Linux 发行版似乎不是十几个而是几百个。初学者很容易产生一个疑问为什么大家不能团结一点只做一个 LinuxWindows 为什么没有联想 Windows戴尔 Windows游戏玩家 Windows程序员 Windows极简 Windows极客 Windows而 Linux 为什么像一棵失去控制的大树到处都在长新枝要回答这个问题首先要理解一件经常被忽略的事情Linux 最初并不是一个完整的桌面操作系统。第一章Linux 最初交付的只是一台“发动机”1991 年Linus Torvalds 发布 Linux 时完成的主要是Kernel也就是操作系统内核。内核负责什么大致包括管理 CPU管理内存驱动硬件管理进程提供文件系统在应用程序和硬件之间传递消息。它非常重要。但只有内核电脑仍然很难直接使用。你还需要Shell基础命令系统工具软件库编译器安装程序软件包管理器图形界面浏览器文本编辑器更新和维护机制。Linux 内核官方网站也明确提醒普通用户Linux Kernel 只是一个可用 Linux 系统中的组成部分普通用户需要下载的是一个完整的 Linux Distribution而不是单独下载内核。这就像Linus 造出了一台非常优秀的发动机。但是一辆能够上路的汽车还需要变速箱方向盘轮胎座椅仪表盘车灯车身。谁来把这些零件组装起来答案就是Linux 发行版。第二章什么叫“发行版”所谓 Linux Distribution翻译成中文就是Linux 发行版。这个名字听起来有些神秘。其实它做的事情并不难理解。发行版维护者会从不同的开源项目中挑选软件Linux Kernel GNU 基础工具 系统服务 软件库 软件包管理器 桌面环境 安装程序 默认应用 一个可以直接使用的操作系统然后他们还要负责编译软件处理依赖关系修复兼容问题制作安装镜像建立软件仓库推送安全更新决定软件版本制定升级路线提供文档和支持。所以发行版并不只是给 Linux 换了一张壁纸。它更像是一家汽车厂。大家都可以使用类似的发动机和零件但不同厂商会有不同的设计理念。有人想造家用轿车。有人想造越野车。有人想造跑车。有人想造卡车。还有人认为汽车不应该预装座椅用户应该自己选择。这大概就是 Arch Linux。第三章GNU 准备了零件Linux 补上了发动机在 Linux 出现之前GNU 项目已经开发了大量自由软件。例如GCCBashCoreutilsglibcGDBMake。这些工具已经能够组成操作系统的大部分用户空间。但是GNU 自己开发的 Kernel——GNU Hurd迟迟没有成为一个广泛可用的产品。Linux 出现后情况发生了变化。一边有 Linux Kernel。另一边有 GNU 工具和大量自由软件。于是有人开始把它们组合起来。一个可以真正使用的自由操作系统逐渐出现。GNU 官方将 Linux 描述为内核并强调内核需要和其他系统组件结合才能形成完整系统。但问题也随之出现了应该怎么组合有人说稳定最重要。有人说新版本最重要。有人说自由软件最重要。有人说普通用户能装上最重要。有人说服务器不需要图形界面。有人说没有漂亮桌面还叫什么操作系统于是不同的人拿着同一批零件开始组装不同的系统。发行版的故事就这样开始了。第四章开源世界最可怕的能力——我不同意所以我自己做在商业软件世界里如果你不喜欢某个功能通常只有几个选择忍着提交反馈等待厂商修改换一个产品。但是在自由软件世界里还有另一个选择Fork。也就是复制一份源代码然后按照自己的想法继续开发。Linux Kernel 和大量 GNU 软件采用自由软件许可证发布。以 GNU GPL 为例它保护的不只是“免费使用”还包括研究、修改和重新分发软件的自由。这意味着如果你不满意现有发行版的方向理论上可以拿走源代码重新组织团队再做一个版本。你可能觉得软件包太旧了。那就做一个更新更快的版本。你可能觉得安装过程太复杂了。那就增加图形安装器。你可能觉得默认桌面太难用了。那就更换桌面环境。你可能觉得这个系统装了太多东西。那就制作一个极简版本。你甚至可能只是觉得默认壁纸不好看。虽然只为换壁纸创建一个发行版多少有点夸张但从技术和许可证角度来说通常也不是完全不行。在开源世界里不同意见不一定只能变成争论也可能直接变成一个新项目。第五章最早的发行版其实是在帮大家“打包”早期安装 Linux并不像今天这样下载 ISO。制作启动盘。下一步。下一步。安装完成。当时的用户可能需要下载内核自己编译下载各种 GNU 工具处理不同软件版本手工配置文件系统解决软件依赖制作启动环境。这对普通用户来说实在太复杂了。于是有人开始整理这些软件我帮你把内核、工具和应用打包好你直接安装就行。这就是早期发行版存在的重要意义。后来发行版做的事情越来越多统一软件格式建立软件仓库管理依赖关系提供安全更新制定发布周期维护硬件支持建立开发者社区。发行版逐渐从一个“软件合集”变成了一套完整的工程体系。其中一些早期发行版直到今天仍然存在。例如SlackwareDebian。Debian 于 1993 年启动它从一开始就强调开放协作并逐渐形成了自己的社会契约、软件政策和社区治理方式。这说明发行版选择的不只是软件也是在选择一种组织方式。第六章不同的人对“好系统”的理解完全不同为什么已经有 Debian 了还要有 Ubuntu为什么已经有 Ubuntu 了还要有 Linux Mint为什么已经有 Fedora 了还要有 Rocky Linux原因很简单大家对“好用”的理解不同。1. 有人认为稳定最重要这类用户希望软件不要频繁变化升级不要破坏系统安全更新及时一台服务器可以运行很多年。Debian、Ubuntu LTS、RHEL以及一些企业级发行版都非常重视稳定性和长期维护。它们可能不会第一时间提供最新软件。但它们的理念是新不一定比稳重要。2. 有人认为最新技术最重要另一批用户希望尽快使用新 Kernel尽快使用新桌面尽快使用新编译器尽快体验新的 Linux 技术。Fedora 就比较接近这条路线。Fedora 强调与上游社区合作并积极采用新的自由和开源技术。它更像一辆技术测试车很多新技术会先在这里接受真实用户的检验。3. 有人认为控制权最重要还有人不喜欢发行版替自己做太多决定。他们希望自己选择桌面自己选择服务自己选择软件自己决定系统如何启动系统里不要出现不需要的东西。于是他们选择 Arch Linux、Gentoo甚至 Linux From Scratch。Arch Linux 强调简洁尽量减少不必要的修改并把更多选择权交给用户。Linux From Scratch 则更加直接它提供一套文档指导用户从源代码开始构建自己的 Linux 系统。别人安装系统是为了使用电脑。这批人安装系统可能就是为了研究怎么安装系统。4. 有人认为普通用户最重要Linux 很强大。但早期 Linux 的安装和配置门槛并不低。于是一些发行版开始思考能不能让不懂 Linux 的普通人也用上 LinuxUbuntu 就是在这样的背景下成长起来的。Canonical 组织了一批 Debian 开发者希望制作一个更容易使用的 Linux 桌面Ubuntu 至今仍然建立在 Debian 的基础之上。后来Linux Mint 又在 Ubuntu 基础上继续调整修改默认桌面优化传统桌面操作增加自己的系统工具降低从 Windows 迁移的门槛。于是一条很有意思的家族关系出现了Debian └── Ubuntu └── Linux Mint这三者都使用 Linux Kernel。但它们对目标用户、发布节奏和默认体验的理解并不完全相同。第七章很多发行版并不是从零开始的看到“几百个 Linux 发行版”很容易产生一种错觉难道有几百个团队各自从头写了一遍操作系统其实并不是。大多数发行版都存在家族关系。例如Debian├── Ubuntu│ ├── Linux Mint│ ├── Pop!_OS│ ├── Kubuntu│ └── Xubuntu└── Kali Linux另外一边Red Hat 系├── Fedora├── Red Hat Enterprise Linux├── CentOS Stream├── Rocky Linux└── AlmaLinux还有Arch Linux├── Manjaro├── EndeavourOS└── SteamOS 3很多新发行版不是重新编写 Kernel也不是重新创造所有工具。它们可能只是基于上游发行版重新选择软件增加自己的仓库调整默认配置改变桌面环境修改发布周期面向一种特定用途。所以Linux 的几百个发行版更像是几棵大树长出了大量枝条。而不是几百棵彼此完全无关的树。真正长期维护、拥有完整社区、软件仓库和工程能力的主流发行版其实没有想象中那么多。第八章桌面环境又让发行版数量翻了一轮Windows 的桌面界面由微软统一开发和提供。你可以修改壁纸和主题。但任务栏、开始菜单、资源管理器等核心体验仍然属于 Windows 的一部分。Linux 不一样。Linux 的图形桌面本身也可以独立选择。常见桌面环境包括GNOMEKDE PlasmaXfceCinnamonMATELXQt。于是即使大家使用同一个 Ubuntu 底层也可以出现Ubuntu → GNOMEKubuntu → KDE PlasmaXubuntu → XfceLubuntu → LXQtUbuntu MATE → MATE它们使用相近的软件仓库和系统基础。但桌面体验可能完全不同。这就像同一家汽车厂使用同一个底盘推出了家庭版运动版越野版轻量版。有人会问有必要给每个桌面都取一个新名字吗技术上不一定。但从社区组织、安装镜像、默认配置和用户定位来看独立命名确实更方便。于是发行版名单又变长了。第九章还有一些发行版只为做好一件事并不是所有 Linux 发行版都想成为通用桌面系统。很多发行版从一开始就只服务某一种场景。例如Kali Linux面向安全测试和渗透测试。它默认集成了大量安全工具。但这并不意味着它更适合日常办公。就像工具箱里装满了扳手和电钻并不代表它适合拿来当书包。Alpine Linux追求轻量和简洁。它经常被用于容器小型系统网络设备资源受限环境。SteamOS围绕游戏设备和 Steam 生态进行优化。它关心的重点不是办公软件而是手柄操作游戏兼容图形驱动客厅模式游戏设备体验。OpenWrt面向路由器和嵌入式网络设备。它也是基于 Linux Kernel 的系统。但是你通常不会在 OpenWrt 上安装 LibreOffice 写年终总结。这就是 Linux 发行版数量庞大的另一个原因Linux 不只运行在个人电脑上。它还运行在服务器云平台超级计算机路由器电视汽车工业设备手机游戏掌机各种嵌入式设备。用途越多组合方式自然越多。第十章那么Windows 为什么没有发行版说完 Linux再回头看 Windows。Windows 为什么没有出现Windows MintWindows FedoraWindows Arch最直接的原因是Windows 是微软拥有和控制的商业产品。微软负责开发系统控制源代码制定产品路线发布正式版本管理商标提供更新服务设计许可证决定哪些功能进入系统。Windows 并不是一个允许普通开发者自由修改、重新编译再以新名字发布的开源系统。微软确实通过特定项目向部分政府和合作伙伴提供受控的源代码查看渠道但这与允许公众自由修改和重新发行 Windows 完全不同。假设你觉得 Windows 任务栏不好用。你可以安装第三方工具修改注册表提交反馈等待微软更新。但你不能合法地拿到完整 Windows 源代码修改任务栏然后发布一个老王 Windows 11 Ultimate Linux Style Edition。至少不能像创建 Linux 发行版那样做。这不是技术能力的问题。而是所有权源代码权限软件许可证商标产品控制权。都不允许你这么做。第十一章Windows 家庭版、专业版算不算发行版不算。Windows 家庭版、专业版、企业版更准确地说是同一产品的不同版本或者不同 SKU。它们由同一家公司开发。使用同一套核心技术。接受微软统一管理。主要区别可能是功能开关授权方式企业管理能力安全功能硬件支持范围。这就像同一辆汽车的标准版豪华版商务版。而 Linux 发行版更像是不同公司、社区和组织拿着开放的发动机和零件设计出了不同的汽车。两者不是同一个概念。第十二章电脑厂商预装的 Windows算发行版吗也不算。联想、戴尔、惠普、华硕确实会对预装 Windows 进行一些调整。例如增加硬件驱动安装管理工具添加品牌壁纸预装恢复程序加入售后服务软件偶尔再附赠一些你并不想要的软件。但是它们并没有重新开发一个 Windows 分支。系统核心仍然由微软提供。安全更新仍然来自微软。软件开发者面对的仍然是 Windows。因此这些系统最多算厂商定制的 Windows 预装镜像。而不是独立的 Windows 发行版。微软的软件通常通过零售、OEM 和批量许可等渠道提供这些渠道改变的是授权与交付方式并没有把 Windows 变成可由 OEM 自由分叉的系统。第十三章苹果为什么也没有几百个 macOSmacOS 的情况和 Windows 类似甚至更加封闭。Apple 同时控制硬件操作系统驱动应用商店产品设计发布节奏。虽然 macOS 底层使用了大量开源技术Darwin 的部分代码也是公开的但完整的 macOS 产品仍然由 Apple 控制。你不能拿着 macOS 源代码制作一个ThinkPad macOS Community Edition。黑苹果社区可以尝试让 macOS 运行在非苹果硬件上。但那不是一个新的 macOS 发行版。它仍然是 Apple 的 macOS只是运行环境发生了变化。所以Windows 和 macOS 更像是完整商品。Linux 更像是一套开放的工业体系。第十四章几百个发行版真的是好事吗说到这里Linux 发行版众多似乎全是优点。自由。选择。创新。针对不同场景优化。但事情当然没有这么简单。发行版太多也会带来问题。1. 初学者不知道选哪个很多人第一次接触 Linux还没有开始安装就已经陷入选择困难Ubuntu 还是 FedoraDebian 还是 ArchGNOME 还是 KDESnap 还是 FlatpakAPT 还是 DNFWayland 还是 X11Windows 用户很少需要在安装前研究这么多名词。2. 软件打包重复劳动同一个软件可能需要分别制作Debian 软件包Ubuntu 软件包Fedora 软件包Arch 软件包openSUSE 软件包。不同发行版还可能使用不同版本的软件库。这会增加开发者和维护者的工作量。Flatpak、Snap、AppImage 和容器技术在一定程度上就是为了减少这些差异带来的麻烦。3. 教程不一定通用一篇 Linux 教程可能写着sudo apt install nginxFedora 用户执行后却发现apt: command not found因为 Fedora 使用的是 DNF。到了 Arch Linux又变成sudo pacman -S nginx它们安装的是同一个 Nginx。但进入系统的门不一样。4. 小发行版可能突然停止维护创建一个发行版并不一定特别困难。长期维护一个发行版却非常困难。你需要持续处理安全漏洞软件更新构建失败服务器费用社区管理硬件兼容安装镜像文档用户支持。很多小型发行版开始时热情高涨。几年后开发者没有时间了。项目也就慢慢停止更新。所以能创建发行版不等于能长期维护发行版。第十五章普通用户真的需要研究几百个发行版吗其实不需要。Linux 发行版虽然很多但对于普通桌面用户来说常见选择并不复杂。希望安装简单、资料丰富可以考虑UbuntuLinux Mint。喜欢较新的开源技术可以考虑Fedora。希望系统稳定、自己慢慢配置可以考虑Debian。希望深入理解 Linux并掌握更多控制权可以考虑Arch Linux。服务器和企业环境则经常围绕Ubuntu ServerDebianRHELRocky LinuxAlmaLinuxSUSE Linux Enterprise。剩下的大量发行版很多只是面向特定硬件面向特定国家或社区面向特定桌面面向特定行业面向爱折腾的开发者。就像世界上有成千上万种汽车。普通人买车时也不会把所有车型研究一遍。先选择一个主流、可靠、适合自己的就足够了。第十六章Linux 发行版真正分发的不只是软件不同发行版表面上的区别可能是软件包格式桌面环境安装程序默认主题发布周期。但更深层的区别是它们对操作系统的理解。Debian 认为自由软件原则和社区治理很重要。Ubuntu 认为Linux 应该更容易安装也应该具备长期商业支持。Fedora 认为新技术应该尽快进入真实系统并推动上游发展。Arch Linux 认为系统应该保持简洁把控制权和责任交给用户。Gentoo 认为既然软件可以自己编译为什么不按照自己的硬件和需求编译Linux Mint 认为桌面系统首先应该符合普通人的使用习惯。这些发行版分发的不只是 Kernel 和软件包。它们还在分发一套默认选择一种工程方法一种社区文化一种对“好系统”的理解。写在最后Windows 是一座城市Linux 是一片大陆Windows 更像一座由微软规划和管理的现代城市。道路怎么修。地铁怎么建。建筑高度是多少。系统什么时候升级。主要由微软决定。硬件厂商可以建商店。软件开发者可以开公司。用户可以装修自己的房子。但是城市的总体规划仍然掌握在微软手中。Linux 则更像一片开放大陆。Linus Torvalds 和内核社区维护着重要的基础设施。GNU 和无数开源项目提供了工具和零件。不同社区来到这里建立了自己的城市。有的城市历史悠久规章严谨。它叫 Debian。有的希望让更多普通人来到这里。它叫 Ubuntu。有的喜欢尝试最新技术。它叫 Fedora。有的把大部分土地交给居民自己规划。它叫 Arch Linux。还有一些城市建在高山、沙漠、海岛和边境。它们不追求服务所有人只想解决一种特殊问题。所以Linux 有几百个发行版并不是因为开发者无法团结。恰恰相反Linux 社区在 Kernel、GNU 工具、桌面环境和大量开源项目上进行了极其庞大的合作。只是这种合作并不要求所有人最终做出完全相同的产品。Linux 世界允许大家共享底层成果。也允许大家保留不同意见。Windows 的力量来自统一。Linux 的力量来自自由组合。统一带来了一致性兼容性清晰的产品路线。自由组合带来了多样性创新选择以及偶尔让人头疼的碎片化。它们没有绝对的好坏。只是走了两条完全不同的道路。所以下次再看到几百个 Linux 发行版时不妨把它们想象成一棵大树。Linux Kernel 是树干。GNU 和其他开源项目提供了养分。Debian、Red Hat、Arch、SUSE 等系统形成了粗壮的枝干。Ubuntu、Mint、Rocky、Manjaro 等发行版则在上面继续生长。有些枝条会开花。有些枝条会枯萎。有些枝条会长成新的大树。这看起来有些混乱。但也正是这种混乱让 Linux 在三十多年里从一个大学生编写的 Kernel最终进入了服务器云计算超级计算机手机路由器汽车游戏设备以及我们面前的个人电脑。Windows 是一个产品。而 Linux 更像一个世界。一个世界当然不会只有一种活法。