DocOpt

docopt模块的思路和argparse不同,它认为,一个程序的命令行参数和选项应当通过文档自动实现,开发者的任务仅仅只是写出文档而已

阅读全文 »

译自:darknedgy.net

1
我并不确定自己是否真的热衷于重新实现NetworkManager……

—— Lennart Poettering,2011年3月

十年前,systemd 首次出现在世人面前,迅速成为近代历史上最持久、最具争议性和两极分化的软件之一,尤其是在 GNU/Linux 世界中。然而,自 2012 年至 2014 年的大规模社区论战以来,围绕 systemd 的辩论并未在质量上有任何提升。尽管 systemd 受到了广泛关注,但从技术和社会层面来看,人们对它的理解和研究仍然严重匮乏。

我撰写这篇文章,既是为自己寻求一份慰藉——让我能够彻底放下对它的纠结,也是希望我的分析能为这场长达十年的闹剧提供一些新的思考,而不至于让它如 Benno Rice 著名的描述那样,“不过是一场悲剧罢了”。

在第一章中,我将基于当时的邮件列表,探讨在 systemd 出现之前,为现代化 init 程序、rc 脚本和服务管理方法所做的努力,以及那些推动变革的主要动机。我会从不同类型的 Linux 用户之间的文化分歧开始谈起。

第二章中,我将讨论 systemd 的早期历史和设计哲学,以及促使其被广泛采用的因素。

第三章将对 systemd 进行技术层面的批评。我假设读者已经熟悉 systemd,并将重点放在其实现细节上。我还会包含一些基于 Bug 报告的“案例研究”,以更深入地阐释一些较为枯燥的理论。

第四章将探讨在自由开源软件(FOSS)开发中与 systemd 类似的其他历史事件,综合第一章和第二章中的一些主题,并对 Linux 低层用户空间(Low-level Userspace)的未来前景提出一些猜想。

阅读全文 »

概念解析

CGroup,全称Control Group,是Linux内核提供的一种可以限制,记录,隔离进程组所使用资源的机制。它最初由Google提出,后被整合进Linux内核。它的功能包括:

阅读全文 »

MKOSI-INITRD

mkosi-initrd是使用MKOSI进行Initrd构建的工具。

1
mkosi-initrd [选项]

可用选项有:

  • -k|--kernel-version=:使用的内核版本,默认使用$(uname -r)
  • -t|--format=:输出格式,可选值有cpiouki,默认使用cpio
  • -g|--generic:生成通用Initrd,即可以在不同的硬件平台上启动当前系统的Initrd
  • -o|--output=:输出文件名前缀,默认为initrd
  • -O|--output-dir=:输出的目录,默认为工作目录。
  • --profile:启用的额外Initrd配置,默认不启用。
    • lvm:LVM支持。
  • --debug:Debug输出。
  • --debug-sandbox:使用strace运行mkosi-sandbox
阅读全文 »

什么是Incus

2023年7月5日,Canonical宣布全面接管LXD。原先的LXD工作组对此相当不满,因此Fork并重新制作了移除掉所有Canonical相关内容的Incus。

阅读全文 »

GUI框架

GUI框架大体上可以分为三类:

  1. Web-based框架:专用于Web场景下的前端框架,例如Vue.js、React和Angular,大部分和JavaScript语言绑定。Electron、Tauri等技术使得这类框架编写本地程序变得可能。
  2. 独立渲染引擎框架:具备自己的渲染引擎的框架,例如Flutter(Skia/Impeller)、GTK(Cairo)、Qt(Raster)。
  3. 原生UI:操作系统的图形子系统直接暴露出来的UI接口。例如Windows的Win32 API,MacOS的Cocoa。
    • Linux没有在内核中实现图形栈,所以对于Linux发行版来说,没有一种严格意义上的原生UI。
阅读全文 »

守护进程不是服务

守护进程不是服务,或者说,守护进程不完全是服务,服务意味着一个后台进程,和能够通过某种方式与后台进程进行交流与控制的另一个进程;而守护进程仅仅意味着服务的后台进程部分

阅读全文 »
0%