惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Threat Research - Cisco Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
V
Vulnerabilities – Threatpost
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
S
Secure Thoughts
Microsoft Azure Blog
Microsoft Azure Blog
Blog — PlanetScale
Blog — PlanetScale
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
Tailwind CSS Blog
S
SegmentFault 最新的问题
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
云风的 BLOG
云风的 BLOG
The Last Watchdog
The Last Watchdog
L
LINUX DO - 热门话题
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
AWS News Blog
AWS News Blog
美团技术团队
G
Google Developers Blog
宝玉的分享
宝玉的分享
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
Recent Commits to openclaw:main
Recent Commits to openclaw:main
I
InfoQ
小众软件
小众软件
Google DeepMind News
Google DeepMind News
P
Privacy & Cybersecurity Law Blog
Stack Overflow Blog
Stack Overflow Blog
Webroot Blog
Webroot Blog
D
DataBreaches.Net
IT之家
IT之家
PCI Perspectives
PCI Perspectives
人人都是产品经理
人人都是产品经理
Hacker News: Ask HN
Hacker News: Ask HN
L
LangChain Blog
SecWiki News
SecWiki News
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Cisco Blogs
T
Threatpost
P
Proofpoint News Feed
Y
Y Combinator Blog
Cloudbric
Cloudbric
T
Tor Project blog
量子位
博客园_首页
B
Blog
Hugging Face - Blog
Hugging Face - Blog
GbyAI
GbyAI
D
Darknet – Hacking Tools, Hacker News & Cyber Security

Linux

Linux 输入法求助 - V2EX 北通手柄 Linux USB 断连排查与修复 - V2EX 请问: Linux 系统下,有没有好用的 [查找重复文件] 的软件? - V2EX [震惊] 用 Firefox 播放一个抖音视频,我的 Linux 系统立马死机 - V2EX 强烈推荐一款性价比极高的 Linux 本搞 vibe coding - V2EX Linux 下有没有可能实现 Listary 的快速跳转 - V2EX AI 能用来全自动化解决 Linux 系统问题吗? - V2EX V2EX › 登录 大佬们, Linux kernel 漏洞频发需要升级的问题,你们是怎么处理的? - V2EX 为啥 ubuntu 搞个 wayland 这种不兼容的玩意出来 - V2EX Linux 上的游戏网络加速 - V2EX 太好了感动哭了 chrome149 修复了 wayland+nvidia 的硬件加速问题 - V2EX debian+gnome 开机后可以不显示用户列表 只需要输入密码 像 mac 那样么?有什么插件实现么 - V2EX 升级后,发现 USB 相关的设备无法启用,可以查下有没有 usbguard 服务 - V2EX 介绍一下 flatpark - V2EX fctix5 的 Pinyin 输入法怎么没有自动调整词频 - V2EX Linux 服务器有何安全监控软件? - V2EX 腾讯会议 Linux 版使用 nvidia 独显无法驱动视频功能 - V2EX niri 环境用触控板怎么能更好的选择文字 - V2EX 『ArchLinux』简明安装指南(Laptop+Nvidia+Cachyos Kernel +xfs+KDE) 有没有使用 Linux 桌面办公的朋友,我写了一个脚本可以实现快速查单词/翻译句子 国产 Touchpad 在 arch 下偶发无法用手势 《铜豌豆 Linux 》12.14.1 版本发布 wgx 一个以性能优先 把 wireguard 网络转成 socks5 代理的工具 niri 怎么连自动切换显示器都这么难啊 分享 tmux 快捷方式 zen 浏览器在 archlinux 中无法代理 albert 快捷键总是失效 - V2EX crTerm 148.26.0513-build for Linux Linux 平台上 支持垂直标签页的终端 crTerm 苹果最新妙控触摸板和 Linux 适配的好吗? - V2EX ubuntu 24.04 今天点击更新后,蓝牙鼠标不能用了。 升级到 fedora 44 后在 konsole 里打字时 cpu 占用很高的问题有 v 友也遇到了吗? Ubuntu26.04 桌面端配置静态 IP 失败 Gnome 桌面下截图上传到 imgur 的 extension - V2EX Manjaro 真不错 - V2EX 写了个 lottie 动画在 Linux 桌面上顶层播放的小东西 - V2EX LXC veth 桥接网络模式下如何避免发送的数据包被拆成小包? - V2EX 使用 auto-cpufreq 平衡 Linux 性能功耗 我的硬盘 Memblaze Pblaze 5 Linux 下不识别,给 Linux 内核提交了补丁, AI 说有望被合并 - V2EX Linux nfs 客户端如何快速删除大量小文件 写了个 Nautilus Extension: Copy File Path - V2EX Linux /Ubuntu 上如何实现连接两个不同的 wifi 解决实际需求。 - V2EX 115 网盘如何多端稳定挂载? - V2EX Linux 桌面环境 orWM 推荐 - V2EX 如何解决 eBPF sockmap 重定向转发中背压缺失带来的 OOM ? - V2EX 还是要用 ubuntu - V2EX nfs mv 的操作是原子的么? A 节点 move, B 节点要么完全可见,要么完全不可见? - V2EX 求助 Linux 桌面环境软件 - V2EX 请教一个 unraid 的 docker 网络问题 - V2EX Linux 格式化 fat32/exfat 分区避坑 - V2EX Linux 服务器上有多个 ip,程序本身不能指定接口,有第三方程序可以强制让程序使用指定接口吗? - V2EX Ubuntu 26.04 LTS 关键变化解读 - V2EX win11 对比 ubuntu,是真的拉胯 - V2EX 终于把 KeymouseGo 跑在麒麟 9000C + UOS 上了,分享一下 ARM64 适配心得 - V2EX sudo-rs 改变传统 sudo 行为,密码输入不再完全隐藏,即将上线 Ubuntu 26.04 LTS - V2EX Xdmcp 服务问题使用与优化求解 - V2EX 在 2026 年选择 Fedora 前,你应该看看 universal-blue - V2EX Linux 运行 EasyConnect 有成功的大佬么? - V2EX 我有一批工控机,批量内网穿透加群控什么方案合适 - V2EX 求推荐 Linux 桌面 - V2EX Linux 微信怎样避开实名信息录入? - V2EX 再来谈谈我的 ArchLinux 使用体验 - V2EX thinkbook 14+ 2024 Intel 版安装 arch plasma 左右声道声音大小不一样 - V2EX 有没有便宜好用的服务器推荐 - V2EX 能不能改改 networkmanager 中的错别字? - V2EX 《铜豌豆 Linux 》12.13.1 版本发布 2026-01-16 - V2EX Wayland 显示服务下的远控方案 - V2EX 深度科技原 cto 关于西装门的每日锐评 - V2EX 求大佬们分享下跨境组网方案 2026 年了,有没有丝滑一些的 Linux 远程桌面解决方案 Linux 下看电影, dts 音轨声音小,音质破。 华为擎云 W515X 支持运行 openSUSE 等发行版吗 折腾两天还是换回 Manjaro Arch Linux 下微信备份聊天记录的方案? 国内 Linux 服务,安装各种软件有什么好的办法快速安装? 垃圾佬组 Linux 求推荐亮机卡 有个 javac 进程长期占用,是否被挂马了? Linux 漫谈(三) 荣耀笔记本与 Linux - 性能管理 Linux 漫谈(二) 完整启用 Fedora/ Linux 下 GNOME 的硬件加速 铜豌豆 Linux 开源项目 2025 年 12 月捐赠募集
Linux 漫谈(一)
kuanat · 2025-12-24 · via Linux
Linux 漫谈 虽然标题是 Linux 相关,这篇文章和之后的续篇都会将三个主流的系统一起做对比,特别是设计图形界面和桌面的部分。其实鸿蒙系统也非常值得拿来一起对比,但我考虑到这个系列的切入视角是近三十年的发展史,所以就刻意回避了。 选择发布在 Linux 板块,主要还是为了避免无意义的口水仗。以我这些年的经历来看,Linux 用户的典型画像一方面是沉默的少数派,另一方面又往往是用爱发电的主力。所以互联网上的资料常常处于两种极端,要么很专业但要求读者有足够的认知门槛,要么就是语焉不详,甚至可能充斥着错误或者误导性的信息。 我写这篇文章的目的只是简单的想要回答一些为什么类型的问题,尽可能消除一些常见的技术误解。很早之前我就有写这个系列的构思,当时感觉如果要做完整清晰的论述,篇幅会非常长同时依赖大量的基础内容做铺垫。现在有了 AI 的辅助,我就将文章定位为 AI 的提示词,梳理好大纲脉络即可。 另一个目的算是我的私心,这篇文章也是阐述“为什么开发者应当学习 Linux”这样一个观点。我并不急于回答这个问题,而且我相信读过文章的你一定会有自己的理解。至于我把我的理解分享出来这个行为的动机也很简单,我从 Linux 上学到了很多,这些知识经验很大程度上影响了我的职业经历,某种程度上也影响了我的价值观,所以我愿意将这些精神财富再次分享出来。 0x00 前言 我先拿一个可能是误解最深的话题作为引子:“Wayland 协议加剧了 Linux 桌面的碎片化”。很多人会认为 Wayland 协议应当像 Windows/macOS 那样有个统一的标准,而不是现在松散、混乱的实现状态。 如果我告诉你这恰好就是 Wayland 追求的设计目标呢?你可能觉得我或者 Wayland 至少有一个疯了。如果我告诉你“提供机制而非策略( Mechanism vs Policy )”恰恰是 X 提出的,而 Wayland 继承了相同的精神内核,估计 X 的支持者也坐不住了吧? 详细阐述问题需要比较多的铺垫,之后的篇幅会做相应的解释。 如果你看过我之前发的文章、帖子,你可能会注意到我经常会用一个词“哲学”。所谓哲学就是回答为什么,如果再直白一点就是“小孩子才做选择,成年人当然是我全都要”的反面,技术领域中很多时候谈论好与坏,本质上是在谈论取舍。哲学的意义再具象化一点可以表述成“设计理念”,它往往有着具体的应用场景和时代背景,以借鉴总结为目的对错、好坏讨论是有意义的,为了宣泄情绪争个输赢属实没有必要。 当然也不是说就没有统一且普适的评判标准了,我之所以喜欢谈哲学就是因为,设计理念及其对应的实现手段是能体现出设计者智慧的。可以这样理解,人类历史上出现过的科学技术到今天可能都被新技术替代了,但是类似数学抽象、以及对物理世界的认知,一起构成了如今的科学技术框架。思想智慧的光芒是不会因为历史进步而被掩盖,反而会更加闪耀。 日常中我们也很少拿如此严苛的标准来评判一般事物,毕竟时间才是最强的检验手段,经得起时间考验的才是大智慧。 如果以图形系统作为后现代操作系统的分界线,目前 Linux/Windows/macOS 差不多都经历了二三十年的发展。关于操作系统好坏的争论一直没有停过,且很少有人讨论好在哪里或者坏在哪里。又或者是没人回答这类问题:那么多开发者竟然解决不了某某问题、为什么某某系统就做不到等等。 与其说我要系统性回答各种疑问或者解析各个误解的原因,不如说是我要回答“为什么某某操作系统会是现在这个样子”,或者“它为什么要这样设计”。三个系统演化成今天的形式,简单说和它们最初的设计思路是分不开的,最初的框架定型之后,想要再改就很困难了,谁都离不开一层层打补丁,这个打补丁的过程又重新巩固了原有的设计。 我相信以今天的视角来看,我们是能够给出比较客观的评判的。 0x10 现代操作系统的基础 为什么需要操作系统? 这个问题似乎简单到不需要思考,那我为什么要把它单独拿出来?因为在我看来,这个问题的答案就如同逻辑三段论中的大前提,后续一切讨论都建立在这个大前提之上。 在操作系统出现之前,可以认为计算机是“单任务”的,即单一程序直接在硬件上运行,通过人工外部手段切换应用程序。随着硬件技术的进步,彼时的开发者迫切需要某种能够让多个应用程序以纯软件的方式共享硬件资源的机制。 这个机制并不完全等同于现代意义上的“多任务”,但在逻辑层面上,二者都是基于“时分复用”这个思想的,甚至人工“单任务”也可以理解为时间片尺度非常大的复用系统。 回到计算机硬件上,核心计算单元 CPU 只是机械地按照程序计数器( PC )以及栈指针、寄存器中的数据来执行相应的指令,如果要实现在多个应用程序之间进行切换,实际上只需要实现这个环境保存及恢复机制即可。 这就是对于操作系统最原始的需求。 0x11 内核 如果说图形操作系统的分界线是图形界面,那么现代操作系统的分界线就是内核。所以现在的问题是内核又是怎么来的,要解决什么需求。 现在操作系统的雏形源自 Unix ,估计绝大多数人并不知道它的原始含义。有个戏谑的说法是它代表 uniplexed 也就是单路非复用的意思,与它相对的是 multiplexed 今天一般叫做多路复用,而 Unix 取这个名字就是为了与当时名为 Multics 操作系统的设计做区分。 尽管 Multics 在商业和软硬件技术上都很失败,但它的理念是超越时代的,所有 Unix 之后的现代操作系统都是建立在它的设计思路之上。 内核或者更准确地说保护环( Protection Rings )这个概念是 Fernando Corbato (图灵奖得主)在六十年代提出的,在当时的背景下,它旨在解决原始操作系统面临的安全性问题。Multics 的设想是,将庞大昂贵的计算机安全、方便地共享给多人使用,所以提出了环这个概念。同时 Multics 和通用 GE-645 的合作,增加了硬件环支持也是第一次软件需求影响硬件设计的例子,后面这样软硬件相互影响进化的例子就非常普遍了。 为了避免某个应用影响到其他程序,或者影响到操作系统本身,就让操作系统运行在 Ring0 最高权限,而应用程序运行在 Ring3 权限。同时为了解决内存昂贵且管理复杂的问题,Multics 还提出了虚拟内存的概念,包括动态链接技术在内的很多设计都是源自 Multics 操作系统。(还包括 ACL 访问控制列表概念,以及 / 代表的树状目录结构,这里就不展开了) 虽然 Multics 的理念很先进,但受限于当时的技术水平,实现层面却比较失败。后来 Ken Thompson 和 Dennis Ritchie 离开项目,发展出了 Unix 项目。对于环的模型也简化成了 Kernel/User 空间的划分,操作系统就演变成了内核和用户空间辅助程序的组合。 为了准确表述起见,后面提到操作系统的时候都会以其内核的名字来称呼,Linux 自身就是内核名字,Windows 目前的内核依旧称作 NT ,而 macOS 内核的正式名称为 XNU(X is NOT Unix)。 0x12 设计哲学 是的,我又要谈哲学了。 从 Unix/Multics 的对比可以发现,即便理念相同,在具体实现上也会存在巨大的分歧。而从 XNU 这个名字,以及后续 Linux 这个名字,也能看出操作系统发展的脉络。对于不同的设计者而言,他们追求的理想目标不同,在满足操作系统这个基础需求时的解决思路也不同,这便是哲学上的分歧。在后面我们能看到不同的哲学对于操作系统发展带来的巨大影响。 由于 Unix 不在这个系列主要的讨论范围内,这里就总结一下 Unix 影响后世的几个重要哲学观念: Do one thing and do it well. 和 KISS(keep it simple and stupid) 基本是一个意思,这个理念与 Multics 大而全的理念恰恰相反,影响了 awk/sed/grep 等等一系列软件的发展。 Worse is better. 这个理念的影响主要是 C/Lisp 的语言,前者是追求工程简单,后者追求形式正确。我更愿意称之为工程派和学院派,为什么 XNU 要强调自己不是 Unix ?因为它诞生于学院派,和 Lisp 一样都追求形式上的正确和美。 Everything is a file. Linux Torvalds 称这是 Ken Thompson 最优雅的设计,伟大无需多言。 我觉得到这里已经很明显了,哲学观点属于润物细无声的存在,影响的是对同样事物的不同看法,进而影响做同样事情的不同选择。还是那句话,好和坏都是相对的,对错不重要,为什么更重要。 0x13 对比 铺垫了这么久,终于可以开始对比了。如果说继承 Unix 衣钵的 Linux 算作工程派,XNU 出身学院派(卡内基梅隆大学 Richard Rashid ),那么 NT 应当算作激进的先锋派。 顺便一提,NT 内核的核心设计是 Dave Cutler ,他主导设计了 VMS(Virtual Memory System),后来成为了 NT 虚拟内存的核心。他最出名的一句话是 Unix is a junk OS designed by a committee of PhDs 。鄙视链真是无处不在啊…… 在 Unix 诞生之后,操作系统内核的基本框架就确定了。现代内核无论是 Linux 还是 NT/XNU ,最基本的功能模块都包括任务调度和虚拟内存,只是实现层面存在差异。然而不管是哪一派,都不约而同将文件系统、网络栈和硬件驱动放到了内核中。 从技术上讲,Linux 是纯粹的宏内核( Monolithic )设计,而且 Linus Torvalds 对此和 Andrew Tanenbaum (微内核之父)有过一场辩论,Linus 认为在九十年代微型内核的性能开销是不可接受的。这种设计下所有的内核功能模块都运行在同一个地址空间。(一般现在说的纯微内核( MicroKernel )指的是 Minix/L4 这种,因为性能问题基本没有桌面应用,也就不展开了。) 至于 NT 和 XNU ,学术层面一般的说法是混合内核( hybrid ),因为它俩都是设计上的微内核,但也都在实现上采用宏内核的方案。 NT 内核的设计者 Dave Cutler 受微内核思想影响,将 NT 内核设计成了很多的子系统,比如 OS/2 和 POSIX 子系统,甚至后来 WSL(windows subsystem for linux) 和 WSA(windows subsystem for android) 都得益于这个设计,后来连 GDI 和 http 服务器也都塞进了内核。XNU 则基本上是把 BSD 的网络栈、文件系统实现直接链接进了内核。当然本质上,NT/XNU 还是和 Linux 一样只有一个地址空间的,只是它们不推荐像 Linux 一样自由访问。 真正的区别在于以下两个问题: 是否将 IPC 放到内核里。 准确的说法应该是:内核各个部分之间依赖直接函数调用进行交互,还是依赖特定协议的 IPC 消息进行交互。 是否将图形系统放到内核里。 在这两个问题上的不同抉择才是真正影响几个操作系统如今不同形式的根本原因,IPC 和图形系统恰恰也是对桌面体验影响最大的两个部分,如果要谈论桌面系统的话题,归根结底都会回到这两个系统的设计上。 说到底,这几个内核的追求都是一样的,既要保证安全,还要追求性能,但在这两个关键问题上走出了不同的路线。 PS 感谢各位没有让 AI 总结而是人工阅读。这会是一个比较长的系列,分开发布一方面是因为确实太长了,另一方面也是想根据反馈来调整后续内容的结构顺序和内容侧重。