嵌入式Linux引导优化

时间:2014-03-06 10:34:17

标签: linux embedded boot pandaboard

我正在使用嵌入式Linux(UBUNTU 12.10服务器预建映像)在Pandaboard上进行项目以优化启动时间。我需要技术或工具,通过它我可以找到启动时间和技术来优化启动时间。如果有人可以提供帮助。

7 个答案:

答案 0 :(得分:0)

只需从/etc/init.d/rc文件中删除不需要的应用程序,也可以在每次进程初始化后放置echo并检查哪个进程需要花费很多时间才能启动, 如果你发现需要花费更多时间的应用程序然后调试该应用程序等等。

答案 1 :(得分:0)

有一个程序可以帮助您了解大致的启动时间。检查此链接 Time Stamp

答案 2 :(得分:0)

首先,您要做的最好的事情就是自己编译自己的内核,在互联网上获取源代码并执行make xconfig然后在您不需要的时候取消选择。 在第二次使用Buildroot和make xconfig创建自己的根文件系统,以选择/取消选择您需要或不需要的所有内容。

希望得到这个帮助。

我遇到了同样的问题而且这样做,现在显然不一样了;)

编辑:您需要的一切都是here

答案 3 :(得分:0)

分析启动过程,您可以使用 Bootchart2 ,它可以在github上找到: https://github.com/mmeeks/bootchart

来自Ubuntu软件包的

Bootchart

sudo apt-get update
sudo apt-get install bootchart pybootchartgui

答案 4 :(得分:0)

大致有3个方面可以减少启动时间

  1. 引导器: 修改链接描述文件以仅初始化所需的h / w。此外,如果您使用SD卡启动,请合并内核和引导加载程序映像以节省时间。
  2. 内核: 从内核配置中删除不需要的模块还可以尝试使用压缩和未压缩的图像。如果您的CPU足以处理它,请转换压缩映像并检查不同压缩类型所需的解压缩时间。
    1. 文件系统: 通过删除不需要的箱和库可以显着减少FS大小。检查依赖项并仅使用所需的依赖项。
  3. 有关有助于测量启动时间的工具的更多技术和信息,请参阅以下链接。 Refer to Training Material

答案 5 :(得分:0)

基本规则是:最快的代码是永远不会被加载的代码 运行,所以删除你不需要的所有

    U-Boot中的
  • :根本不加载并运行完整的U-Boot;使用FALCON 模式并让SPL直接加载Linux内核和DTB
  • Linux中的
  • :删除所有不需要的驱动程序和其他内容; 加载对核心应用程序不重要的所有驱动程序 模块 - 并在应用程序启动后加载它们。如果你 认真对待,你甚至可能只想启动一个CPU核心 最初(并在你申请之后开始剩下的那些) 运行)。
  • 用户空间中的
  • :最小化根文件系统的大小。 throuw 你不需要的任何东西;配置工具(如busybox) 仅包含真正需要的功能;使用高效的代码 (例如,链接反对musl libc而不是glibc)等。

通过结合所有这些措施可以获得什么可以看出来 这个video - 是的,这个优化的完整代码是 可用here

答案 6 :(得分:0)

优化嵌入式Linux的启动过程,需要对嵌入式Linux设计的三个层次进行修改。

注意:您将需要Bootloader和内核的源代码

  1. 引导:优化和减少板的引导时间的第一步是优化引导加载程序。首先,您应该知道什么是Bootloader。如果您的引导程序是像u-boot这样的开源引导程序,那么您就有机会对其进行修改和优化。在u-boot中,我们有一个过程可以跳过不必要的系统检查,而只是将内核映像上传到ram并启动。有关文档和说明,请访问u-boot网站。这样做可以节省大约4到5秒钟的启动时间。

  1. 内核:为了拥有更快的内核,您应该在许多部分中优化内核。要进行编辑,您可以使用Linux配置菜单上的。我总是使用较低的图形菜单。它需要一些依赖关系,您可以通过以下命令使用它:

    $ make menuconfig

    我们对Linux内核的目标是在启动时加载更小的内核映像和更少的模块。首先将压缩算法从gzip更改为LZO。该操作的要点是gzip算法将花费大量时间来提取内核。通过使用LZO,我们可以更快地进行内核解压缩。第二,禁用所有您不需要的驱动程序或模块,或者不再使用它们。这样,您将失去一些设备访问权限,并且无法在Linux中使用它们,但是您将获得两个积极的方面:更少的Ram使用率,更快的启动时间。 但是请注意,某些驱动程序对于Linux是必需的,并且禁用它们会丢失一些主要功能(例如,如果在Linux中禁用I2C驱动程序,则将不再具有HDMI接口),或者在最坏的情况下,您将拥有引导问题(例如引导循环)。第三是禁用一些不可用的文件系统,以减少内核大小和启动时间。第四是删除一些压缩算法以具有较小的内核映像。 最后,如果您使用的是u-boot引导程序,请创建一个uImage而不是zImage。以下步骤是常规操作和主要操作,为使电源连接后1秒钟更快启动,您应该更改更多选项。


  1. 经过两次基本层修改后,现在我们应该优化用户空间(根文件系统)中的引导过程。取决于您使用的巫婆系统,我们有不同的操作要做。在具有启动Linux所需软件包和系统的Linux抽象根文件系统中,我们应该使用systemd而不是Unix systemv,因为systemd具有多任务init。系统,速度更快,之后是udev,您应该修改一些加载模块。如果您具有图形用户界面,我们可以使用一个简单的技巧来减少启动时间,方法是先启动GUI,然后在加载GUI之后加载其他模块。

如果您执行以下所有任务,则可以缩短启动时间并快速使用系统。