Linux

48 篇内容

工程实践Fzakaria Blog

Every package is already installed

文章介绍 omnibin:一个基于 FUSE 的文件系统,把 nixpkgs 历史中几乎全部二进制放到 $PATH 上,实现“无需安装、无需构建”的按需包访问。其核心是利用 cache.nixos.org 上 Hydra 生成的 .ls 元数据作为索引,再结合 nixpkgs-multiverse 将 (attribute, version) 解析到已构建的 store path,并在首次读取时从缓存拉取 NAR 解包。作者展示了 5 万多个顶层二进制、88 万级二进制树、版本化命令(如 python3@3.6.2)以及 Docker/NixOS 集成方式。为避免 FUSE 全树 stat 过慢,工具只列出每个二进制的最新版本,并提供 index.db 和 omnibin CLI 查询。代价是首次访问需下载解包(示例约 2.7 秒),后续因 store 已存在而瞬时返回。

推荐收录。文章不是泛泛介绍 Nix,而是给出 omnibin 的完整机制:利用 Hydra .ls 索引和 nixpkgs-multiverse 做版本解析,再用 FUSE 懒加载 NAR,并讨论了 ls 性能、首次访问延迟和查询接口等真实约束。对研究包管理、FUSE/文件系统、开发环境与可复现构建的读者有直接迁移价值。

工程实践Cloudflare Blog

How Cloudflare addressed a cross-tenant data exposure vulnerability in Containers

文章复盘 Cloudflare Containers(及基于其构建的 Sandboxes)的跨租户数据泄露漏洞。根因是 Linux dm-thin 存储池配置了 skip_block_zeroing,64 KiB 物理块复用时不零化;新容器在新分配的块上只写入 4 KiB,其余 60 KiB 可能残留前一容器数据,可通过 /dev/vdc 裸读观察。研究者用 ext4 目录块校验和区分自有与外来块,在四大洲投放中复现出目录结构、数据库页甚至完整 SQLite 数据库残留,但无法定向选择受害者,也无法访问活跃挂载的磁盘。Cloudflare 移除该选项、退役全部旧容器磁盘并清理缓存的镜像快照,再基于历史磁盘 I/O 遥测构造检测特征,未发现恶意利用证据,并给出完整处置时间线。

推荐收录。文章给出可验证的根因链条:dm-thin 的 skip_block_zeroing 语义、4 KiB 写入仅覆盖 64 KiB 块导致残留、ext4 校验和归因方法,以及移除选项、退役旧磁盘、清理缓存镜像快照并回测验证的完整修复路径。适合多租户云平台、容器运行时与存储隔离方向的工程师和安全研究者阅读,其块级残留分析与遥测检测思路可迁移到同类隔离审查。

技术文章Kubernetes Blog

Kubernetes v1.37: Hardening Container Storage with Bind Mount Options and EmptyDir Permissions

Kubernetes v1.37 引入 volumeMounts.bindMountOptions 与 emptyDir.mode 两项 Alpha 安全特性,用于在容器卷挂载上设置 noexec、nosuid、nodev,并控制 emptyDir 创建权限。文章先回顾 Linux bind mount 标志、Unix 权限和 sticky bit,指出默认 emptyDir 为 0777 且缺少挂载选项,会导致可写卷中执行恶意二进制或跨容器删除文件。随后用 Pod 示例展示 /tmp 启用 noexec/nosuid,以及用 01777 保护共享目录,并给出 kubectl exec 验证方法。还说明 bindMountOptions 与 PV mountOptions 分层不同、fsGroup 会覆盖 mode、仅 Linux 生效、需要运行时支持 CRI mount_options、特性门控和版本偏移行为。适用边界是 Alpha,默认行为不变,未启用门控或运行时不支持时不会生效或会被拒绝。

推荐收录,因为文章不仅介绍 Kubernetes v1.37 新特性,还给出 Linux 底层机制、Pod 清单、验证命令,以及和 PV mountOptions、fsGroup、运行时支持之间的边界,属于可复用的安全加固参考。适合 Kubernetes 平台工程师、应用开发者和安全工程师,在设计多容器共享卷权限或启用 Alpha 特性时参考;主要风险是特性仍为 Alpha,生产采用需关注门控和运行时兼容性。

工具笔记Fzakaria Blog

Visualizing Nix closures

文章介绍作者用 Hilbert 曲线构建的 seenix.dev:一个完全在浏览器本地运行、无需服务端的单页应用,以“一字节一像素”的方式可视化 Nix closure。核心做法是把 closure 内各 store path 的 NAR 按名称排序拼接成一维字节流,再用 Hilbert 曲线折叠成正方形,从而保持字节局部性,使 store path、文件乃至 ELF section 都对应连续方形区域。布局只需 narinfo 中的 NarSize,因此整张图在下载任何 NAR 前即可毫秒级完成,缩放时再从 cache.nixos.org 按需取 NAR 并按字节类型上色(可打印 ASCII、控制字节、0x00 等)。作者据此验证某争议二进制实际不含 ffmpeg 与 ruby(41 个 path、234 MiB),并展示了 1,324 个 path、5.3 GiB 的 GNOME 桌面 closure,工具支持 nix path-info 导出与额外二进制缓存。其边界是主要用于探索与可视化,不改变 Nix 语义,且读者需具备基本 Nix 背景。

推荐收录:文章给出了明确且可复现的技术机制(Hilbert 曲线字节布局、仅凭 narinfo 提前绘图、缩放时按需拉取 NAR),并用真实 closure(含争议二进制与 GNOME 桌面)验证结论,而非停留在概念演示。适合使用 Nix/NixOS 的开发者、做二进制或依赖体积分析的工程师,以及关注可视化实现的人;其局部性布局与懒加载思路可迁移到其他大体积产物的可视化与审计场景。

技术文章Fzakaria Blog

A Nix store is three functions

文章指出成为 Nix 二进制缓存只需实现三个 GET 请求:nix-cache-info、对应 32 位哈希的 narinfo 元数据、以及 narinfo 中 URL 指向的压缩归档,客户端并不关心底层传输介质。作者据此把 nix copy --to file:// 产出的缓存目录发布到 GitHub Pages/Releases 与 npm 等静态文件服务,并用 npm 完整演示了打包、签名、发布,再从 unpkg 作为 substituter 拉取闭包并用 bwrap 运行的流程。文章还解释签名只覆盖 StorePath、NarHash、NarSize、References,不含 URL/FileHash,因此归档可托管于任意主机并仍通过校验。文末列举 gachix、DNS TXT、pastebin、OCI、npm 等替代实现,并指出 npm 不支持增量发布、每次版本重复上传整个闭包这一主要局限。

推荐收录:文章把 Nix 二进制缓存抽象为三个 GET 请求,并用 GitHub、npm、git 对象库等真实实现佐证,签名覆盖范围与 npm 无法增量发布等边界说明清晰。适合使用 Nix 的开发者及包管理、内容寻址存储方向读者,其最小接口与签名校验思路可迁移到自建缓存、制品分发等场景。

工程实践Elastic Security Labs

Linux Detection Engineering - Local Privilege Escalation

文章是 Elastic Security Labs 的 Linux 检测工程系列,聚焦本地提权检测。作者提出两层框架:通用层捕捉提权共有行为流,即非特权进程从可写路径执行后同一谱系出现 uid 变为 0,或 SUID/SGID 助手被滥用;技术层再针对页缓存零拷贝破坏、unshare 命名空间、文件描述符窃取和 GTFOBins 配置错误补充规则。文中给出 EQL、Auditd 与 Elastic Defend 规则,并用 11 个公开 PoC 和 2 个 SUID 配置错误案例验证,显示 Copy Fail、DirtyFrag、DirtyClone 等即使缺少 per-CVE 特征,通用层仍能靠根转换与特权执行提供信号。边界是规则基于公开 PoC,不宣称覆盖全部或定制免杀 LPE,部分场景需调参且存在误报。

推荐收录。文章给出可复用的两层检测设计:以“可写路径执行→uid 变为 0 / SUID 助手”的通用行为流兜底,再按页缓存破坏、unshare 等漏洞类补充规则,并用 13 个公开案例验证有效性,对 Linux 安全、EDR/SIEM 检测工程和红蓝对抗读者有直接迁移价值。风险是规则围绕公开 PoC 构建,生产环境需处理可写路径提权等误报,并不保证覆盖定制免杀 LPE。

工具笔记Fzakaria Blog

Review a pull request by booting it

文章介绍作者为 trynix 新增的 trynix-preview GitHub Action:它会在 Pull Request 下自动评论一条链接,评审者点击即可在浏览器标签页中启动 Linux 环境,并把该 PR 构建出的二进制加入 PATH,无需 clone、构建、服务器、SSH、Docker 或虚拟机。该 Action 不负责构建与缓存,只通过 nix eval 取出 store 路径,并把缓存地址与公钥交给浏览器,因此前提是目标路径已被构建并推入缓存(如 Cachix)。安全方面需在 fork PR 场景开启 allow-unsafe-pr-checkout,工作流运行于默认分支再检出 PR 代码以防 fork 篡改,并建议为 PR 构建使用隔离的私有缓存。作者也坦承大型二进制执行仍需 1-2 分钟,更适合中小型二进制的评审场景。

推荐收录。该文并非单纯工具发布,而是给出了可复制的工作流配置、缓存前置条件、fork PR 的安全权衡(默认分支运行、隔离私有缓存)以及大二进制启动耗时 1-2 分钟的明确边界。对设计 CI/CD 评审流程、探索浏览器内可执行环境或使用 Nix 的团队有直接可迁移价值。

工程实践Fzakaria Blog

Any Nix package, live in your browser

文章介绍了一个名为 trynix 的浏览器内 Nix 包运行器,允许用户通过静态网页直接启动一个完整 Linux 虚拟机,并运行 nixpkgs 历史上任意版本的任意包。作者结合此前构建的 nixpkgs-multiverse、grail 和 omniflake 等工具,实现了“属性+版本号→store path”的映射;利用 cache.nixos.org 等公开缓存提供的 CORS 支持,使浏览器可以直接获取 NAR 包;再借助 QEMU 与 WebAssembly 在浏览器中启动真实的 x86_64 Linux 内核,并通过 9p 文件系统挂载内存中的 Nix store。文章还讨论了性能优化,如后台预取引擎和虚拟机快照恢复,使得首次启动约 4 秒、二次访问约 1.5 秒。作者分析了该方案的边界:二进制仍处于模拟执行、首次运行有翻译开销、闭包大小受制于标签页内存和 WebAssembly 的 32 位地址空间。最后作者展望了 PR 评测试用、Agent 产物共享、可复现 bug 报告、可运行文档和软件考古等应用场景。整体是一个完整的工程实践案例,展现了将多种既有技术组合成新系统的思路。

推荐收录。文章展现了真实工程系统的完整构建过程,从组件设计、缓存复用、性能优化到边界约束均有具体细节。对关注 Nix、WebAssembly、浏览器端执行或可复现构建的读者,文中的架构拆解和应用场景推演极具迁移价值,也有助于启发新的工具链设计。

技术文章LWN.net

[$] Recent work in memory tiering

文章聚焦 Linux 内存在分层内存(tiered memory)方面近期的实现动态。分层内存系统包含性能不同的多种内存,如高速 HBM 或慢速 CXL 内存,内存分配的位置会显著影响工作负载性能。虽然这类改进研究已持续多年且近期节奏略有放缓,但仍有多项工作进行中。文章梳理了相关补丁与设计取舍,并指出这些方案正在被追问分层设计本身是否合理。内容面向内核内存管理子系统的开发者和关注新硬件内存架构的系统研究者。

文章来自 LWN.net,内容以 Linux 内核社区的具体补丁和设计讨论为基础,而不是产品宣传或新闻转述。它梳理了分层内存近期工作,并展现了关于分层设计合理性的开放问题,适合 Linux 内核开发者、系统软件工程师和关注 CXL 等新内存架构的读者。文中对方案取舍和演进脉络的归纳,可以作为理解内存子系统趋势的长期参考。

工程实践LWN.net

[$] Securely suspending LUKS-encrypted disks

这篇文章讨论 Linux 内核在系统挂起(suspend)时如何处理全盘加密密钥的安全问题。作者指出,笔记本电脑休眠后内存内容仍可被专门工具读取,甚至冷启动攻击也能在断电后短时间内提取内存数据,这是硬件层面的固有风险。为降低密钥暴露,内核应像用户配置的那样在睡眠时擦除长期加密密钥。2026年6月,Ingo Blechschmidt 发现 Linux 6.9 之后的内核版本即使配置了擦除操作也未实际执行,他给出了一个已被合并的修复补丁,但作者强调该修复并非全面解决方案,仍存在边界和残余风险。文章属于对真实安全回归的深入解析,并通过具体案例讨论内核安全机制的能力边界与后续改进方向。

推荐收录,因为它揭示了一个真实且不易察觉的内核安全回归:配置与行为不一致,且修复不彻底。对于从事 Linux 内核、系统安全和加密存储相关工作的读者,文章展示了从发现 bug、定位原因到评估修复边界的方法,并可迁移到其他受信任硬件边界场景下的安全机制设计。

技术文章Fzakaria Blog

How safe is follows?

本文用 omniflake 索引的 11,936 个 Nix flake 数据,量化分析 `follows` 统一 nixpkgs 输入的安全性。作者统计各 flake 锁定 nixpkgs 的年龄、渠道来源和选择时的陈旧度,发现半数 flake 在选定时使用的 nixpkgs 不足 17 天,如今中位数已超过 506 天;约八成修订曾是 Hydra 构建的渠道发布,生态整体并非故意用旧版本,而是长期未更新。由此推断,`follows` 通常迫使 flake 用比原作者测试时新约一年半的 nixpkgs 构建,可能引入轻微破坏,尤其在 nix-darwin 场景。文章同时承认该研究只能从修订版本分布推断风险,不能直接测量构建失败率,结论属经验性参考。

本文是少见的以真实生态数据回答 `follows` 安全性的分析,提供了具体的年龄分布和渠道统计,可帮助 Nix 用户和库维护者理解风险并决定是否使用 `follows`。研究方法(利用索引和发布存档做交叉分析)也值得借鉴;但由于没有直接测量构建失败,结论应视为风险提示而非最终定论。

工程实践Fzakaria Blog

One flake to rule them all

文章针对 Nix flakes 在管理输入时反复添加 follows、无法统一 nixpkgs 的痛点,提出了一个名为 omniflake 的单一 flake,将近一万两千个 flake 打包为一个输入。作者先解释了 flake.lock 的传递依赖和重复问题,说明 Nix 的惰性求值使大量输入在被访问前不会被拉取。随后描述了他为 Nix 上游修复的输入数量多时锁文件命名碰撞导致的二次复杂度问题,给出了优化前后性能对比。核心设计是 omniflake 只声明少量真实输入,通过内置 index.json 的 pin 信息和自定义加载器在请求时按需实例化各 flake,并支持 overrides 覆盖输入。文章还讨论了这个方案的边界,如部分 flake 缺少 flake.lock 时的变通,以及集中化与联邦化的权衡。

本文以真实的 Nix 生态痛点为出发点,不仅提出了 omniflake 这一新颖方案,还贡献了 Nix 上游性能修复,并附有清晰的机制解释和基准数据。适合 Nix 用户、包管理工具设计者和对惰性求值与依赖图感兴趣的系统工程师阅读。其中'用元数据代替真实输入、按需加载'的设计思路,以及性能问题的定位与优化方法,可以迁移到其他依赖管理或构建系统。

工程实践Fzakaria Blog

Stamping build info in constant memory

文章针对构建系统中用 llvm-objcopy 向 ELF 可执行文件附加 build info 时内存占用随文件大小线性增长的问题,提出了一种常量内存的 stamping 方案。作者通过测量确认 llvm-objcopy 的峰值 RSS 约为文件大小的两倍,并分析其根因:objcopy 需要将整个 ELF 读入内存以增加一个 section,并更新 section header table 和 .shstrtab。新方案让链接器在链接时预先发出一个仅含一字节的占位 section,使 section 的名字和 header 已经存在;之后的 stamping 步骤只需把 payload 追加到文件末尾,再原位修改该 header 的 sh_offset 和 sh_size 共 16 字节,完全不需要读取或重写文件其余部分。基准显示新方法内存占用恒定约 9.5 MiB,耗时与文件大小无关。文中给出了完整的 C 实现 elfstamp.c,并指出该技巧仅适用于非 SHF_ALLOC 的元数据 section,不影响内核加载。

推荐收录。文章用真实测量数据揭示了 llvm-objcopy 内存随文件大小线性增长的缺陷,并给出将内存占用降为常量的巧妙方案:利用链接器预留占位 section,stamping 时只追加数据和原位修改 16 字节 header。附带的 elfstamp.c 代码可直接迁移,适合构建系统、二进制后处理和大 ELF 注入元数据的工程师;其'专用小工具替代通用工具'的思路以及从现象到根因的分析方法也具有很强的可迁移性。需注意该方案仅适用于非 SHF_ALLOC 的 section,集成前需确认链接器与目标格式的兼容性。

工具笔记LWN.net

[$] Old-school calendaring at the command line with Remind

文章介绍了 Remind,一款面向 Linux 和 Unix 的命令行日历与闹钟程序,并可选 Tk 图形界面。Remind 拥有自己的脚本语言,能够表达在其他日历工具中难以实现的复杂提醒规则,例如基于日期、周期和条件触发的逻辑。文章详细说明了该脚本语言的核心功能、使用场景和配置方法,并给出了具体示例。作者指出,Remind 不支持日历共享和会议邀请,因此不适合需要团队协作的企业环境,但对偏好命令行的用户来说,它是管理杂乱日程的有效工具。文中还讨论了其与传统日历程序的差异,以及它作为轻量级、快速工具的适用边界。

作为 LWN 的专题文章,它详细介绍了 Remind 及其脚本语言的表达能力,展示了命令行工具在个人日程管理中的独特价值。适合喜欢命令行、注重效率与定制化的用户,以及希望了解非主流但强大的工具设计的开发者。文章虽涉及面较小,但清晰的边界描述和功能展示使其可以作为长期参考。

技术文章Fzakaria Blog

Actually Queryable Executables

本文介绍了一种名为 SELF 的可执行文件格式构想:将程序本身构建为一个 SQLite 数据库,利用 Linux 的 binfmt_misc 机制通过自定义解释器执行,使得可执行文件的内容、元数据乃至运行状态都可以用 SQL 查询和修改。作者给出了一个可运行的 proof-of-concept 服务器 self-httpd,该服务器的程序代码、网页内容、访问日志和业务数据全部存放在同一个 SQLite 文件中,运行时可对自身文件进行 ACID 事务写入,并支持在线更新页面、全文检索和跨版本迁移。文章对比了 redbean 的 ZIP 自解压方案,指出 SELF 借助 SQLite 将容器与查询能力合二为一。文中也说明了当前限制,例如 /proc/self/exe 不可用,以及原型仍较为粗糙。整体上展示了将可执行格式重新定义为数据库后,现有 SQL 工具链可以大幅简化二进制分发、部署和审计流程。

推荐收录。文章提出了一个真正可运行的原型,并用 self-httpd 演示了程序自身可查询、可事务更新、可全文检索等能力,不是空泛概念。它对研究可执行格式、系统软件架构和部署简化的读者有很强的启发价值,其将二进制内容映射为数据库行的方法可以直接迁移到其他工具链设计中。需要注意目前实现依赖 binfmt_misc 且尚不成熟,但作为长期参考和创意起点价值明显。

技术文章Simon Willison

Your executable is a SQLite database

本文介绍了一种巧妙的 Linux 模式:将 SQLite 数据库文件本身制作为可执行的二进制程序。核心做法是,把 SQLite 文件格式中第 68 字节开始的 4 字节应用 ID 设置为 `SELF`(Structured Executable & Linkable Format),并按照特定 schema 将 ELF 可执行格式的各组成部分放置到多个 SQLite 表中。随后,一个用 C 编写的 `self-exec` 解释器可以从这些表中提取并执行相关代码,从而实现一个既是数据库又是可执行文件的混合体。文章还说明了如何利用 Linux 的 `binfmt_misc` 机制注册文件模式,让内核在遇到这种文件时自动调用解释器,无需额外手动触发。文中给出了 schema 链接、解释器源码以及 NixOS 下的配置示例,足以引导读者复现和理解这一机制。该技巧既展示了对 SQLite 文件头和 ELF 格式的深度利用,也局限于以 Linux 为平台的实验性场景,并不适合作为生产级应用方案。

推荐收录。文章直接展现了 SQLite 文件头自定义应用 ID 与 Linux ELF/binfmt_misc 结合的完整思路,并附有 schema 和 C 代码链接,证据具体且可复现。对研究文件格式、操作系统机制或做创意工具设计的读者是很好的起点;其可迁移价值在于将数据存储格式与可执行文件格式融合的架构思想,风险是这更偏向实验性技巧,实际应用需谨慎。

工程实践Fzakaria Blog

Your executable is a SQLite database

文章提出用 SQLite 数据库文件替代 ELF 作为 Linux 可执行格式,作者在 NixOS 上实现了名为 SELF 的原型。核心做法是把程序头、加载段、符号表等建模成 SQL 表,利用 SQLite 的 application_id 和 binfmt_misc 让数据库文件可直接执行,并编写 self-exec 解释器完成加载、重定位和跳转。文中还展示两种动态链接方案:通过 glibc rtld-audit 用 SQL 查询替换库查找,以及完全用 SQL 实现 dynamic linker;并把整个 userland 的 723 个可执行文件及其依赖打包进一个 611.9 MiB 的数据库。基准显示单文件体积约为 ELF 的两倍,启动有约 5ms 固定开销且缺页共享受限,但通过 closure 去重后整体体积反而略小于源 ELF。文章明确承认这是原型,兼容性和性能仍是适用边界。

推荐收录。文章不是概念空想,而是给出可运行的 SELF 原型、SQL schema、加载器和完整基准,并用一个 723 可执行文件的 userland 数据库验证了可扩展性。对操作系统、二进制格式、动态链接和数据库方向的工程师与研究者,它能启发将“格式”重新理解为可查询数据模型,且作者对体积、延迟和缺页共享的量化边界值得迁移。

工程实践TiDB 社区博客 - 实践案例

关闭tuned服务影响集群性能案例分析

文章记录了某数据库集群在运行过程中出现响应时间突增、CPU 使用率升高、整体性能下降的现象。排查时发现期间曾执行过 systemctl stop tuned.service 操作,即关闭了 tuned 服务。通过检查 /etc/tuned/ 目录未找到自定义配置,使用 tuned-adm list 确认当前配置为 throughput-performance,但因 tuned 未启动导致该配置没有生效。启动 tuned 服务后,throughput-performance 配置生效,集群性能恢复正常。文章还简要介绍了 tuned 是系统级动态调优守护进程,throughput-performance 模式会关闭节能机制、启用 sysctl 优化、切换 I/O 调度器并将 CPU 调频策略设为 performance。该案例展示了操作系统服务配置对分布式数据库集群性能的显著影响,但缺少具体的性能指标对比与更深入的原因分析。

收录原因是它提供了一个真实的、可复现的运维排障案例:数据库性能劣化可能与 tuned 服务被关闭直接相关。对于负责数据库或分布式系统运维的工程师,文中通过 tuned-adm 检查配置、确认服务状态并恢复的排查路径具有直接可迁移性。但内容深度有限,建议结合官方手册进一步理解 tuned 参数细节。

工程实践ClickHouse Engineering

What else runs on your Postgres server, and how do we stop it from taking the database down?

文章讨论 ClickHouse Managed Postgres 如何在同一个 VM 上隔离 Postgres 与周边支撑进程(PgBouncer、WAL-G 备份代理、各类 exporter、本地 Prometheus、日志收集器和看门狗),避免它们反过来拖垮数据库。核心是三层内存防护:Go 运行时的 GOMEMLIMIT 先触发更积极的 GC,cgroup v2 的 memory.high 触发直接回收与限流,memory.max 作为硬上限并在该 cgroup 内触发 OOM,从而把 OOM 受害者限定在支撑服务而非 Postgres。CPU 用调度权重、备份缓冲区固定比例、日志内存限制和导出指标白名单分别设卡;磁盘打满时看门狗读取 pg_stat_activity 终止普通应用会话,但豁免复制与监控用户以保持 WAL 流和可观测性。局限是偏设计说明,缺少压测与故障复盘数据。

推荐收录:文章给出了可迁移的资源隔离模型——运行时预算加 cgroup 软硬上限、资源白名单、带豁免的应急终止路径,并逐条说明每种边界存在的理由。对自建或托管 Postgres、需要把监控备份等边车进程与主库共置的 SRE 和 DBA 读者有直接参考价值。主要不足是缺少压测与故障复盘数据,结论偏经验性。

工程实践ClickHouse Engineering

Why strict memory overcommit matters for Postgres

文章解释 Linux 内存 overcommit 策略为何对 Postgres 格外关键:默认策略下 OOM killer 会 SIGKILL 某个 backend,而 Postgres 只能假设共享内存段可能已损坏,于是终止所有 backend 并走崩溃恢复,等于整个实例重启。严格 overcommit(vm.overcommit_memory=2)让内核在物理内存耗尽前就以 ENOMEM 拒绝分配,Postgres 将其视为普通错误,仅报错并回滚当前事务。作者在同一台 EC2(m7i.2xlarge)上用相同 pgbench 负载对比两种策略,并给出 commit limit 的推导:先扣除预留的 huge pages,再按剩余内存的 80% 加 2GB 作为 sidecar 头寸,约为总内存的 60% 加 2GB。实验显示默认策略下 20 个旁观连接全部被断开、新连接中断约 30 秒,严格策略下仅 1 个查询失败、0 个连接受影响,且两者吞吐差异落在噪声范围内。边界是结论基于单一硬件与特定 shared_buffers、huge pages 配置。

推荐收录:文章用同一台 EC2 上默认与严格 overcommit 的对照实验,给出 CommitLimit 推导依据、OOM 杀死 backend 后的崩溃恢复日志以及 pgbench 吞吐对比,证据完整而非泛泛而谈。适合负责 Postgres/Linux 生产部署的 DBA 与 SRE,可把内存耗尽的影响从实例级重启降为单查询失败;限额计算与验证方法也可迁移到其他数据库。风险是结论依赖单一硬件与 huge pages 配置,需按实际内存布局重新核算。

工程实践Fzakaria Blog

nixpkgs-multiverse: the fewest nixpkgs

nixpkgs-multiverse 可从单个 flake 固定任意 Nix 包到历史任意版本。文章把版本固定建模为连续 revision 区间,目标是用最少 revision 点覆盖所有 pin,转化为贪心活动选择,O(n log n) 最优。若版本有空洞则 NP-完全,作者取最新连续段保持多项式可解。模拟显示 30 个近期版本 pin 只需约 10 个 revision;工具还提供最优性 plan、Nix API 与断言。需注意按 revision 分组可能拉回较早版本,且同版本字符串的闭包可能不同。

推荐收录。文章不是简单介绍工具功能,而是给出了清晰的算法建模、贪心最优性论证和 NP-完全边界,并用模拟数据验证收益。适合 Nix/Nixpkgs 用户、包管理工具开发者,以及对区间调度和工程权衡感兴趣的读者。可迁移价值在于把版本选择抽象成区间覆盖问题并利用贪心策略;主要风险是工具与 Nixpkgs 特定索引绑定,同类思路迁移到其他包管理器时需重新验证连续性假设。

技术文章LWN.net

[$] Development statistics for the 7.2 kernel

文章围绕 Linux 7.2 内核的发布展开,引用了 Linus Torvalds 对修复数量仍偏多的评论,并指出该版本是内核历史上最繁忙的开发周期之一,新增约 60 万行代码。随后文章转向统计数据,旨在揭示内核开发社区的演变趋势,包括开发者构成、补丁提交量、维护者分布等方面的变化。这类基于数据的内核开发过程分析,有助于读者理解大型开源项目的协作模式和演进节奏。文章的整体侧重点不是单点技术细节,而是开发社区的量化观察与趋势解读。

推荐收录,因为它是基于 LWN 权威来源的内核开发统计报道,提供了 7.2 内核版本的量化数据和社区趋势判断,适合关注 Linux 内核演进、开源协作模式或工程管理的读者。文中的数据视角可迁移到其他大型项目的社区分析中,具有长期参考价值。

技术文章LWN.net

[$] Bootstrappable builds: how and why

文章报道了 FOSSY 会议上 Timothy Sample 关于 bootstrappable builds(可引导构建)的演讲。它解释了这一概念:从一个极小的种子程序开始,逐步构建出更大的程序,最终从该种子构建出完整的现代 Linux 用户空间,从而让每一行代码的来源都完全可追溯。文章将其与更常见的 reproducible builds(可复现构建)做了区分,并阐述了动机:信任、审计、安全,以及避免依赖来历不明的二进制文件。同时,文章也提到了这类构建面临的现实挑战,例如种子程序的选取和构建链的脆弱性。内容以概念讲解和原理分析为主,适合作为理解软件供应链可信根基的入门参考。

推荐收录,因为文章来自 LWN 的会议报道,准确区分了可复现构建与可引导构建,并系统解释了构建链起源可信的重要性,属于软件供应链安全中常被忽视但长期有效的主题。对于系统开发者、安全工程师和开源基础设施维护者,文中的概念框架可直接迁移到构建系统设计与供应链风险评估中。

工程实践Fzakaria Blog

nixpkgs-multiverse: fast mode

文章介绍 nixpkgs-multiverse 项目的 fast mode,它让用户无需下载和求值完整 Nixpkgs 树即可直接获取任意历史版本的 store path。核心方法是利用 Nix 字符串的 context 机制,通过 builtins.appendContext 手动附加 path 上下文,并使用 mkFakeDerivation 技巧构造不依赖 --impure 的假派生,使 Nix CLI 仅从缓存便能实例化路径。作者解释了索引的构造方式:将 nixos-unstable 每期发布的 store-paths.xz 清单与 multiverse 的 (attribute, version) 索引 join 起来,得到每个版本的精确 store path。文章还讨论了边界,如 fake derivation 没有 drvPath 无法构建,需要 .out 后缀或通过 .eval 获取真实派生来支持 override 和 nix develop,且方案依赖 cache.nixos.org 长期保留所有历史路径(普查显示 271,187 个路径仍存活)。最后展示了配套的 mvs 命令行工具,可查询大小、反向依赖和识别 store path。

本文深入揭示了 Nix 求值与缓存的内部机制,提供了跳过求值直接引用 store path 的可行方案,并清楚说明了其局限。对于 Nix 重度用户和包管理工具开发者,文中的 context 操纵技巧与索引设计具有直接借鉴价值,适合作为 Nix 生态进阶参考收录。

技术文章LWN.net

Domas: Bypassing memory protection with AMD's memory controllers

Christopher Domas 发布了一份概念验证,展示如何利用 AMD 内存控制器的 bank swizzle 模式绕过内存保护,实现任意数据读写,包括 CPU 微码定义和平台安全处理器内存。文章指出,该行为在 AMD 官方手册中已有文档记录,但通过该模式访问任意内存并重写固件而不导致主机崩溃,似乎属于设计之外的非预期副作用。利用该技术需要内核级权限,因此对大多数软件并非直接威胁,但攻击者未来可能将其用于恶意目的。文章梳理了技术原理、触发条件和安全影响,并强调硬件文档与安全边界之间的潜在冲突。对于关注系统安全、内核防护和硬件设计风险的读者,这是一份重要的技术资料。

推荐收录,因为它揭示了硬件功能与安全预期之间的真实冲突,并给出了可复现的概念验证和官方文档依据,具备长期技术参考价值。适合系统安全研究者、内核开发者和硬件平台工程师阅读,有助于在设计加固和威胁建模时考虑类似侧效应。

工程实践Phil Eaton - databases

Intercepting and modifying Linux system calls with ptrace

文章介绍在amd64/Linux上使用ptrace拦截并修改系统调用,用Zig实现故障注入器,通过fork子进程、PTRACE_TRACEME和PTRACE_SYSCALL在系统调用入口与出口暂停。作者实现sys_write钩子:入口处把rdx写入长度截断2字节模拟短写;出口处将rax改为-EIO,从而绕过Go、Python、C内置write对EAGAIN的重试。文中还展示了用PTRACE_GETREGS/SETREGS操作寄存器,以及用PTRACE_PEEKDATA读取子进程内存打印写入内容。最终成功触发短写,并讨论方案局限:仅覆盖amd64/Linux、存在性能开销,未来可结合seccomp过滤优化。

推荐收录,因为文章用可运行的Zig代码完整演示了ptrace拦截系统调用的入口与出口、寄存器修改和内存读取,并通过真实调试发现Go/Python/C内置write对EAGAIN的重试行为,最终用返回EIO成功触发短写故障。适合从事Linux系统调试、故障注入和可靠性测试的工程师,方法可迁移到其他系统调用和语言,但需注意其仅覆盖amd64/Linux且ptrace存在性能开销。

技术文章Phil Eaton - databases

Things that go wrong with disk IO

本文围绕磁盘 I/O 中可能导致数据丢失或损坏的场景展开,涵盖写入未达磁盘、fsync 失败、数据损坏、部分写入、假写、误写/误读等。作者基于 Parity Lost and Parity Regained 与 Characteristics, Impact, and Tolerance of Partial Disk Failures 两篇论文,解释了 buffered I/O 下 fsync 的必要性及其不可靠性,并介绍校验和、原子写、O_DIRECT 等缓解措施。文中对比了 Postgres、SQLite、MySQL、MongoDB、RocksDB 等系统在持久化、校验和与撕裂写处理上的默认行为,指出部分系统默认开启校验和,部分未开启,且假写和误写/误读常被忽视。文章限定于 Linux 环境,强调不同文件系统与磁盘的扇区大小差异,适合需要理解存储可靠性边界的开发者和数据库工程师。

本文以具体故障场景为线索,结合真实数据库系统的默认行为,清晰解释了磁盘 I/O 中容易被忽视的可靠性问题,如 fsync 失败、撕裂写和假写。适合需要设计或维护持久化系统的工程师,尤其是数据库与存储系统开发者。其价值在于将零散的 I/O 风险系统化,帮助读者在事务性场景中做出更稳妥的 fsync、校验和与原子写决策。

工程实践LinkedIn Engineering - Architecture

Navigating the transition: adopting Azure Linux as LinkedIn’s ...

本文复盘了 LinkedIn 将服务器、虚拟机和容器从 CentOS 7 迁移到 Azure Linux 的完整历程,包括动机、规划、实施、挑战和效果。迁移核心动因是 CentOS 7 生命周期结束和业务对现代安全、性能及 AI 功能的需求,同时考虑了成本、合规和供应商支持。实施过程涵盖基础设施准备、容器镜像构建、开发者 VM 改造、配置管理适配和自动化迁移,重点解决了 XFS 文件系统调优、硬件驱动签名和开发者远程环境等难题。迁移后引导时间从1小时缩短至10-30分钟,安全性、部署速度和系统可靠性显著提升,文章还讨论了监控体系升级和反馈闭环。该案例适用于大型企业基础设施现代化场景,文中经验和方法具有可迁移性。

本文提供了大型互联网公司操作系统迁移的第一手工程实践,详细描述了从需求评估、试点到全量迁移的完整路径,包含具体技术挑战和解决方案(如容器镜像兼容、驱动签名、开发者环境),对于负责基础设施升级、云计算平台迁移或 DevOps 实践的工程师极具参考价值。适合企业架构师、SRE、系统管理员和云平台团队借鉴其迁移策略和自动化方法。

技术文章Fzakaria Blog

nixpkgs-multiverse is audacitymaxxing

文章介绍 nixpkgs-multiverse 项目,它通过一个 Nix flake 输入,提供 Nixpkgs 所有历史版本中每一版软件包的每一个独立版本。因 Nix 早于 FHS 的设计允许多版本共存,multiverse 收录了 304,484 个软件包版本对,涵盖 1,537 个 Nixpkgs 修订版,远超其他发行版;文中以 CPython 为例展示 246 个可并存的版本,并配有数据可视化对比。文章还说明 multiverse 帮助解决了 devenv 中依赖固定版本的长期问题,并介绍了 daysBehind 冷却窗口和 provenance 元数据特性。方案本质是 5 MB JSON 和 200 行 Nix 代码,并无复杂技术,但概念大胆,展现了 Nix 可复现构建与版本寻址的潜力。

本文展示了一个充分利用 Nix 可复现、多版本共存特性的创新案例,通过具体数据和真实工程问题解决(devenv 包固定)证明了其长期参考价值。适合对 Nix、开发环境可复现性及依赖管理感兴趣的开发者,文中的设计思路和方法可迁移到其他需要多版本支持或环境锁定的场景。

技术文章LWN.net

[$] Reconsidering O_CREAT|O_DIRECTORY

文章讨论 Linux 缺少原子性创建并打开目录的系统调用,现有的 mkdir() 与 open() 分离可能导致竞态条件。Jori Koolstra 提议重用 open() 的 O_CREAT|O_DIRECTORY 标志组合(当前返回错误)来实现该功能,但引发了对用户空间接口潜在陷阱的担忧。文中分析了该方案的语义细节,包括已存在目录处理、权限检查、符号链接跟随等,展示了设计安全、无歧义 API 的困难,并回顾了相关历史与替代方案。该议题虽未最终定案,但其深入的分析对理解系统调用设计、竞态条件与 API 安全性具有长期参考价值,重点面向系统编程与内核开发场景。

推荐收录,因为文章围绕一个具体的系统调用设计问题展开深入讨论,展示了接口语义的细微之处和竞态条件风险,而非简单功能介绍。适合 Linux 系统编程、安全或内核开发人员阅读,文中的 API 设计权衡和陷阱分析可迁移至其他系统接口设计场景,具有长期参考价值。

工程实践Fzakaria Blog

Guix by Nix

文章展示了“Guix by Nix”项目,通过 guix-transfer 工具将 Guix 的软件包派生图翻译为 Nix 派生,并利用 Nix 守护进程构建了一个可启动的虚拟机镜像。该镜像以 Guix 的 Linux-libre 为内核,用户空间全部来自翻译后的 Guix 软件包,并以 GNU Shepherd 作为 init 系统,完全排除了 systemd 和 D-Bus。作者提供了自动化审计机制,验证所有可执行文件和脚本解释器均源自 Guix 输出,确保无 Nixpkgs 组件混入。文章还讨论了与 Nixpkgs 混合、构建非 systemd 系统等潜在拓展,但明确当前仅为最小演示,不适合生产环境。该案例对理解构建系统互操作、可重现系统构建和 init 系统替换具有参考价值。

推荐收录,因为它不是简单的工具使用,而是展示了将 Guix 生态翻译到 Nix 构建系统的完整工程方案,并附带了可验证的审计链。这对研究构建系统、操作系统定制或探索 Nix 作为通用构建语言的读者有直接启发,文中跨生态翻译、派生图转换和自证明验证方法均可迁移到类似项目。

工程实践LWN.net

De Vlieger: The Fedora 45 sausage factory

本文是 Fedora 贡献者 Simon de Vlieger 对 Fedora 45 发行版构建过程的详细走查。从打包者提交 git 推送开始,文章逐步剖析了源代码与软件包如何被转化为最终发布产物,包括 ISO、云镜像、容器镜像和 OSTree 部署。作者解释了编译、打包、组合等阶段所使用的工具链与基础设施,并说明该流程会随版本迭代不断变化,本文意在为每个或每几个发布周期提供一份可追溯的历史记录。该走查为理解 Fedora 的发布工程提供了内部视角,但其具体实现绑定于 Fedora 45 和时间点,不一定适用于其他发行版或未来版本。

推荐收录,因为它提供了大型 Linux 发行版发布工程的稀缺内部视角,详细展示了从代码提交到最终制品的实际流水线,对负责构建系统、CI/CD 或发行版维护的工程师具有可迁移的参考价值。适合对开源基础设施和发布管理感兴趣的读者。

技术文章Fzakaria Blog

Linux kernel will support $ORIGIN, sort of

本文介绍了作者通过向 Linux 内核提交补丁,使内核支持在 PT_INTERP 和 shebang 中使用 $ORIGIN 的过程。最初提议在 VFS 层直接添加支持,经 VFS 维护者 Christian Brauner 建议,最终采用 eBPF 和 binfmt_misc 实现可编程解释器选择。文章展示了具体的 eBPF 程序示例,并讨论了新的 loader substitution 模式(L 标志),该模式允许原生执行二进制文件并透明替换解释器,解决了传统 binfmt_misc 中进程标识和 /proc/self/exe 指向解释器的问题。作者计划在相关补丁进入内核主线后,为 NixOS 开发一个可选模块,通过引入新的程序段(如 PT_INTERP_NIX)来保持向后兼容性。该方法不仅支持 $ORIGIN,还可用于动态选择 QEMU 等解释器,边界在于需要内核版本支持且依赖 binfmt_misc 和 eBPF 基础设施。

本文记录了真实的内核开发协作过程,从动机、技术方案迭代到最终实现,展示了如何利用 eBPF 和 binfmt_misc 解决可重定位二进制文件的痛点。对 Linux 内核开发、Nix/Bazel 等构建系统使用者以及关注动态链接器机制的技术人员有直接参考价值,其可编程解释器选择的思路可迁移至其他需要动态加载或仿真环境的场景。

工程实践LWN.net

Building an Arch Linux aarch64 port for Holo Core (Collabora blog)

本文概述了 Collabora 与 Valve 合作将 Arch Linux 移植到 aarch64 架构的工作,目标是为 Valve 的 64 位 Arm 蒸汽框架游戏系统提供操作系统。核心内容包括从零开始构建可重复的编译基础设施,生成源码、二进制包和容器镜像,并规划了能持续跟踪上游 Arch Linux 开发的 CI 系统。文章还讨论了移植过程中的挑战,如从第一性原理构建至特定快照,以及如何在此基础上实现自动化可重复构建。此外,提供了在 x86_64 主机上创建和测试 aarch64 构建容器的指导,以便没有 64 位 Arm 设备的用户参与。该工作尚在初期阶段,下一步是与上游合作完善移植并建立持续集成,其经验适用于操作系统移植和嵌入式构建场景。

推荐收录,因为文章记录了将 Arch Linux 移植到 aarch64 架构的真实工程过程,包括从零构建基础设施、实现可重复自动化构建,以及规划持续集成系统,这些经验对操作系统移植、构建系统和 CI/CD 的实践者具有直接的参考价值。同时,文中提供的跨架构测试方法也可迁移到其他类似项目。

工程实践LWN.net

Local DoS attack vectors in seunshare 3.10 (SUSE Security Team Blog)

文章深入分析了 SELinux 沙箱工具 seunshare 3.10 中的两个本地拒绝服务漏洞,并结合默认的 targeted SELinux 策略说明了其在交互用户上下文中的实际影响——尽管系统运行在 enforcing 模式,攻击者仍可在未限制域中获得 root 级权限提升。作者详细阐述了漏洞原理、利用场景以及 setuid-root 二进制文件在 SELinux 策略下的域转换缺陷,并给出了修复版本 3.11。该案例不仅提供了具体漏洞的技术细节,还揭示了安全机制与默认配置之间的潜在不匹配问题,适合用于理解 Linux 系统安全审计和实施加固。

文章来自 SUSE 安全团队,以真实漏洞为切入点,清晰展示了从审计发现到影响分析、再到修复的全过程,对安全工程师和系统管理员具有直接的参考价值。其核心价值在于说明默认 SELinux 策略可能无法完全约束 setuid 程序,帮助读者理解策略配置与二元权限之间的交互,可迁移至其他系统的安全加固评估中。

工程实践LWN.net

Many old shim versions are still accepted by secure boot

本文报道了 CMU CERT 协调中心发布的安全公告,指出大量存在已知漏洞的旧版 shim 引导加载程序仍被 UEFI 安全启动接受,因其从未被加入吊销列表。攻击者若能获得管理员权限或修改启动过程,即可利用这些漏洞在操作系统加载前执行任意代码,实现持久化平台入侵,包括加载未签名或恶意内核组件,且即使重装系统也可能无法清除。文章引用了公告中列出的受影响 shim 版本,并说明了这一威胁对 Linux 安全启动生态的现实影响。

收录理由:这则案例揭示了安全启动信任链在现实管理中的薄弱环节——吊销列表维护不善导致已修复漏洞持续暴露。对系统安全工程师、嵌入式开发者和安全研究者而言,文中梳理的攻击路径和影响可作为教训,在评估或设计信任锚更新机制时参考。

技术文章LWN.net

[$] Progress in modernizing kernel cryptography

这篇文章是对 2026 Linux Security Summit North America 上一场演讲的整理,主题是 Linux 内核密码学框架的现代化改造。Eric Biggers 先指出传统 crypto API 的几个问题:接口脆弱、调用方式繁琐、容易把实现细节暴露给内核开发者。随后他介绍了正在补充的 library API,目标是让开发者在不直接依赖旧式 crypto API 的情况下完成常见密码学操作,从而降低维护复杂度。文章还用具体示例说明,新接口在可读性和可维护性上都更友好。它的边界在于这是一次进展报告,主要展示方向与收益,而不是完整迁移指南或性能评测。

收录依据很明确:正文直接讨论了内核密码学框架的缺陷、新 library API 的引入,以及用例示例带来的可维护性提升。适合关注 Linux 内核、安全机制或 API 设计的读者,尤其对需要理解内核接口演进和重构取舍的人有迁移价值。

个人心得知乎 - 皮振伟

hugetop 诞生记:从实践中来,到实践中去

文章记录了作者为 procps-ng 增加 hugetop 工具的经历,并借此说明系统级开源贡献通常源自真实工作痛点。前半部分先解释 procps-ng 作为 Linux 基础工具集为什么新增命令门槛极高:必须是通用需求,还要兼容多架构、多内核版本以及各种边缘异常。随后作者以大页内存观测为例,指出过去需要在 /proc/meminfo、/sys/ 节点目录和 /proc/PID/smaps 之间来回切换,排障成本高且容易出错。基于自身在内核、虚拟化和高性能场景中的需求,他实现了 hugetop,提供 NUMA 维度和进程维度的大页可视化,并最终通过上游评审合入正式版本。文章的核心结论是:有价值的开源贡献不必等到“万事俱备”,从自己遇到的问题出发,把方案做成通用、稳妥的工具,再回到实践中验证其价值,才更容易形成可持续的公共收益。

推荐收录,因为正文给出了一个具体、可复用的开源贡献案例:从大页观测痛点出发,最终把个人脚本问题升级为上游通用工具。适合想参与 Linux/开源社区、做系统工具或从实践提炼需求的读者参考。

技术文章LWN.net

[$] The kernel's iomap layer

这篇文章解释了 Linux 内核里的 iomap 层到底是什么,以及它为什么会出现在文件系统实现中。作者把 iomap 描述为连接“文件偏移”与“底层存储位置”的映射层:上层面对的是某个文件中的数据范围,下层则可能对应内存地址或磁盘块。基于这层映射,iomap 统一承接了多种文件系统常见操作,从而减少各个文件系统里重复的样板代码。文章的核心结论是,iomap 主要价值在于把通用数据路径抽出来集中处理,但它并不替代文件系统自身的语义和映射逻辑,后者仍然需要各自实现。

收录价值明确,因为正文直接解释了 iomap 的职责边界、抽象对象和它替代重复代码的原因,属于内核文件系统实现层面的长期知识。适合 Linux 内核、存储系统和文件系统开发者阅读,尤其适合想理解通用数据路径如何被抽象与复用的人。

工程实践LWN.net

CalyxOS is back

这篇文章介绍 CalyxOS 在暂停发布后如何重新恢复发行,重点不是“回归”本身,而是重建了一套更安全、更可持续的发布体系。作者说明团队改用基于 HSM 的开源签名方案,并通过审计脚本验证 HSM 预置流程,以降低私钥泄露和单点故障风险。文章还提到发布基础设施被重构为更清晰的服务器分工,同时针对 Google 降低 AOSP 频率后带来的补丁合并成本,团队编写脚本来减少每月更新的手工负担。与此同时,作者也坦承仍有手工步骤无法自动化,例如每次更新都要补齐 kernel sources,以及维护 LineageOS/CalyxOS 的 base device trees。整体来看,它展示的是一个 Android 发行版在安全签名、发布工程和上游依赖变化下的系统性应对,但也明确了自动化的边界仍受制于上游供应和设备树维护。

收录价值在于它给出了可复用的发布安全改造案例:HSM 签名、审计脚本、去单点故障和发布基础设施重构都有具体证据。适合关注开源发行版、安全发布链路和上游变更治理的读者参考,也能迁移到其他需要高可信发布流程的项目中。

技术文章LWN.net

[$] Efficient access to local storage for BPF programs

这篇文章围绕 BPF 程序访问内核本地存储时的效率问题展开,说明该能力常被用于在网络路径中为数据包关联附加信息。作者结合 Linux Storage/Filesystem/Memory-Management/BPF Summit 上的两场分享,分别讨论了通用性能瓶颈,尤其是锁带来的开销,以及网络子系统中本地存储的具体使用方式。文章的核心结论是:本地存储虽然语义简单,但在高频访问场景下容易成为热点,优化必须同时考虑锁竞争、访问路径和数据布局。它更偏向内核机制与性能分析,而不是面向普通 BPF 开发者的入门教程。适合关注 Linux 内核、网络栈和 BPF 性能优化的读者参考。

推荐收录,因为正文明确讨论了 BPF 本地存储的访问效率、锁竞争和网络子系统中的实际使用,这些都是可迁移的内核性能分析点。适合做 Linux/BPF、网络栈优化和系统性能调优的读者阅读,但它偏会议讨论转述,深度主要来自问题分析而非完整实现细节。

个人心得Fzakaria Blog

A TacoSprint 2026 Retrospective

文章回顾了作者在墨西哥 La Saladita 组织的 TacoSprint 2026,这是一场面向 Nix 社区的首次北美 sprint。作者从选址、搭网站、拉赞助到招募参与者,详细记录了新活动在报名不足、旅行安全顾虑和航班紧张上的现实阻力。活动期间,冲浪与编码交替的日程让团队保持了稳定节奏,并在一周内推进了动态链接、可重定位二进制、远程构建、模块系统、OCaml 运行时裁剪和跨发行版打包等工作。文中还提到 LLM agents 的交流,以及一篇仿学术风格的 trip report,整体更偏社区组织与生产力经验,而非单点技术教程。

可收录,因为它直接呈现了首个北美 Nix sprint 的组织过程、现实阻力和可持续协作节奏,适合开源社区组织者、Nix 贡献者和想提升团队产出的读者。需要注意的是,文章主要是 retrospective,技术细节分散,不适合作为某一技术方案的深入参考。

个人心得知乎 - 皮振伟

一个“外行人”与Redis/Valkey的六年

文章回顾作者从 Linux 内核、KVM 和存储虚拟化背景切入 Redis/Valkey 社区的六年经历,强调自己并非缓存数据库“专家”,却能借助外行视角持续发现内核、网络与数据库之间的协作点。前半部分列举了线程命名、CPU 亲和性、THP 开关和 LTTNG trace 等改动,说明这些功能如何帮助观测、隔离和排查长尾延迟。后半部分重点讲述 Valkey Over RDMA 与 Valkey Over MPTCP:前者围绕 RESP3 与 RDMA 消息语义的适配、连接抽象层改造和上游合入,验证了高性能网络可带来约 2.5 倍性能提升;后者则面向跨机房同步与多路径容错完成了客户端、服务端和工具链适配。文章也交代了从 Redis PR 长期无回应到 Valkey 社区推进落地的过程,并记录了社区协作、测试验证和发行版打包的推进路径。整体更像一篇带有技术细节的开源成长记录,适合想参与基础设施和数据库开源项目的读者参考,但方法论总结偏经验化而非系统化教程。

推荐收录,因为文章给出了从“外行”切入核心开源项目的具体证据:RDMA、MPTCP、THP、LTTNG 等改动都落到可验证的代码与性能结果上。对想参与基础设施开源、做跨层性能优化或理解社区协作流程的读者,具有可迁移的实践参考价值。

技术文章LWN.net

[$] Initiating writeback earlier

文章围绕 Linux 内核中的 writeback 机制展开,解释了脏页或脏 folio 何时从页缓存刷盘、以保证文件修改持久化。作者转述在 2026 Linux Storage、Filesystem、Memory Management and BPF Summit 上的讨论:Jeff Layton 提出是否应比现状更早触发 writeback,以减少延迟堆积和后续集中回写带来的压力。与会者对“应该更早启动”基本达成共识,但对于由谁触发、触发条件如何设定、以及如何兼顾吞吐和抖动控制,仍没有清晰可落地的路径。文章更像一次内核社区方案讨论纪要,重点在问题定义、权衡关系和未决点,而不是给出最终实现。其价值主要在于帮助读者理解写回策略与内存/存储子系统之间的耦合边界。

收录理由很明确:正文直接讨论 Linux 内核 writeback 的触发时机、系统权衡和社区共识,属于可长期参考的存储/内存管理议题。适合做内核、文件系统和性能调优的背景阅读,但它偏讨论纪要,缺少最终方案与实现细节,读者需注意其阶段性和未决性。

技术文章LWN.net

[$] Hardening the kernel with allocation tokens and bootpatch-SLR

文章讨论 Linux 内核在“无法迅速消灭所有漏洞”的前提下,如何通过加固手段提高漏洞利用难度。作者重点介绍了即将进入 7.2 版本的分配令牌机制:它改变动态分配结构在内存中的放置方式,使攻击者更难覆盖相邻对象或稳定构造利用链。文章还提到一个更长期的 bootpatch-SLR 计划,目标是在启动阶段随机化结构布局,进一步削弱面向内存破坏的利用可预测性。整体上,这类方案属于防御性加固而非根除缺陷,因此效果取决于具体对象布局、内核子系统和攻击模型,且需要权衡兼容性与性能。

文章直接给出内核加固的两个具体方向:7.2 版本中的分配令牌改动,以及更长期的 bootpatch-SLR 随机化方案,证据明确且具有系统级参考价值。适合内核、安全和系统软件读者,用来理解“在漏洞不可避免时如何提高利用成本”的可迁移思路。

工程实践Datadog Engineering

Scaling real-time file monitoring with eBPF: How we filtered billions of kernel events per minute

文章介绍 Datadog 如何用 eBPF 构建实时文件监控,在保持完整检测覆盖的前提下,将内核事件处理规模提升到每分钟 100 亿级。核心问题不是“能否采集”,而是如何在内核态对海量事件做前置过滤,减少无效上报、避免用户态开销和放大效应。作者围绕事件选择、规则匹配、上下文保留与数据路径设计,说明了怎样把原本细粒度的文件访问流量压缩成可分析信号。文中还讨论了性能瓶颈、验证方法以及与检测准确率之间的权衡,强调系统要同时满足低延迟、低丢弃和可维护性。这套经验适合主机安全、可观测性或高频内核事件采样团队,但方案强依赖 eBPF/Linux 环境,迁移到其他平台需重新评估事件模型。

推荐收录,因为文章给出了把 eBPF 文件监控扩展到每分钟百亿级内核事件的具体过滤与数据路径设计,而不是泛泛介绍特性。适合主机安全、可观测性和 Linux 内核工程读者参考,尤其有助于理解高频事件下如何在覆盖率、延迟和开销之间做取舍。

工具笔记Brendan Gregg

Doom GPU Flame Graphs

文章介绍了 Brendan Gregg 团队开源的 AI Flame Graphs 新能力:在 Intel Battlemage GPU 上生成完整的 GPU flame graph,并与 FlameScope 结合做 CPU/GPU 的亚秒级可视化分析。作者用 GZDoom 作为案例,通过自制的高负载地图把不同房间的渲染、后处理、stencil 和 sprite 开销拆开观察,并用 GPU flame scope 定位到具体时间窗口。文中还展示了 CPU 端的 shader 编译与 NIR 预处理如何对应到 GPU 空转区间,说明这种图形化方法能快速建立跨 CPU/GPU 的因果关联。与此同时,文章明确列出使用门槛:需要 Linux root 权限、较新的内核与显卡驱动、启用 eustalls/eudebug 接口,以及带 frame pointers 的系统库和应用。它的适用边界也很清楚:当前主要面向 Intel 硬件与 Linux,且采样开销、驱动支持和环境准备仍在完善中。

推荐收录,因为文章给出了可操作的 GPU 性能剖析方法、命令示例和完整环境要求,而不是停留在概念介绍。适合做图形渲染、GPU profiling 和性能诊断参考,但当前局限于 Intel/Linux 生态,部署门槛较高。

工程实践Brendan Gregg

No More Blue Fridays

文章以一次大规模 Windows 蓝屏和全球性故障为切入点,讨论内核驱动在软件更新中的高风险,以及为何把安全代理迁移到 eBPF 能显著降低“更新即宕机”的概率。作者解释了 eBPF 的核心机制:程序必须先经过 verifier 的安全检查,无法通过的代码会被拒绝执行,因此即使逻辑有误也通常只会造成资源浪费,而不至于直接崩溃整个内核。文章进一步指出,Linux 已广泛具备 eBPF 能力,Windows 也在推进相关支持,因而安全、网络和可观测性场景都可能受益。与此同时,作者也承认 eBPF 自身的管理代码仍可能有缺陷,不能把它理解为“零风险”,只是把高危的内核崩溃风险转移到更可控的软件层面。文末强调,eBPF 并不能替代灰度发布、canary 和分阶段回滚等工程手段,但它可以成为商业软件厂商和客户共同推动的默认安全约束。

有明确的现实故障案例、机制解释和边界讨论,不是单纯观点输出;对做安全代理、系统软件、运维平台和可观测性的读者都很有参考价值。它还给出了可迁移的采购/架构约束:要求厂商采用 eBPF 以降低内核崩溃风险,但同时要保留灰度和回滚等防线。