在 Linux 中加速 udisks2.service

在 Linux 中加速 udisks2.service

我正在分析 systemd,我想提高系统的启动速度。在责任列表中排名第一的服务systemd-analyze有明显的差距,udisks2.service几乎是 10 秒(这些数字可能会因为依赖关系而产生误导,但udisks没有任何)。禁用它不是一个好的解决方案,因为另一个服务需要它:

$ cat /lib/systemd/system/udisks2.service
...
[Install]
WantedBy=graphical.target

我还尝试在 VirtualBox 中的 ubuntu 测试实例中禁用它,它完全启动且没有问题,但一旦dbus-daemon初始化,它就会自动启动它。

man udisksd

用户或管理员永远不需要启动此守护进程,因为每当应用程序尝试访问其 D-Bus 接口时,它都会由 dbus-daemon(1) 或 systemd(1) 自动启动


在 `udisks2.conf` 手册页中指出,您可以将 `modules_load_preference` 选项设置为 `ondemand`,默认情况下是这样。看来目前是最优化的状态。

所以问题是“是否可以安全地加速 /usr/lib/udisks2/udisksd 的执行?

任何建议将不胜感激。

答案1

您是否有一个块设备/分区/LV不是列出/etc/fstab(因此看起来像是udisksd管理候选人)但已加密或以其他方式不易识别?

或者可能是 CD 驱动器或存储卡读卡器检测缓慢或根本不存在“驱动器中没有介质”错误?对于存储卡读卡器,这种情况的症状可能是dmesg输出中该设备的 I/O 超时错误。

在这些情况下,您可能希望通过创建与问题设备匹配的规则并向其添加属性来从udisksd管理中排除这些问题设备。udevENV{UDISKS_IGNORE}="1"

规则可以很简单

KERNEL=="sda6", ENV{UDISKS_IGNORE}="1"   # encrypted disk

或按设备序列号

SUBSYSTEM=="block", ENV{ID_SERIAL_SHORT}=="S467NX0KB24459Y", ENV{UDISKS_IGNORE}="1"

或任何有效的udev属性组合。

您可能想阅读[/usr]/lib/udev/rules.d/*-udisks2.rules示例和信息性注释,但您应该添加自己的规则,/etc/udev/rules.d/*.rules这样它就不会被系统更新覆盖。udev将读取两个目录,如果两个目录中存在同名文件,则其中的文件/etc/udev/rules.d将覆盖相应的系统文件。在这种情况下,您可能不需要覆盖系统默认规则文件;只需添加您自己的规则文件,并使用不重叠的名称。

您可以使用任何文件名,只要它位于正确的目录中并且具有后缀即可.rules,但请记住,规则是按照文件名的默认 US-ASCII 排序顺序执行的,因此有一个约定,即在文件名中添加数字前缀文件名以使规则顺序明确。

相关内容