为什么linux的systemd在这么多年后仍然存在分歧

systemd已经有10年的历史了,但是Linux社区对它的感觉还没有成熟,它现在和以前一样具有分裂性。尽管许多主要的Linux发行版都使用它,但铁杆反对者并没有松懈。...

systemd已经有10年的历史了,但是Linux社区对它的感觉还没有成熟,它现在和以前一样具有分裂性。尽管许多主要的Linux发行版都使用它,但铁杆反对者并没有松懈。

linux引导序列

打开计算机电源后,硬件将引导,然后(根据计算机使用的引导扇区类型)执行主引导记录(MBR)或运行统一可扩展固件接口(UEFI)。最后一个动作是启动Linux内核。

内核被加载到内存中,自我解压并初始化。临时文件系统通常由名为initramfs或initrd的实用程序在RAM中创建。这允许确定和加载所需的驱动程序。这反过来允许用户空间文件系统加载并准备建立用户空间环境。

用户空间环境的创建由init进程处理,init进程是内核在用户空间中启动的第一个进程。它的进程ID(PID)为1。所有其他进程都是init进程的直接或间接子进程。

在systemd之前,init进程的主流默认值是对Unix系统V init的重写。还有其他选择,但systemvinit是大多数非Berkeley软件发行版(BSD)派生发行版的标准选项。因为它直接来自systemv Unix,Linux的精神祖先,许多人认为它是进行init的“官方方式”。

init进程启动使操作系统以有意义的交互方式工作所需的所有守护进程和服务。这些守护进程处理诸如网络堆栈、启用计算机内部的其他硬件以及提供引导屏幕之类的事情。

许多后台进程在启动后继续运行。它们可以记录事件信息、在**或删除设备时监视硬件更改以及管理用户登录。毫不奇怪,init系统还包括管理服务的特性。

我们可以使用ps来查看PID为1的进程。我们将使用f(完整格式列表)和p(PID)选项:

ps -fp 1

为什么linux的systemd在这么多年后仍然存在分歧

我们看到PID为1的过程是系统化的。在Manjaro-Linux上运行相同的命令会产生不同的结果。PID为1的进程被标识为/**in/init。快速查看该文件会发现它是指向systemd的符号链接:

ps -fp 1 ls -hl /**in/init

为什么linux的systemd在这么多年后仍然存在分歧

通过对ps使用ppid(父进程ID)选项,我们可以看到systemd直接启动了哪些进程:

ps -f --ppid 1

为什么linux的systemd在这么多年后仍然存在分歧

这是一个很长的列表,如下图所示。

为什么linux的systemd在这么多年后仍然存在分歧

替代品

有几个项目试图产生一种替代传统系统V init的方法。主要问题之一是,使用systemvinit,所有进程都是一个接一个地连续启动的。为了提高引导序列的效率,许多替代项目使用并行来并发和异步地启动进程。

以下是一些信息:

  • Upstart:由Canonical开发,用于ubuntu9.10、Red Hat、Red Hat Enterprise Linux(RHEL)6、CentOS 6和Fedora 9。
  • Runit:运行在FreeBSD和其他BSD衍生物、macOS、Solaris以及Linux系统上。它也是voidlinux上的默认init系统。
  • s6linux-init:这个对systemv-init的替换是为了严格遵循Unix的理念而设计的,这种理念通常被简化为“做一件事,把它做好”

还有许多其他不同的功能和设计。然而,他们中没有一个**了系统所**的狂怒。

系统的方法

systemd于2010年发布,2011年在Fedora中使用。从那时起,它被许多发行版采用。它是由雷德哈特的两位软件工程师lennartpoettering和kaysiewers开发的。

systemd不仅仅是init的替代品。相反,它是一个由大约70个二进制文件组成的套件,用于处理系统初始化、守护进程和服务、日志记录和日志记录,以及许多其他已经由Linux中的专用模块处理的功能。其中大部分与系统初始化无关。

systemd提供的一些守护程序包括:

  • systemd udevd:管理物理设备。
  • systemd logind:管理用户登录。
  • systemd resolved:为本地应用程序提供网络名称解析。
  • systemd networkd:管理和检测网络设备,并管理网络配置。
  • systemd tmpfiles:创建、删除和清理易失性和临时文件和目录。
  • systemd localed:管理系统区域设置。
  • systemd:检测和监视虚拟机和容器。
  • systemd nspawn:可以在轻量级命名空间容器中启动命令或其他进程,提供类似chroot的功能。

而这只是冰山一角,也是问题的症结所在。systemd早已超出了init系统的要求,根据它的反对者的说法,这正是范围蠕变的定义。

“太大了。它做的太多了。”

systemd的反对者指出了它包含的大量奇怪的功能组合。所有这些特性都已经存在于Linux中,而且,也许其中一些特性需要更新或采用新的方法。然而,将所有这些功能捆绑到一个本应是init系统的系统中,在体系结构上是令人费解的。

systemd被称为太多关键功能的单点故障,但这似乎是不合理的。诚然,它抛弃了Unix的理念,即创建可以协同工作的小工具,而不是将所有事情都放到窗外的大块软件。虽然systemd并不是严格意义上的单片(它由许多二进制文件组成,而不是一个巨大的二进制文件),但它确实在一个伞下包含了许多不同的管理工具和命令。

虽然它可能不是铁板一块,但它很大。为了了解规模,我们计算了内核5.6.15代码库和GitHub存储库的systemd主分支中的文本行数。

这是一个相对粗糙的指标。它计算的是文本行,而不仅仅是代码行。所以,这包括评论、文档和其他一切。然而,这是一个相似的比较,给了我们一个简单的标准:

( find ./ -name '*.*' -print0 | xargs -0 cat ) | wc -l

内核有将近2800万(确切地说是27784340)行文本。相比之下,systemd有1349969人,接近140万人。用我们的happy-go-lucky度量,systemd的大小大约是内核的5%,这太疯狂了!

作为另一个比较,用于Arch Linux发行版的systemv init的现代实现的行数为1721行。

Poettering显然没有考虑到电气与电子工程师协会(IEEE)的计算机协会,也没有考虑到便携式操作系统接口(POSIX)标准。事实上,他鼓励开发人员忽略POSIX:

“So, get yourself a copy of The Linux Programming Interface, ignore everything it says about POSIX compatibility and hack away your amazing Linux software. It’s quite relieving!”

有人指责systemd是一个只对redhat有利的redhat项目,然而它却被强制提供给了更广泛的Linux世界。是的,它诞生于红帽之中,由红帽统治和操纵。然而,在1321名投稿人中,只有一小部分人为Red Hat工作。

那么,红帽有什么好处呢?

曾任Red Hat首席执行官的IBM总裁Jim Whitehurst说:

“Red Hat c***idered many available opti*** and even used Canonical’s Upstart for Red Hat Enterprise Linux 6. Ultimately, we chose systemd because it is the best architecture that provides the extensibility, simplicity, scalability, and well-defined interfaces to address the problems we see today and foresee in the future.”

怀特赫斯特还说,他们也看到了嵌入式系统的好处。Red Hat与“世界上最大的嵌入式供应商合作,特别是在稳定性和可靠性是首要考虑的电信和汽车行业。”

这些从技术上讲似乎是合理的理由。你可以理解公司对可靠性的需求,红帽为自己的利益着想也无可厚非,但其他人是否应该效仿?

喝系统的可乐?

一些反对systemd的人说,分发和人们只是盲目地跟随红帽的领导,并采用它。

然而,就像“喝可乐”这句话,这是不太正确的。这句话是1978年在邪教领袖吉姆·琼斯(Jim Jones)通过喝一种掺有氰化物的葡萄味液体,强迫他的900多名追随者**后产生的,它错误地羞辱了库尔·艾德。这群人实际上喝了调味剂,但库尔艾德从那以后就被刷子涂上了焦油。

另外,Linux发行版并没有盲目地追随Red Hat;他们经过认真考虑后采用了systemd。关于Debian邮件列表的争论持续了很长时间。然而,在2014年,社区投票决定采用systemd作为默认的init系统,但同时也支持替代方案。

Debian是一个重要的例子,因为它不是从RedHat、Fedora或CentOS派生的。红帽公司对德比安没有任何指导作用。Debian和PID 1一样,有许多后代,包括Ubuntu和它的许多衍生产品。

Debian社区做出的决定意义深远。他们也进行了激烈的辩论,并投票使用孔多塞投票方法。社区也不会轻易做出这样的选择。

它在2019年12月再次投票决定继续关注systemd,并继续探索替代方案。与盲目追随相反,这实际上是一个教科书上的民主和工作选择自由的例子。

选择的局限性

您通常无法选择是否将systemd用于特定的Linux发行版。相反,发行版自己选择是否要使用它,您可以选择您喜欢的Linux发行版。也许你喜欢的Linux发行版换成了systemd。就像一个最喜欢的音乐家改变了风格一样,这可能会让人感到不安。

使用Debian、Fedora、CentOS、Ubuntu、Arch、Solus和openSUSE,并且反对采用systemd的人,可能会觉得他们被排挤在使用自己选择的发行版之外。如果他们对任何一种体系结构选择、范围蠕变或对POSIX的漠视有足够强烈的感觉,他们可能会发现继续使用这种分布是站不住脚的。

当然有光谱。一方面,你有不了解问题(甚至不关心问题)的人,另一方面,你有热情的反对者。处于中间的是那些不喜欢改变的人,但他们并没有为此操心到跳槽的地步。但是分配难民怎么办,他们由于自己的偏好或原则而不能坚持自己选择的分配?

不幸的是,安装任何一个init系统都不容易。不是每个人都有这样的技术能力,即使当应用程序或桌面环境(如GNOME)依赖于systemd时会出现困难。

换个发行版怎么样?有些,比如Devuan,出现在采用systemd的发行版的非systemd分支(在本例中是Debian)。使用Devuan应该类似于父发行版,但并非所有非系统化的fork都是这样。例如,如果你离开Fedora,搬到AntiX、Gentoo或Slackware,你会有一个非常不同的体验。

它哪儿也去不了

我喜欢systemd的一些功能(简单和标准化的过程控制机制)。我不理解它的一些功能(二进制日志)的基本原理。我也不喜欢它的一些功能(修改主文件夹是谁要求的?)。

像Debian这样的发行版正在做一件聪明的事情,并研究各种替代方案以保持其选择的开放性。然而,systemd是长期存在的。

如果您为其他人管理Linux机器,请学习systemd以及systemv init。这样,无论遇到哪种情况,你都能履行自己的职责。

就在家里用Linux?如果是这样,请选择一个既能满足您的技术需求又能补充您的Linux思想的发行版。

相关:Systemd将改变Linux主目录的工作方式

  • 发表于 2021-04-02 02:56
  • 阅读 ( 181 )
  • 分类:互联网

你可能感兴趣的文章

4种方式开源软件不够好

...确实提供了一个API,让开源客户机访问驱动程序。这就是为什么第一次设置GNOME桌面时可以同步Google数据的原因。 ...

  • 发布于 2021-03-12 11:59
  • 阅读 ( 209 )

什么是容器linux?您应该使用它吗?

... 容器linux实践:为什么要使用容器? ...

  • 发布于 2021-03-15 05:37
  • 阅读 ( 212 )

5个创新的linux操作系统您今天应该尝试一下

... 你认为还有哪些Linux操作系统是创新的?为什么? ...

  • 发布于 2021-03-15 07:17
  • 阅读 ( 199 )

如何控制linux启动服务和守护进程

... 为什么要摆弄这些设置? ...

  • 发布于 2021-03-15 11:22
  • 阅读 ( 217 )

Windows10让所有这些应用程序都变得多余了

...受欢迎的是CutePDF。这个应用程序仍然存在,但很难理解为什么有人会选择在Windows的原生功能上使用它。 ...

  • 发布于 2021-03-17 02:12
  • 阅读 ( 142 )

坚持使用ubuntulinux的8个理由

... 如果Canonical似乎不再那么关心Ubuntu桌面,你为什么要这么做呢?事实证明,坚持使用这个特定版本的Linux有很多理由。 ...

  • 发布于 2021-03-22 18:01
  • 阅读 ( 240 )

没有systemd的linux:为什么要使用devuan,debian fork

您可能会对Linux社区的危机感到惊讶。几年前,systemd init系统的创建加重了许多开发人员和用户的负担。大多数基于Linux的操作系统都采用了systemd,但也有一些选择了另一种方法。 ...

  • 发布于 2021-03-24 05:46
  • 阅读 ( 232 )

2018年最受欢迎的10款linux应用程序和发行版

...欢这样一个事实:Slackware没有“毫无意义”的添加,比如systemd、pam和SELinux。由于这些原因和其他许多原因,Slackware是Linux服务器世界中最受欢迎的孩子。 ...

  • 发布于 2021-03-25 18:09
  • 阅读 ( 227 )

没有systemd的最佳linux发行版

...的东西,通常是“init”——那么你就不是。 相关报道:为什么Linux的systemd在这么多年后仍然存在分歧 哲学、建筑和工程质量 不同的人出于不同的原因反对制度。对某些人来说,这是对传统Unix哲学的漠视。虽然它不是一个强制...

  • 发布于 2021-03-31 14:20
  • 阅读 ( 192 )

如何检查linux内核和操作系统版本

...算机上运行的内容不太可能是您最初安装的内容。这就是为什么知道你的系统有哪个版本的Linux和内核是至关重要的,你需要这些信息来知道安全补丁是否适用于你的系统。 有多种方法可以找到这些信息,其中一些方法可以在任...

  • 发布于 2021-04-01 13:11
  • 阅读 ( 193 )
pxqnhp9613
pxqnhp9613

0 篇文章

相关推荐