summaryrefslogtreecommitdiffstats
path: root/README
blob: 6832b987b448e5b3cb6b6aa09d11505425549a5b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
systemtap: a linux trace/probe tool

Visit the project web site at <http://sources.redhat.com/systemtap>,
for documentation and mailing lists for developers and users.

This is free software.
See the COPYING file for redistribution/modification terms.
See the INSTALL file for generic build instructions.

Prerequisites:

- linux kernel with kprobes (mainline 2.6.11+ or backport)
- kernel module build environment (kernel-devel or kernel-smp-devel rpm)
- kernel debugging information (kernel-debuginfo rpm)
- C compiler (same as what kernel was compiled with)
- elfutils with libdwfl (possible to reuse system elfutils if new and
  complete enough, otherwise download source snapshot and build
  together with systemtap as follows)
- root privileges

Installation steps:

- Install the kernel-debuginfo, kernel-[smp-]devel, gcc packages.
- Install the systemtap package, if one already exists.

Build steps:

- Install the kernel-debuginfo, kernel-[smp-]devel, gcc packages
  (or see below if you are building your own kernels from source).
- Download the latest elfutils snapshot:
  ftp://sources.redhat.com/pub/systemtap/elfutils/elfutils-NNNN.tar.gz
  ftp://sources.redhat.com/pub/systemtap/elfutils/elfutils-portability.patch
- Untar the snapshot in some new directory; apply patch (don't ask, long story)
- Download systemtap sources snapshot or from CVS:
  ftp://sources.redhat.com/pub/systemtap/snapshots/ 
  (or)
  cvs -d :pserver:anoncvs@sources.redhat.com:/cvs/systemtap login
  # enter "anoncvs" as the password
  cvs -d :pserver:anoncvs@sources.redhat.com:/cvs/systemtap co -c
- Build it:
  cd src
  ./configure --with-elfutils=PATCHED-ELFUTILS-DIR [other autoconf options]
  make all check
  make install

Tips:

- Systemtap looks for the debug info in these locations:
  /boot/vmlinux-`uname -r`
  /usr/lib/debug/lib/modules/`uname -r`/vmlinux
  /lib/modules/`uname -r`/vmlinux

Building a kernel.org kernel:

- Build the kernel using your normal procedures.  Enable
  CONFIG_DEBUG_INFO, CONFIG_KPROBES, and optionally CONFIG_RELAY and
  CONFIG_DEBUG_FS.
- Boot into the kernel.
- Make sure the large unstripped kernel image 'vmlinux' from your
  build can be found by systemtap (see above)  You can just symlink
  it to one of these locations.
- Symlink your source directory to these two places, though systemtap
  does not at present use such source code. 
  - /usr/src/kernels/`uname -r`
  - /lib/modules/`uname -r`/source
- Symlink your build directory to here:
  - /lib/modules/`uname -r`/build
- For example, if your kernel source is in /home/me/linux/2.6.17-rc6
  and you build your kernel in the source directory, you would do
  this (be sure you are running the right kernel or `uname -r`
  will be wrong:)
     ln -s /home/me/linux/2.6.17-rc6/vmlinux /boot/vmlinux-`uname -r`
     mkdir /usr/src/kernels  (if needed)
     ln -s /home/me/linux/2.6.17-rc6 /usr/src/kernels/`uname -r`
     mkdir /lib/modules/`uname -r`  (if needed)
     ln -s /home/me/linux/2.6.17-rc6 /lib/modules/`uname -r`/build
     ln -s /home/me/linux/2.6.17-rc6 /lib/modules/`uname -r`/source