(1)解压内核
bzip2 -d linux-2.6.19.tar.bz2
tar xvf linux-2.6.19.tar
生成linux-2.6.19目录
(2)复制内核到/usr/src目录下
cp -r linux-2.6.19 /usr/src/
(3) 解压papi到目录/opt下,
tar zxvf papi-3.6.0.tar.gz
cp papi-3.6.0 /opt/
(4)
cd /usr/src/linux-2.6.19
make mrproper
(5)在内核目录下执行update-kernel
cd /usr/src/linux-2.6.19
/opt/papi-3.6.0/src/perfctr-2.6.x/update-kernel
<必须在内核目录下执行,否则在后续选择内核模块时找不到perctr>
若内核版本有问题则出现如下信息
Error: no suitable patch found for kernel 2.6.19zkl-perfctr
See perfctr-2.6.x/patches/ for supported kernel versions,
可以查看perfctr-2.6.x/patches/下支持的内核版本。
(6)该步骤可以跳过,也可以这样做
拷贝原有内核的.config到当前内核目录下
cd /usr/src/linux-2.6.19
cp /usr/src/kernels/2.6.18-164.el5-x86_64/.config .
(7)配置选择内核模块
cd /usr/src/linux-2.6.19
make menuconfig
选择模块:
查看perfctr-2.6.x目录下的INSTALL文件,它有如下这些内容,其意思是说必须选择这样几个模块:
(i)Loadable module support 选项下,一般默认即可,这个模块的功能是帮助系统可以动态加载模块。
(ii)Processor type and features选项下的Performance-monitoring counters support(即PERFCTR),
这个必须选择,笔者做实验觉得应该将PERFCTR选择为(M),其子项均选择为*,将它编译成可动态加载的模块,请按如下方式选择。
注意:
我在做实验时,最开始将PERFCTR选择为*,将其编译进内核,最后安装完毕,始终不能执行perfectr的实例,查看系统目录/lib/modules/'uname -r'/drivers下也没有perfectr模块,使用lsmod不能查看到perfctr模块,既然编译进了内核,应该能看到的,不知啥原因?更不能使用命令modprobe perfctr加载模块(因为不是以动态加载模块的形式加载的),可能与没有将PERFCTR模块设置为M有关。