警告:此视频对于linux选择不具有任何参考性,请参考具体资料后选择
声明:这绝不是一个Linux传教视频抑或是发行版推荐。
在当下操作系统日益多元化的时代,对于一个普通用户来说,要选择一个操作系统很简单,但要选择一个真正好用的操作系统却难于上青天。为此,我们不妨设想,如果世界上真的存在一个面向桌面用户的“完美”系统,它到底应该是什么样子的?
0.1 我们想要什么?
在我们看来,一个成熟,现代完善的操作系统,至少应该具备以下的特点:
- 稳定,无需为系统的一次变动会不会坏掉而发愁。
- 安全,相对少的出现0day漏洞或恶意软件。
- 易用,开箱即用,容易上手
- 自由,任何人都可以添砖加瓦,无需为商业行为付费。
- 兼容,无需担忧自己的软件能否因为过时/适配而运行。
所以,Windows OUT(不稳定,不安全,不自由),macOS OUT(不易用,不自由,不兼容),剩下的只有Linux抑或是BSD。不过BSD的用户基数小,其更多服务于无头设备,桌面适配远不及Linux,因而依然OUT。各位先不要着急喷诸如Linux上手难,全是黑框框之类的常见评论,尽管目前Linux桌面的体验有些糟糕,但这的的确确是在当下最合适的内核选择:Linux的自由度高,能够允许我们在其基础上作出较大的更改与创新,运行较为稳定,并且在开源的加持下,其安全性也基本能够有保障。
不过,众所周知,当前的Linux桌面发行版最大的问题就是“难用”,稳定和兼容(特指Windows生产力)也不容乐观,我们之前出过视频讲这件事,并且连Linus自己都喷开发者“没有站在普通用户的视角”。所以,我在这里提出一些可能有利于改善这种问题的小设计,希望各位能够批评指正。
1. 原子化架构系统
1.1 系统层面
现代Linux的发行版拥有自由度高的特性,但是,对于普通用户来说,如此之高的自由度反而会给他们带来系统崩溃的风险,比如说危险的命令,高度自由的root权限等。所以,我们需要在这里引出一个概念——不可变系统 (Immutable Operating System)。不可变系统的核心就是系统文件只读,仅允许配置、数据文件可变。如果你看过我的上期视频,会发现:不可变这个概念,本身就是原子化在系统层面的一个表现(感谢@Harold7_Zhang启发)。我们在网络上能够看到很多的电脑小白因为删除了系统文件而系统崩溃,但很少能够见到手机用户有类似的问题,本质就是“不可变”这个特性发挥了作用。并且这个特性根除了很多长此以往困扰Linux用户的问题,比如权限问题,系统崩溃等。
所以,我在此总结:原子化应该是Linux走向大众的最理想的选择。
那么说完了困境,让我们来看一些具体的方案。
- NixOS:将系统本身原子化,能够多世代共存,
- OSTree:以Git的思想管理系统,每次更新都进行增量远程拉取,能够多版本共存。
- A/B System Update:在一块硬盘上存储两个相同的系统核心,系统文件只读,每次都对非工作分区的系统应用更改,重启时切换分区以完成更新。
但上述的三种技术各有缺陷,NixOS需要修改配置文件来修改配置,每次更新都需要重构系统,OSTree带来大量的系统开销,也不能Apply-live,A/B System Update尚未在Linux普及。
出于可靠性和易用性考虑,OSTree相对成熟且可靠性高,易上手,是比较均衡的一个选择。
1.2 软件层面
众所周知,Linux长期以来存在依赖地狱的困境(这是在我做的视频里第4次提到了),一个依赖的无法共存容易引发连锁效应,进而导致整个系统陷入“不能更新,不能安装,不能卸载”的局面,而应用层上的原子化恰恰能解决这个问题。
与前面相对应,软件层面也存在四种解决方案:
- 传统包管理器:依赖地狱的万恶之源,PASS
- Nix:将软件原子化,通过哈希值特性允许多版本软件包共存,从而规避依赖地狱,缺点是配置复杂。
- rpm-ostree(配套OSTree):安装软件相当于在系统上“叠加”软件包,但无法完全规避依赖冲突,并且安装应用需要重启。
- 容器化(Flatpak,AppImage等):通过不共享依赖的沙箱设计解决依赖问题。
稍微懂一点技术的老哥这个时候就会说了:这系统层面不应该是和软件层面的相互配套吗?怎么能错开用呢?没错,我们就是要通过这种错开的方式进行“取长补短”。根据我们要完全规避依赖冲突的目的,很明显我们应该选择Nix或者容器化。但我个人认为,此处应该以Nix为主,容器化为辅。
为什么?尽管Nix有配置复杂的缺点,但我们可以舍弃掉诸如Flakes花样用法,回归最原始的管理方式:只要nix-profile。这样一来,安装/卸载软件与普通包管理器的操作几乎无异,并且能够与应用商店互通,使用户操作更加便捷。不过Nix用户这个时候肯定又不乐意了:这不是摒弃了Nix的可重现性吗?是的,但是让我们仔细想想:对于一个普通用户来说,可重现性在日常的使用频繁吗?和纷繁复杂的语法比起来,是重新安装软件还是学习Flakes更难呢?对于企业用户来说,是写bash脚本一键安装简单,还是从头开始学习Nix Expression更简单?再者说,我们就不能像现在的各大手机厂商那样设计软件包迁移工具来帮助用户重装吗?
相对于Flatpak和AppImage,Flatpak的容器化设计固然很好,但是沙箱的特性使得它与宿主机互通的能力弱,比如QQ的剪贴板同步失效,拖拽文件不能识别等问题。而AppImage的管理方式不够优雅,并且会重复打包依赖,使得其出现不必要的空间浪费。
2. 优秀的容灾机制
我们都知道,在使用Linux时不免会遇到需要系统滚挂修复、调整分区等问题。这时候,大多数Linux用户的选择是:找到另一台设备->刷写LiveCD->回到原来的设备上进行操作,整个过程费时费力,那么我们能否简化这样的容灾机制?
熟悉Windows的各位都知道,在Windows设备的磁盘上有一块独特的分区——WINRE_DRV,这个分区存储的是Windows恢复环境,以备不时之需。然而恢复环境的系统是残血的,大部分管理功能被削减,只剩下必要的恢复功能。
受Windows启发,我理想的操作系统中也会有这样一个分区。不过相比与Windows,Linux的轻量特性赋予了其在有限空间内保留完整系统组件的能力,能够存储大量的系统管理应用。
但这并不完美。让我们假设一个极端的情况:假设,我们在调整系统时手滑将EFI格了怎么办?尽管有恢复环境存在,但其EFI文件依然和主系统存在同一个分区里,这个时候恢复环境反而成了累赘。所以请允许我作出一个反常规的操作:为恢复环境独立分出一个EFI分区。这样一来,即便是主EFI分区挂掉,我们依然能够进入恢复EFI分区修复系统。
示意图:
| 主EFI分区 | /boot | / | /var | 恢复EFI分区 | RE(恢复环境) |
|---|---|---|---|---|---|
| 引导主系统 | 主系统启动所需文件 | 根分区(只读) | 配置、用户数据分区 | 引导恢复环境 | 用于修复系统 |
那么问题来了:现代BIOS是否允许这样的操作?答案是允许,但不推荐。UEFI规范中并没有强制规定只允许一个EFI分区,但是这样做可能会导致引导混乱。并且,Windows明确表示不支持多ESP分区,但Linux允许。因而,这种机制可能只能存在设想阶段了。但话又说回来,毕竟是理想中的操作系统嘛,有点不现实的成分也正常,所以这个设计更像是一个可选项。
而trixie的想法更具可行性,他受Android启发,他认为双倍的EFI分区是不需要的,因为RE可以修复EFI,而系统的备份可以通过LVM-CoW进行完全恢复比引导更重要,而且UKI可以无需引导器加载,所以他提出了以下分区方案。
| 主EFI分区 | /boot(LVM) | /(LVM) | /var(LVM) | LVM CoW | RE(UKI)(Alpine Linux或极简发行版) |
|---|---|---|---|---|---|
| 引导主系统 | 主系统启动所需文件 | 根分区(只读) | 配置、用户数据分区 | 用于恢复系统数据 | 用于修复系统 |
3. 更友好的用户体验
3.1 启动器
现代Linux大多采用Grub作为引导器,Grub很好,但在默认设置下每次通过Grub启动时都需要先看几秒钟的黑框框,十分不友好。所以我个人更倾向于Grub静默引导,而不是要提供一个菜单可供选择。这个时候有的同学就要问了:那我怎么进入rescue环境?我怎么切换内核?怎么回滚?还记得我们前面提到的双引导分区和UKI设计吗?我们完全可以把这些普通用户日常不需要的功能放在恢复EFI分区(或手动在BIOS中启用UKI)中作为高级选项使用。并且,在系统启动失败时,系统不应该直接进入initramfs这样的终端环境,而是首先询问用户是否希望重启引导到恢复环境中,通过chroot进行系统修复。
3.2 源
用过Linux的童鞋们在第一次下载软件包时应该被奇慢的速度逼疯好几回,到了解包管理时,才知道,一个决定软件下载速度的关键因素——Mirrors,在默认情况下,大多数发行版会把软件默认下载源定为官方源,但一般情况下,官方源没有CDN,或者是“环大陆CDN”,在某某W的双重作用下,下载速度最高只有KiB级,导致一个很小的软件包也需要大量时间去下载,更别说linux这种大包。
而解决方案通常极其简单,只需要一个能自动测速的软件,镜像源自动测速目前只有Arch和部分下游新手友好发行版默认添加集成,是我认为Arch Linux为数不多的好设计,它通过后台服务的形式对系统预置的镜像源列表进行测速,从而选出最佳的路线,并添加进Mirrorlist。这对于大陆用户来说十分有用,但不知为何其他发行版似乎并没有类似的设计,他们只能手动选择源或通过第三方脚本测速。而源又是一个极其玄乎的东西,取决与省市运营商的取舍,导致每个人的配置文件并不能照搬,这对用户来说无疑是相当不便的。但在上游发行版保持相对“KISS”的情况下,大概率也不会添加,因此还是下游发行版相对比较方便。
当然上游发行版也不是完全死翘翘了,依然有大量好用的测速软件,而且比较幸运的是,国内的源速度普遍不低,手动选也不会特别折磨。
3.3 更广泛的生态
众所而周知,RPM系的生态并不是为Desktop优化的,尽管有大量的人使用着EL系的Fedora发行版,而隔壁的Debian系,deb包甚至能超过pacman+AUR的总数,如果我们可以把deb生态去迁移到rpm,那就是一个很不错的生态扩展,目前有一个熟知的软件叫做alien,但是转出来的包多多少少总可能遇到问题,而BSD的linux容器或bedrock linux就是一个非常好的选择,通过容器一类的虚拟化技术,让deb包兼容EL系的发行版,目前,广为人知的chroot容器,Docker容器,Lxc等都可以做到。也算是一众乌托邦中唯一的真实吧!
3.4 生产力兼容
2021年6月,Microslop宣布推出WSA (Windows Subsystem Android),和先前已经推出的WSL (Windows Subsystem Linux) 一样用于适配安卓应用。尽管这个功能很不错,但实际上普通用户所用到的机会并不多,Windows本身的软件生态足够完善,没有必要使用Android/Linux来弥补。不过在Linux上可就不一样了。对于Windows用户来说,迁移到Linux最大的难点就是软件适配。尽管很多软件已经响应号召,有了官方包或者Flatpak,但很多专业软件并没有。
所以,Linux是很需要一个兼容层的,而提起兼容层,大多数人肯定想起Wine。Wine(Wine Is Not an Emulator)是一个开源兼容层,通过将Windows API调用动态转换为POSIX调用,让Windows应用能直接在Linux、macOS等系统上运行。它解决了大量生产力软件和经典游戏在非Windows系统上的运行问题。其fork版本Proton深度集成于Steam客户端。它额外整合了DXVK、VKD3D-Proton等组件,添加了大量游戏专属补丁。大量Windows 3A大作能在Linux上流畅运行。但仍有大多数国产软件无法适配,而且使用wine需要命令行操作配置wine前缀等,dxvk,vkd3d补丁得自己打,winetricks需要PassWall….。即使是优化版Proton,虽然解决了便捷性,但也没有解决100%的解决游戏兼容,ProtonDB目前仍有不少国产反作弊和EA反作弊游戏。这对于普通用户只是处处碰壁,PASS。
关于高性能虚拟机,则推荐QEMU,QEMU是一款开源的机器模拟器与虚拟化工具,本身可通过软件模拟各类硬件设备。KVM(内核级虚拟机)是Linux内核的一个模块,利用CPU硬件虚拟化能力(Intel VT-x/AMD-V)将Linux变为Hypervisor。两者结合:KVM提供CPU/内存的硬件加速,QEMU负责模拟I/O设备,共同构成Linux上高性能的虚拟化平台。显卡透传(GPU Passthrough)是借助IOMMU技术将物理显卡直接分配给虚拟机的一种技术。虚拟机可绕过虚拟化层直接访问GPU硬件,性能接近原生(损耗通常<5%)。其图形性能极高,可流畅运行3D游戏、CAD、AI训练等图形密集型任务。但GPU被虚拟机独占,宿主机无法使用;配置复杂,割裂感强,需硬件支持IOMMU且需要进入BIOS开启,不够便捷,PASS。
双系统则需重启,而且多占用一个磁盘或占用磁盘的一个较大的分区,不够优雅便捷,PASS。
所以我们在此引入LSW (Linux Subsystem Windows) 这一概念。与Windows一样,我们采用虚拟化/容器化技术来创建一个”子系统“。这样一来,我们既摆脱了兼容性问题,也能够以优雅的方式运行Windows软件。自然而然,对于这个解决方案下的项目也已经有,那就是WinBoat,它以Docker为容器,通过RDP(远程桌面连接)连接本地虚拟机来实现无缝集成。不过很可惜,这个项目目前还是Beta阶段,并没有加入诸如GPU支持与透传这类功能,但也不必觊觎WSL的成功,WSL是因为Linux可以CLI运行,但Windows在客观条件下并不允许,只能在此期望WinBoat可以越来越好吧。
4. 结语
2026年是国务院宣布开始将Windows替换为国产Linux的第四年(来源:彭博社),是将Ubuntu作为国家操作系统基准架构的第13年(来源:网易)。在这几年里,国产信创的发展有目共睹,Deepin,UOS,优麒麟,各种发行版如雨后春笋般跃入人们的视线。我还依稀记得在刚听到Linux国产化这个消息的时候,内心是怎样的激动。那时的我天真地认为,在政策和国家红利的推动下,Linux的国产生态,就会日益崛起,Linux的易用性,会比肩Windows…..Linux一定会替代Windows。但,我所看到的只有吃政策红利、坐等toG,toB订单的商业公司,换皮的“字研”发行版,以及只有增强,没有任何创新的系统架构,那个“完美的Linux”似乎也并没有出现。这期视频里的设想可能永远不会有人愿意去实现,但这也算是弥补一点我的小小缺憾吧。愿桌面Linux越来越好,愿我们在将来能够看到,一个Linux普及天下的世界。
- 本文链接: https://www.091209.xyz/2026/07/08/ideal-os/
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。