我正在分析 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
管理中排除这些问题设备。udev
ENV{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 排序顺序执行的,因此有一个约定,即在文件名中添加数字前缀文件名以使规则顺序明确。