1

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

4

7 回答 7

0

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

希望这有帮助。

我有同样的问题并这样做,现在显然不一样了;)

编辑:你需要的一切都在这里

于 2014-03-06T11:38:09.447 回答
0

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

于 2014-03-06T10:43:10.173 回答
0

有一些程序可以帮助了解大致的启动时间。检查此链接 时间戳

于 2014-03-06T11:01:27.347 回答
0

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

Bootchart,来自 Ubuntu 软件包:

sudo apt-get update
sudo apt-get install bootchart pybootchartgui
于 2015-05-27T13:40:48.283 回答
0

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

  1. 引导加载程序:修改链接描述文件以仅初始化所需的硬件。此外,如果您使用 SD 卡进行引导,请合并内核和引导加载程序映像以节省时间。
  2. 内核:从内核配置中删除不需要的模块。也尝试使用压缩和未压缩的图像。如果您的 CPU 足以处理它,请转到压缩图像并检查不同压缩类型所需的解压缩时间。
    1. 文件系统:通过删除不需要的 bin 和 lib,可以显着减小 FS 大小。检查依赖项并仅使用所需的依赖项。

有关有助于测量启动时间的工具的更多技术和信息,请参阅以下链接。 请参阅培训材料

于 2015-07-23T20:05:11.187 回答
0

优化嵌入式Linux Boot 过程,需要在嵌入式Linux 设计的三个层次上进行修改。

注意:您将需要引导加载程序和内核的源代码

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

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

    $ 制作菜单配置

    我们对 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 后加载其他模块。

如果您完成以下所有任务,您可以快速启动并使用快速系统。

于 2018-12-02T08:30:35.643 回答
0

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

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

可以在此视频中看到通过结合所有这些措施可以实现什么- 是的,此优化的完整代码可在此处获得。

于 2016-03-01T11:47:17.047 回答