-devel
, -debuginfo
and -debuginfo-common
packages for your kernel. If your system has multiple kernels installed, and you wish to use SystemTap on more than one kernel kernel, you will need to install the -devel
and -debuginfo
packages for each of those kernel versions.
Important
-debuginfo
with -debug
. Remember that the deployment of SystemTap requires the installation of the -debuginfo
package of the kernel, not the -debug
version of the kernel.
systemtap
systemtap-runtime
yum
is installed in the system, these two rpms can be installed with yum install systemtap systemtap-runtime
. Note that before you can use SystemTap, you will still need to install the required kernel information RPMs.
-devel
, -debuginfo
, and -debuginfo-common
packages for your kernel. The necessary -devel
and -debuginfo
packages for the ordinary "vanilla" kernel are as follows:
kernel-debuginfo
kernel-debuginfo-common
kernel-devel
kernel-PAE-debuginfo
, kernel-PAE-debuginfo-common
, and kernel-PAE-devel
.
uname -r
2.6.18-53.el5
on an i686 machine, then you would need to download and install the following RPMs:
kernel-debuginfo-2.6.18-53.1.13.el5.i686.rpm
kernel-debuginfo-common-2.6.18-53.1.13.el5.i686.rpm
kernel-devel-2.6.18-53.1.13.el5.i686.rpm
Important
-devel
, -debuginfo
and -debuginfo-common
packages must match the kernel you wish to probe with SystemTap exactly.
yum install
and debuginfo-install
commands. debuginfo-install
is included with later versions of the yum-utils
package (for example, version 1.1.10), and also requires an appropriate yum
repository from which to download and install -debuginfo
/-debuginfo-common
packages. You can install the required -devel
, -debuginfo
, and -debuginfo-common
packages for your kernel.
yum
to download and install the appropriate packages. Configure the channels with either the rhn-channel
command or the Red Hat Network web interface. To obtain a list of the channels SystemTap needs on the system use the following script:
#! /bin/bash pkg=`rpm -q --whatprovides "redhat-release"` releasever=`rpm -q --qf "%{version}" $pkg` variant=`echo $releasever | tr -d "[:digit:]" | tr "[:upper:]" "[:lower:]" ` if test -z "$variant"; then echo "No Red Hat Enterprise Linux variant (workstation/client/server) found." exit 1 fi version=`echo $releasever | tr -cd "[:digit:]"` base=`uname -i` echo "rhel-$base-$variant-$version" echo "rhel-$base-$variant-$version-debuginfo" echo "rhel-$base-$variant-optional-$version-debuginfo" echo "rhel-$base-$variant-optional-$version"
rhel-x86_64-workstation-6 rhel-x86_64-workstation-6-debuginfo rhel-x86_64-workstation-optional-6-debuginfo rhel-x86_64-workstation-optional-6
rhn-channel --list
will provide a list of channels the machine is currently subscribed to. If the machine is only subscribed to rhel-x86_64-workstation-6
, then with root and Red Hat Network administrator privileges for the machine the other channels could be added with the following command:
rhn-channel --add \ --channel=rhel-x86_64-workstation-6-debuginfo \ --channel=rhel-x86_64-workstation-optional-6-debuginfo \ --channel=rhel-x86_64-workstation-optional-6
yum
with the following commands:
yum install kernelname
-devel-version
debuginfo-install kernelname
-version
kernelname
with the appropriate kernel variant name (for example, kernel-PAE
), and version
with the target kernel's version. For example, to install the required kernel information packages for the kernel-PAE-2.6.18-53.1.13.el5
kernel, run:
yum install kernel-PAE-devel-2.6.18-53.1.13.el5
debuginfo-install kernel-PAE-2.6.18-53.1.13.el5
yum
and yum-utils
installed (and you are unable to install them) on Red Hat Enterprise Linux 4 or 5, you will have to manually download and install the required kernel information packages. To generate the URL from which to download the required packages, use the following script:
#! /bin/bash pkg="redhat-release" releasever=`rpm -q --qf "%{version}" $pkg` base=`uname -m` echo "ftp://ftp.redhat.com/pub/redhat/linux/\ enterprise/$releasever/en/os/$base/Debuginfo"
rpm --force -ivh package_names
.
stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}'
. This command simply instructs SystemTap to print read performed
then exit properly once a virtual file system read is detected. If the SystemTap deployment was successful, you should get output similar to the following:
Pass 1: parsed user script and 45 library script(s) in 340usr/0sys/358real ms. Pass 2: analyzed script: 1 probe(s), 1 function(s), 0 embed(s), 0 global(s) in 290usr/260sys/568real ms. Pass 3: translated to C into "/tmp/stapiArgLX/stap_e5886fa50499994e6a87aacdc43cd392_399.c" in 490usr/430sys/938real ms. Pass 4: compiled C into "stap_e5886fa50499994e6a87aacdc43cd392_399.ko" in 3310usr/430sys/3714real ms. Pass 5: starting run. read performed Pass 5: run completed in 10usr/40sys/73real ms.
Pass 5
) indicate that SystemTap was able to successfully create the instrumentation to probe the kernel, run the instrumentation, detect the event being probed (in this case, a virtual file system read), and execute a valid handler (print text then close it with no errors).