我的团队正在为嵌入式 Linux 解决方案开发软件。我们面临的问题是系统需要太多时间才能准备好开始运行我们想要的应用程序(即加载Linux内核太多时间)。通常需要 38 到 43 秒才能完成。我们已经修改了内核配置,删除了我们知道不需要的文件,但仍然需要这么多时间。
我的问题:还有什么办法可以使内核启动更快(最好不改变硬件)?嵌入式 Linux 充电需要这么长时间正常吗?是否可以要求 Linux 内核在内核充满电之前启动我们的应用程序?
该系统是德州仪器奥马普L138。
以下是内核启动时终端中显示的包含所有最相关消息的图像。如果有人对我的问题没有(一般)答案,但了解有助于提高内核启动速度的其中一行,也请随意回答!
答案1
在您的输出中,实际加载内核的点是:
Init version 2.86 booting
这是 23 秒后。在那之后,在里面,一个用户空间进程,接管并开始用户空间的配置,尽管这不可避免地会引起各种内核驱动程序的激活,可能包括加载适当的模块。
您还没有说这是什么平台,但是在例如 700 Mhz 单核树莓派上,这大约是 4 秒。所以这还是很慢,说明有问题。
如果我们减去 0 到 19 秒之间的差距,您就会达到预期的结果。这个差距以关于 MII PHY 的评论结束——这是一个以太网设备驱动程序。如果可以在没有网络的情况下启动系统,您可以通过在内核之外配置以太网驱动程序来确认这一点,并看看是否会init
更快。
23 秒后,主要瓶颈可能是根文件系统上的 I/O。由于某种原因,25 到 30 秒之间有 5 秒的间隙,最后有关于 FAT 文件系统错误的注释。事实上,那里有一些 fs 错误。这意味着 init 系统正在尝试挂载不存在的文件系统,这将是浪费时间。
在 33 到 37 秒之间,您会出现更多错误,表明涉及的错误文件系统如何排列和/或依赖于此的软件如何配置。这些依赖项之一可能是一个 tmpfs 文件系统,应该是在 RAM 中创建的,但失败了(因此在/var/
和中缺少文件/tmp
)。/etc/fstab
如果此处的要点不清楚,您可以提出一个单独的问题,并要求某人进行解释。