如何跟踪系统单元文件,具体而言,设备单元文件?我使用3.18版本的linux内核。在我的板上,在systemd启动后,(我的分区).device运行,并且,我想,重装rootfs需要大约2秒的时间,就像systemd分析图显示的那样。我想知道它在这2秒内会做什么,因为重新安装rootfs所花费的时间并不多(通常只有几毫秒)。如何理解系统分析图,有那么多的单元文件,是否有可能知道哪个单元导致其他单元的运行?我试图在我的系统中找到.device单元文件,但是找不到任何东西。
发布于 2022-04-06 06:36:56
内核版本3.18是在2014年12月发布的,所以它已经很老了。这是长期支持内核之一,尽管这个内核版本的“官方”终止是在2017年1月,但它仍可能收到的不规则更新。因此,内核版本并不一定是任何其他OS组件的历史的可靠指标,尤其是在嵌入式系统上。
您的系统用systemctl --version报告了什么?
在systemd的现代版本中,文件系统安装由*.mount单元处理。具体来说,要查看根文件系统挂载单元-.mount的内容,需要systemctl cat -- -.mount强制将-.mount解释为单元名称(而不是选项)。使用该命令,您将看到挂载单元将在表示包含根文件系统的设备/目标的设备/目标上具有自动After=排序依赖关系。
*.device单元显示为由内核检测到的设备,并在/sys虚拟文件系统和udev-maintained设备节点中获得其表示(在适用的情况下,网络设备不带设备节点进行处理)。
*.device单元通常都是自动生成的,因此通常不会在任何地方找到任何*.device单元文件。相反,udev规则可能会影响设备单元的创建:例如,如果udev规则设置设备的属性SYSTEMD_READY=0,则省略设备创建,直到该属性被移除或更改为SYSTEMD_READY=1。有关更多详细信息,请参阅man systemd.device。
本质上,*.device单元的存在主要是为了表示硬件设备,主要是为了使其他单元能够定义它们的依赖关系。默认情况下,设备单元不会依赖任何其他单元;相反,它们将根据定义“依赖”它们所代表的用户空间访问设备。
您所看到的2秒可能来自以下操作的任意组合:
https://unix.stackexchange.com/questions/698137
复制相似问题