我们默认的系统启动耗时需要 30 秒以上。但客户做产品,需要尽快把系统启动,以便程序产品功能。一开始我是琢磨着怎么在 OE 里修改或追加 bb 配置,直接构建一个定制的符合启动时间要求的文件系统出来。
但 OE 的配置很复杂。见 https://blog.csdn.net/engrossment/article/details/105866276
既然整个文件系统的启动是由 systemd 负责的,那就先回过头来,弄懂 systemd。主要是参考了以下资料进行学习:
-
金步国翻译整理的 systemd 中文手册:http://www.jinbuguo.com/systemd/systemd.index.html
-
阮一峰写的入门教程
主要就用到两个 systemd 工具:systemctl、systemd-analyze。
系统启动后,直接运行 systemd-analyze,就可以看到系统启动的耗时。运行 systemd-analyze blame 就可以看到各个服务的耗时,这样,就可以有的放矢进行时间优化了。也就是停止那些耗时大的而又不是必须的 systemd 服务(service)。
执行 systemd-analyze plot > plot.xml,然后用浏览器打开该 xml 文件,可以很直观看到所有启动服务的并行以及耗时情况。十分好用的工具。
确定好一个服务要禁用自启动后,使用 systemctl 即可,示例:
systemctl disable thttpd.service
完成后执行 systemctl poweroff 关机,从 SD 卡提取文件系统打包,就可以整合近做卡包进行做卡了。
2020年5月8日