嵌入式Linux启动时间优化的秘密之四-启动脚本

本文主要讲述嵌入式     Linux   启动时间优化的秘密,我们继续上篇没有讲完的嵌入式Linux启动时间优化方法,本文主要会讲启动脚本。想看上一篇的请查看本文结尾的链接。

 启动脚本

 1.优化初始化脚本和系统启动

有多种方法可以减少启动应用程序之前执行启动脚本中花费的时间:

仅在启动必要的依赖项之后,尽快启动应用程序。

简化shell脚本

可以尝试执行启动脚本之前启动应用程序

 1.1.bootchart

如果想更详细地了解用户区的引导顺序,则可以使用使用grabserial中的bootchart来实现,例如:

 嵌入式Linux启动时间优化的秘密之四_启动脚本_设计制作_模拟技术

那么如何配置并使用bootchart 呢?

在busybox中配置使用bootchartd(CONFIG_BOOTCHARTD = y)

通过命令行init = / sbin / bootchartd 引导您的开发板

将/var/log/bootlog.tgz从目标复制到开发主机

生成时间表:

cd bootchart-《ve     rs   ion》

    java   -jar bootchart.jar bootlog.tgz

bootchart 参见 http://www.bootchart.org

 1.2. sys     te      md

如果将systemd用作初始化程序,则可以使用systemd-analyze。

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

 嵌入式Linux启动时间优化的秘密之四_启动脚本_设计制作_模拟技术

 1.3. init 进程

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

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

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

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

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

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

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

 嵌入式Linux启动时间优化的秘密之四_启动脚本_设计制作_模拟技术

 1.4 减少fork的使用

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

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

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

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

cat /proc/     cpu   info | grep model

应修改为:

grep model /proc/cpuinfo

更详细,请参考:

http://elinux.org/Op     ti       mi   ze_RC_Scripts

又例如:

 嵌入式Linux启动时间优化的秘密之四_启动脚本_设计制作_模拟技术

仅此一项优化就可以在     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/sta  TI c-binaries/tree/master/fbv/

但是在     Microchip   AT91SAM9263系统上很慢为878毫秒!

为了更快地执行此操作,可以转储帧缓冲区f     ram   ebuffer中的内容:

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启动时间优化的秘密之三-内核    

75
141
0
82

相关资讯

  1. 1、邓超为新戏两个月暴瘦40斤菜谱曝光,孙俪劝诫:大家千万别学他2138
  2. 2、《一声所爱》逗趣村花走红网友质疑其装傻抢镜3321
  3. 3、他没拿奖却是最大赢家,大导演找他还要拖关系,网友直呼未来可期2161
  4. 4、《唐探2》刘承羽晒合照长腿吸睛,还细心的把陈思成P成了张大大3525
  5. 5、《命中注定我爱你》要翻拍了,女主已经定了是国民初恋女友的她!4832
  6. 6、杰瑞德莱托主演的《吸血鬼莫比亚斯》,将于明年2月份开拍!2933
  7. 7、《皓衣行》未播先火,陈飞宇罗云熙互动登热搜,遭吐槽工业糖精1363
  8. 8、《毒液》瑟瑟发抖!约翰尼·德普魔幻新剧《神奇动物》强势来袭692
  9. 9、《牛胆神偷》定档8月22英达杨立新演绎夺BB大战4085
  10. 10、范丞丞新剧《曾少年》在上海杀青嘴上说着不好意思身体却很诚实的澄哥2872
全部评论(0)
我也有话说
0
收藏
点赞
顶部