我正在尝试减少基于 yocto 的嵌入式 Linux 的启动时间。
我观察到的一件事是 systemd 正在挂载根分区,该分区作为内核参数传递。根分区已经被内核挂载了,所以我想在这方面赢得一些时间。调试,我评论了/etc/fstab,但是还是来了。
我认为它在检测设备时通过 udev 规则。现在正在研究这个。
有谁知道如何禁用 systemd 中根分区的重新安装?
答案1
许多 Linux 机器都使用初始化程序作为早期用户空间来获取/安装。在一般情况下,加密、LVM、网络文件系统都不是小事。切换根操作正常。另请参阅 systemd 的开机图这些早期目标如何发挥作用。您可以尝试通过确保内核不需要非 initrd 系统(您有什么存储?)并在引导加载程序中注释掉 initrd 来启动非 initrd 系统,但这似乎很棘手。
查找真正占用启动时间的内容systemd-analyze
。如果不带参数,它会显示早期内核、initrd 和用户时间的小计。systemd-analyze plot >bootup.svg
生成一个图表,更准确地显示同时启动的内容。这一步只是收集数据来证明一个假设。需要进一步分析哪些单元实际上位于关键链上,以及如何使它们更快。