从新贵切换到systemd的理由?


Answers:


29

通过设计,Layman用户不应注意到任何更改。这是一个初始化系统,而不是用户传统上与之交互的系统。它应该完全替代Upstart提供的功能-并做一些额外的事情-但非技术用户只能在出错时看到它。

一直在积极使用和开发Upstart的用户,系统管理员和开发人员是需要解决问题的人员。Ubuntu Wiki上一个迁移文档,可帮助开发人员转换其初始化脚本,但用户和sysops可以坚持使用14.04(直到2019年受支持)来继续使用Upstart。

改变的理由和理由实际上并非来自Ubuntu。Canonical对Upstart(他们的项目)非常满意,但许多Debian用户希望迁移到现代的init引擎,以在启动时获得更好的并发性,并更好地监视所有服务的功能。

这就意味着各种选择(基本原理)和系统化的胜利之间的斗争

Canonical与Debian一起使用是因为它最简单,而且可能是最好的。他们放弃了一个项目,并没有在上游奋斗。这也使我们与也正在转向systemd的其他发行版(Red Hat,Fedora等)保持一致。更加集中精力,减少重复工作。

tl; dr对于非技术人员,这根本不会影响您。对于Ubuntu,这意味着更少的工作和更好的初始化系统。


18

任何人都可以向非技术用户充分解释这对我们有何影响,以及是否会产生影响?

从理论上讲,这不应该影响那些不参与系统实际工作的具体细节的非技术性最终用户。在实践中,您将看到很多东西。

这是不完整的清单:

  • 如果您有使用新贵职位定义文件启动程序的附加软件,它们将停止工作。您将必须安装(并且可能要编写,但更常见的是仅切掉已经编写过的其他人)systemd 服务单元文件。例如:https//askubuntu.com/questions/613785
  • 系统开发人员对电源管理之类的各种设计假设导致默认设置与您可能习惯的设置不一致。 例如,系统开发人员对于响应笔记本电脑上的盖开关应该发生什么有非常明确的想法
  • 如果您使用的是nvidia专有的显示驱动程序,那么systemd中会有各种影响您的设计决策。例如:https//askubuntu.com/questions/613773
  • 从暴发户那里来时并没有什么关系,因为Ubuntu用户已有多年的手册页告诉他们这一点,但是我为那些可能会读到此内容的非Ubuntu用户提到了这一点:其他来自System 5 init+的Linux操作系统用户rc被systemd 向后兼容System 5 的事实所困扰rc。与新贵公司(甚至大多数其他系统)一样,它声称并提供与System 5 init及其配置文件没有向后兼容性/etc/inittab

    因此,遵循30年来建议“好吧,您可以将其编辑为/etc/inittab…” 的人们的建议,或者使用遵循该建议的软件的人们现在拥有的软件并非从头开始。示例:https//unix.stackexchange.com/a/196197/5132

  • 您无法像以前的命令那样通过systemd 命令进入单用户模式。除了在systemd行话中称为救援模式的事实外,在systemd世界视图中,救援模式不被视为关闭状态。它被认为是运行状态。 将关闭机器电源。它要在系统世界中达到单用户模式。进一步阅读:https : //unix.stackexchange.com/a/196471/5132shutdownshutdownshutdown nowsystemctl rescue
  • 关于最后一个主题:如果您还没有放弃运行级别的想法,现在是时候这样做了。进一步阅读:https : //unix.stackexchange.com/a/196014/5132
  • 您必须谨慎遵循随机WWW浏览发现的一般systemd建议,因为您“知道”“现在全部系统化”。您将看到人们谈论带有--user选项的运行命令systemctl。尚不适用于Ubuntu。upstart和systemd在这方面有很大的不同,Ubuntu 15版仍然使用upstart 每会话init而不是systemd 每用户实例。因此,例如,https://superuser.com/a/860598/38062将不适用。☺

6

正如其他人已经在这里指出的那样,从理论上讲,这不应该影响非技术的最终用户-从理论上讲,理论与实践之间没有区别,但在实践中却有区别。

澄清度

我认为此处发布的几件事需要澄清:

这是一个初始化系统,而不是用户传统上与之交互的系统。

SysV init和Upstart就是这种情况,而systemd不再是这种情况。传统上,它可以做很多用户交互的事情:


它应该完全取代Upstart提供的功能,并做一些额外的事情

需要澄清两件事-首先是完全取代Upstart:

没有SysV初始化脚本

人们对systemd的问题之一是它不运行SysV初始化脚本。因此,有一个示例无法完全替代Upstart提供的功能。

这是我们可以依靠的30多年,传统上,您编写SysV初始化脚本是为了获得最大的可移植性,而无需重复自己(通过编写相同脚本的多个版本),现在不再是这种情况。

仅使用官方存储库中的软件包时,这应该不是问题,因为以前所有具有SysV初始化脚本或Upstart脚本的软件包都需要在重写脚本之前对其脚本进行重写。

对于碰巧使用任何第三方软件或自定义软件(其初始化脚本是为SysV init或Upstart编写的)的人来说,这只是一个问题,而那些人需要在升级到systemd或更高版本的系统之前,先重写初始化脚本。已安装的新贵(这也是一个选择),或者迁移到不使用systemd的系统)。

有systemd-sysv-generator应该可以自动将SysV初始化脚本转换为systemd脚本,但是存在一些错误以及一长串明显的不兼容性

现在,第二个澄清-关于一些额外的内容:

多余的东西

那些“一些额外的东西”是systemd是要盖-根据视角的systemd -已经取得的成就,以及什么样的未来将呈现伦纳特·珀特林在2014年GNOME.asia -有以下几种:

  • 初始化系统
  • 日志记录
  • 登录管理
  • 设备管理
  • 临时和易失性文件管理
  • 二进制格式注册
  • 背光保存/还原
  • rfkill保存/还原
  • 引导图
  • 预读
  • 加密存储设置
  • EFI / GPT分区发现
  • 虚拟机/容器注册
  • 集装箱管理
  • 主机名管理
  • 区域管理
  • 时间管理
  • 随机种子管理
  • 系统变量管理
  • 控制台管理
  • 内省
  • 自动发现
  • 即插即用
  • 网络管理
  • 系统联网
  • DNS缓存
  • mDNS响应器
  • LLMNR响应者
  • DNSSEC验证
  • 内核中的IPC
  • 客车
  • SD总线
  • 与NTP时间同步
  • 系统时间同步
  • 与容器整合
  • 服务的沙盒
  • 应用的沙箱
  • 操作系统映像格式
  • 容器图片格式
  • 应用图片格式
  • 具有自动发现功能的GPT
  • 无状态系统
  • 实例化系统
  • 恢复出厂设置
  • 节点初始化和更新
  • 与云集成
  • 跨节点的服务管理
  • 可验证的OS映像一直到固件
  • 引导加载
  • 构建Internet的下一代OS统一发行版之间毫无意义的差异

因此回到:“这是一个初始化系统,而不是用户传统上与之交互的东西。” -必须指出,init系统只是该列表中的一项。


最后,我想说的最后一件事是:

非技术用户只有在出现错误时才能看到此错误。

哦,真是舒心。:)

变化

对于最终用户(脚本本身除外),最值得注意的更改是启动和停止服务以及使用以下命令:

不再按预期工作。例如,nohup是POSIX命令,用于确保从会话注销后该进程继续运行。它不再适用于systemd。诸如此类的程序screen以及tmux需要以特殊方式调用的程序,否则与它们一起运行的进程将被杀死(而未杀死这些进程通常通常首先是运行screen或tmux的主要原因)。

这不是错误,而是设计选择,因此将来不太可能修复。这就是伦纳特·珀特林这个问题:

在我看来,对于UNIX来说实际上是很奇怪的,它默认情况下允许任意用户代码在注销后保持不受限制的状态。许多操作系统人士已经讨论了很长时间了,这应该是可能的,但肯定不是默认值,但是到目前为止,没有人敢将开关从默认设置转换为选项。注销后不清理用户会话不仅丑陋而且有些骇人听闻,而且还是安全问题。 现在,systemd 230最终翻转了开关,并最终默认情况下在用户注销时正确清理了所有内容。

有关更多信息,请参见:

跑步 screen

  • 暴发户: screen
  • systemd: systemd-run --user --scope screen

(注意:上面的“ upstart”的行为实际上是除systemd之外的任何东西,这不是特定于upstart的)

开始工作foo:

  • 暴发户: start foo
  • systemd: systemctl start foo

停止作业foo:

  • 暴发户: stop foo
  • systemd: systemctl stop foo

重新启动作业foo:

  • 暴发户: restart foo
  • systemd: systemctl restart foo

列出作业及其状态:

  • 暴发户: initctl list
  • systemd: systemctl status

(有关此问题超出范围的更多详细信息,请参阅我对Upstart和systemd的优点/缺点的回答。)

日志

在处理日志方面也有很大的不同,因为与Unix传统相反,systemd的日志以自定义格式存储在二进制文件中,因此:

cat /var/log/upstart/foo.log
tail -f /var/log/upstart/foo.log

您需要使用特殊命令来访问日志:

sudo journalctl -u foo
sudo journalctl -u foo -f

争议

最早将Systemd引入Debian,然后引入Ubuntu的过程并非没有争议,并且遭到了广泛的反对,撰写任何以下文章之一的人都知道:

Debian在systemd上官方立场以及由此引起的争议导致Exodus在2014 年宣告成立,并以Ian Jackson辞职而告终。

Init Freedom Without-Systemd.org Systemd-Free.org计划诞生了,有关Hacker News讨论很多。

进一步阅读


您正在将我的答案拉到其他环境中。Systemd 一个多初始化系统,但这个问题是关于暴发户→systemd和决策......不是“什么是所有的东西systemd内容替换?”
奥利
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.