本文首要叙述嵌入式Linux发动时刻优化的隐秘,咱们持续上篇没有讲完的嵌入式Linux发动时刻优化办法,本文首要会讲发动脚本。想看上一篇的请检查本文结束的链接。
发动脚本
1.优化初始化脚本和体系发动
有多种办法能够削减发动应用程序之前履行发动脚本中花费的时刻:
仅在发动必要的依靠项之后,赶快发动应用程序。
简化shell脚本
能够测验履行发动脚本之前发动应用程序
1.1.bootchart
假如想更具体地了解用户区的引导次序,则能够运用运用grabserial中的bootchart来完结,例如:
那么怎么装备并运用bootchart 呢?
在busybox中装备运用bootchartd(CONFIG_BOOTCHARTD = y)
经过指令行init = / sbin / bootchartd 引导您的开发板
将/var/log/bootlog.tgz从方针仿制到开发主机
生成时刻表:
cd bootchart-《version》
java -jar bootchart.jar bootlog.tgz
bootchart 拜见 http://www.bootchart.org
1.2. systemd
假如将systemd用作初始化程序,则能够运用systemd-analyze。
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 减小固件的尺度
剥离可履行文件和库,删去仅用于开发和调试的ELF部分。strip指令由穿插编译东西链供给。默许状况下在Buildroot中完结的。
superstrip超级剥离
http://muppetlabs.com/~breadbox/software/elfkickers.html。
运用strip能够剥离出Linux未用于发动可履行文件的更多位。Buildroot中止支撑它,由于它或许损坏可履行文件。 仅在保存一些字节至关重要时才测验。
还能够测验https://packages.debian.org/sid/mklibs上供给的mklibs:
mklibs发生精简的同享库,其间仅包括一组特定的可履行文件所需的例程。关于像OpenGL和QT这样的大型库的确很有用。它乃至能够在没有源代码的状况下作业。
在Yocto中可用,但在Buildroot中不可用(2019.02状况)。
约束:mklibs能够删去歪斜的库(由应用程序“手动”加载),由于它看不到它们。
3.5.5 快速发动画面显现
能够运用fbv显现发动画面,
http://freshmeat.sourceforge.net/projects/fbv
运用armel,能够只运用咱们的静态编译二进制文件:
https://github.com/bootlin/staTIc-binaries/tree/master/fbv/
但是在MicrochipAT91SAM9263体系上很慢为878毫秒!
为了更快地履行此操作,能够转储帧缓冲区framebuffer中的内容:
fbv -d 1/root/logo.bmp
cp /dev/fb0/root/logo.fb
lzop -9/root/logo.fb
然后尽早在initramfs中将其仿制回:
lzopcat/root/logo.fb.lzo 》 /dev/fb0
修改连载引荐:嵌入式Linux发动时刻优化的隐秘之一东西链/应用程序优化
修改连载引荐:嵌入式Linux发动时刻优化的隐秘之二文件体系
修改连载引荐:嵌入式Linux发动时刻优化的隐秘之三-内核