我的团队正在为嵌入式Linux解决方案开发一个软件。我们面临的问题是,系统需要太多的时间才能开始运行我们想要的应用程序(也就是说,加载Linux内核的时间太多)。通常需要38到43秒才能完成。我们已经修改了内核配置,删除了我们知道不需要的文件,但这仍然需要很长时间。
我的问题是:还能做什么使内核启动更快(优先不改变硬件)?嵌入式Linux花这么多时间充电是正常的吗?是否有可能要求Linux内核在内核完全充电之前启动我们的应用程序?
该系统是一个德州仪器OMAP L138。
下面是在内核启动时终端中显示的所有最相关消息的映像。如果一个人对我的问题没有一个(一般)答案,但是了解一些可以帮助提高内核引导速度的行,那么也可以回答!





发布于 2014-11-18 20:01:59
在您的输出中,内核实际加载的点是:
Init version 2.86 booting也就是23秒后。之后,用户空间进程初始化接管并开始对用户空间的配置,尽管这不可避免地会引发各种内核驱动程序的激活,可能包括加载适当的模块。
你还没有说这是什么平台,但是在700 Mhz单核raspberry pi上,这是~4秒。因此,这仍然是非常缓慢的,表明一个问题。
如果我们减去0到19秒之间的差距,你就会下降到预期的程度。这个差距的结尾是关于MII的评论--这是一个以太网设备驱动程序。如果可以在没有网络的情况下启动系统,您可以通过在内核之外配置以太网驱动程序来确认这一点,并查看是否更快地到达init。
23秒之后,主要的瓶颈可能是根文件系统上的I/O。由于某些原因,在25-30秒之间有一个5秒的间隔,最后是一个关于胖文件系统错误的注释。事实上,这里有一些fs错误。这意味着init系统试图装入不存在的文件系统,这将浪费时间。
在33到37秒之间,您会有更多的错误,表明文件系统是如何安排的,以及/或依赖于文件系统的软件是如何配置的。其中一个依赖项可能是一个tmpfs文件系统,它应该是在RAM中创建的,但是失败了(因此在/var/和/tmp中丢失了文件)。你可以问一个单独的问题,张贴你的/etc/fstab,并要求别人解释,如果这里的要点不清楚。
https://unix.stackexchange.com/questions/168707
复制相似问题