我经常听到的关于 systemd 的一个论点是它更适合当前的硬件需求,例如这里
计算机的变化如此之大,以至于它们通常看起来都不像计算机。他们的操作系统非常繁忙:GPS、无线网络、来来去去的 USB 外围设备、同时运行的大量软件和服务、快速入睡/醒来……要求过时的 SysVinit 来管理这一切是就像让你的祖母扭臀一样。
我不明白的是初始化系统如何管理热插拔设备。
更换热插拔磁盘驱动器与系统启动方式有什么关系?
也许这一切都是在 systemd 的非初始化部分完成的?
我知道这对某些人来说是一个热门话题。它不是为了引发战争,而是为了理解。
请不要火焰地向我解释一下。
答案1
Systemd 重新实现了以前分散在整个操作系统中的许多功能(例如,在 udev 守护进程中),并且能够识别设备刚刚插入或拔出。
同时,systemd 保存所有系统服务配置:需要运行什么、如何运行等。简单地说,它拥有启动、停止甚至重新配置与热插拔设备相关的服务所需的所有知识。
经典初始化系统根本不管理热插拔设备。它只是按照定义的顺序启动服务,仅此而已。
其中一种服务是 udev 守护进程,它处理可热插拔设备。但当设备插入时,它无法启动服务,至少没有为本地计算机制作自定义脚本。
答案2
更换热插拔磁盘驱动器与系统启动方式有什么关系?
它不管理可热插拔设备,但它具有对热插拔产生的事件做出反应的信息,它可能会启动、停止、重新启动服务,您可以要求它挂载磁盘,它会知道当热插拔时它是否仍然存在。系统重新启动,以便在正确的时间以正确的顺序卸载它。
旧的 sysvinit 不知道系统的状态,一旦初始的一组服务自我报告“我开始了”,那么它的工作就完成了,这很糟糕,原因有很多。