http://www.freedesktop.org/software/systemd/man/systemd-analyze.html

1.3. init 进程

在所有依赖项启动之后,应尽快启动:

取决于您的init进程。在这里,我们假设使用sysV init脚本。

init脚本按字母数字顺序运行,并以字母开头(K表示停止(杀死),S表示开始)。

将应用程序启动脚本使用最小的号码。

甚至可以用应用程序替换init!如果可以成为第一个启动的应用程序,启动速度无疑大大加快!

直接通过一个启动脚本启动所有服务(例如/etc/init.d/rcS)。这消除了对/ bin / sh的多次调用。

甚至可以直接在应用程序的C代码中挂载文件系统:如

1.4 减少fork的使用

fork/exec系统调用开销很大。故从Shell调用可执行文件的速度很慢。

即使BusyBox实现的shell中echo也会导致fork 系统调用!

在BusyBox配置中选择Shells-》 Standalone shell,以使Shell尽可能调用小程序。

管道和反引号也由fork/exec实现。应减少它们在脚本中的使用。例:

cat /proc/cpuinfo | grep model

应修改为:

grep model /proc/cpuinfo

更详细,请参考:

http://elinux.org/Optimize_RC_Scripts

又例如:

仅此一项优化就可以在ARM AT91SAM9263系统(200MHz)上节省87毫秒!

1.5 减小固件的尺寸