# SystemTap (简体中文)

翻译状态： 本文是英文页面 Systemtap 的翻译，最后翻译时间：2012-10-05，点击这里可以查看翻译后英文页面的改动。

Systemtap 是一种在运行时收集系统信息的基础架构，它是自由软件（Free Software）。

## 又快又容易

官方推荐编译一个linux-custom内核，但是重新编译原始的linux包更方便有效，这里介绍重新编译（同名的）linux包的方法。

### 准备

执行 `sudo abs; cp -r /var/abs/core/linux .` 获得PKGBUILD等文件.

### 修改config文件

编辑 config (32位内核) 或 config.x86_64 (64位内核), 确保打开这些选项:

- CONFIG_DEBUG_INFO=y
- CONFIG_DEBUG_INFO_REDUCED=n
- CONFIG_KPROBES=y
- CONFIG_RELAY=y
- CONFIG_DEBUG_FS=y
- CONFIG_MODULES=y
- CONFIG_MODULE_UNLOAD=y

默认只有CONFIG_DEBUG_INFO 和CONFIG_DEBUG_INFO_REDUCED没被打开，修改这两个即可.

对于当前的 core/linux (3.7.10)，只要这样做就可以了:

    x86_64

    echo '
    CONFIG_KPROBES=y
    CONFIG_KPROBES_SANITY_TEST=n
    CONFIG_KPROBE_EVENT=y
    CONFIG_NET_DCCPPROBE=m
    CONFIG_NET_SCTPPROBE=m
    CONFIG_NET_TCPPROBE=y
    CONFIG_DEBUG_INFO=y
    CONFIG_DEBUG_INFO_REDUCED=n
    CONFIG_X86_DECODER_SELFTEST=n
    ' >> config.x86_64

### 更新校验值

执行 `md5sum config[.x86_64]` 获得新的文件校验值.

编辑 PKGBUILD 文件, 这一部分 `md5sums=('sum-of-first' ... 'sum-of-last')` 和这一部分 `source=('first-source' ... 'last-source')` 是个数相同，顺序相同的, 把新获得的校验值在合适的位置替换.

`makepkg --skipchecksums` 使用命令可以跳过校验，但这样做对其它文件（比如下载的内核源码包）来说不安全，因此建议按这里给出的方法操作。

### 编译并安装

可选步骤: 可以在 `/etc/makepkg.conf` 文件中设置 `MAKEFLAGS="-j16"` 加速编译.

执行 `makepkg` 开始编译, 然后 `sudo pacman -U *.pkg.tar.gz` 安装编译好的包. pacman 会提示你这是重新安装 （reinstall）, 这就对了！

linux 和 linux-headers 需要安, linux-docs 则随意.

通过这个方法, 外部内核模块 (例如 nvidia 和 virtualbox) 就不需要被重新编译了.

### Systemtap

从 AUR 中安装systemtap即可: systemtapAUR, 完成.

## 编译自定义内核

参考这个 官方README

Category:

- Kernel (简体中文)