在我们进行linux系统优化时,可以从以下几方面入手
1、如果有硬性的启动时间要求,比如开机时间要求达到10s以内,那么就必须要硬件上面支持。比如使用一般的
nand flash想达到那么快的速度那是不可能,至少要20秒以上,所以这个时候,就必须要使用inand来实现。
2、当硬件确定支持启动时间要求后,软件方面可以由以下方面入手
1)bootloader的启动,由于bootloader在启动过程中会有判断是否进入命令模式,这个时候,可以把这个倒数的时
间去掉(建议最终版本的时候才这么做,因为方便使用fastboot进行固件烧写),或者减少
2)bootloader阶段不要使用LCD,因为本身这个阶段启动的时间在几百ms左右,所以没必要使用LCD了
3)kernel阶段,主要耗时点在于模块的加载,所以要找到每个模块加载的时间,那么就可以确定是那些模块耗时了
如何找呢? 那就需要把各驱动模块加载时间打印出来咯。
在uboot的CONFIG_BOOTARGS增加printk.time=y initcall_debug
initcall_debug打印内核加载的各个模块信息,通过这个选项可以看到内核加载各个模块的顺序,内核加载了
哪些模块,从信息中 可以看到, 如果您的内核系统没有必要使用某个模块,尽量不要加载进去,这样即可节约内核
占用的存储空间,也可以加快内核的启动 过程。如果有模块是使用模拟spi或者i2c的,那么可以考虑减少延时时间等。
另外,还可以添加lpj的值,如lpj=1949696,可以减少内核计算lpj的时间,lpj可以直接从串口打印信息

在优化Linux启动时间时,需考虑硬件支持,如使用inand以满足快速启动需求。软件方面,可调整bootloader,去掉启动倒计时或减少LCD使用,以及在kernel阶段分析模块加载时间,通过移除不必要的模块来加速启动。启用printk.time=y和initcall_debug选项可追踪内核模块启动耗时,以便进一步优化。
最低0.47元/天 解锁文章
4699

被折叠的 条评论
为什么被折叠?



