跳转至内容

Bootchart

来自 ArchWiki

Bootchart 是一个用于分析 Linux 启动序列的实用工具,通常用于加快计算机的启动速度。它由 bootchartd 守护进程组成,该进程负责记录并渲染分析数据的图表。

注意 Bootchart 的等效功能现在已成为 systemd 的一部分,详情请参阅 优化启动性能#分析启动过程。本页面涵盖的是在合并之前原始的 bootchart 和 bootchart2(init 守护进程)。

安装

安装 bootchartAUR 软件包。

用法

要使用 bootchart,您必须将其设置为引导加载程序中的 init 进程。请注意,如果您手动启动 bootchartd,则必须手动停止它。通常情况下,请在此步骤中格外小心。

引导加载程序设置

这通常涉及复制一份您想要分析的启动选项,并向其添加 init=/usr/bin/bootchartd。有关说明,请参阅 内核参数。当从引导加载程序启动时,bootchart 将在您到达登录提示符时停止。

生成图表

生成 bootchart 涉及在您拥有写入权限的文件夹中运行 bootchart-render。这将生成一张包含图表的 bootchart.png 图像。在执行此操作之前,您必须安装并正确配置 Java 运行时环境。

故障排除

Bootchart-render 无法生成 bootchart.png 图像并显示错误消息

/var/log/bootchart.tgz not found

这通常意味着 bootchartd 无法检测到启动过程何时结束。当您使用除 GDM 以外的登录管理器(如 SLiM 或 entrance)时可能会发生这种情况。您需要打开 /usr/bin/bootchartd 脚本并将这些应用程序添加到 exit_proc 变量中,例如

# The processes we have to wait for
local exit_proc="gdmgreeter gdm-binary slim"

如果您没有使用登录管理器,请按以下方式编辑 exit_proc 变量

# The processes we have to wait for
local exit_proc="login"

Bootchart 示例

5 秒内启动

关于快速启动上网本的 LWN 文章

这篇文章非常出色,除了提供大量 bootchart 之外,还提供了一些关于如何加快启动速度的技巧。不过,其中一些改进对于普通用户来说是难以实现的(例如修补 X.org、内核等)。

Bootchart2

注意 Bootchart 的替代方案是 bootchart2。它使用 Python 而不是 JVM 来生成最终图表,仅需要:pygtk, git 和 busybox。

运行 Bootchart2

引导加载程序设置

这通常涉及复制一份您想要分析的启动选项,并向其添加 initcall_debug printk.time=y init=/usr/bin/bootchartd2。有关说明,请参阅 内核参数。当从引导加载程序启动时,bootchart2 将在默认的 120 秒后或在您到达登录提示符时(取决于配置)停止。请注意,Bootchart2-git 也可以作为 systemd 服务运行,详见 优化启动性能#使用 bootchart2

bootchart2.service

来自 AURbootchart2AUR 软件包包含一个未记录的 systemd 服务。安装 bootchart2 后,请 启用 bootchart2.service

您可以通过打开 /var/log/bootchart.png 来可视化结果,或者如果您想要更多功能,可以启动

$ pybootchartgui -i

有关使用此版本 Bootchart 的更多详情,请阅读 bootchart2 文档

配置 Bootchart2

登录后停止 Bootchartd2

可以调整 Bootchart2 配置文件

/etc/bootchartd2.conf
EXIT_PROC="xterm konsole gnome-terminal metacity mutter compiz ldm icewm-session enlightenment"

也可以将其留空,以便手动停止记录,而不是在预定程序启动时停止。

生成图表

Bootchart2 与旧版 Bootchart 一样简单:启动后,运行

$ pybootchartgui -i

以获得一个交互式图表渲染工具。更多信息请参阅 Gentoo:Bootchart2

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.