# Bootchart (简体中文)

Bootchart 是一个分析Linux启动流程的方便工具，结果可以用来优化启动速度。包含 bootchartd 服务和负责生成分析结果的 bootchart-render 两部分。

注意: Bootchart 已经成为 systemd 的一部分，请参考 Systemd#Optimization[broken link: invalid section] 页面。

## 安装Bootchart

bootchart可以在源里找到.

注意: 另外一个可供选择的是 bootchart2.它使用python来生成最终的图表而不是JVM.

## 运行Bootchart

要使bootchart运行，你需要将他添加到引导器的初始化进程选项，或者手动在init脚本（通常是rc.sysinit）中手动添加。不过需要注意的是，如果你是手动添加到init脚本的，那么也要手动停止它，总之，这种情况需要特别留意！

### 启动引导器设置

下面我们介绍常用的方法，即将原有引导选项复制一份，并在内核项后面添加`init=/usr/bin/bootchartd`. 方法参阅kernel parameters. 然后通过启动引导器引导bootchart。这样bootchart会在登录提示符出现的时候自动停止。

## 生成分析结果图表

你可以通过运行下面的命令来生成分析结果图：

    bootchart-render

确保运行命令的目录有写权限，程序就会生成一个名为'bootchart.png'的图像，这就是分析结果图。

你需要事先安装Java运行环境并且在此之前设置正确。

### 问题解决

Bootchart-render 如果无法生成 'bootchart.png' 图片并显示如下错误信息：

    /var/log/bootchart.tgz not found

主要原因是 bootchartd 无法检测到启动过程何时停止。例如使用非 KDM 或 GDM 的启动管理器如 SLIM 或 entrance 时会发生这个问题。可以打开 `/sbin/bootchartd` 脚本并将这些程序加到 `exit_proc` 变量中：

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

如果没有使用启动管理器，修改 `exit_proc` 变量为：

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

## 参考资料

- Bootchart主页
- 如何快速启动上网本的 LWN 文章 写得很好，提供了许多快速启动的技巧，尽管许多不适合一般用户使用。(修改 X.org 内核 kernel 等)。

Category:

- Boot process (简体中文)

Hidden category:

- Pages with broken section links