环境:Anolis Linux 8.6。
最近在使用 systemtap 的时候发现下面这么一个问题:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
$ stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}'
Pass 1: parsed user script and 490 library scripts using 507916virt/99428res/16760shr/82536data kb, in 220usr/60sys/281real ms.
WARNING: cannot find module kernel debuginfo: No DWARF information found [man warning::debuginfo]
semantic error: resolution failed in DWARF builder
semantic error: while resolving probe point: identifier 'kernel' at /usr/share/systemtap/tapset/linux/vfs.stp:980:18
source: probe vfs.read = kernel.function("vfs_read")
^
semantic error: no match
semantic error: resolution failed in alias expansion builder
Pass 2: analyzed script: 0 probes, 0 functions, 0 embeds, 0 globals using 533960virt/110748res/22092shr/88516data kb, in 810usr/120sys/933real ms.
Pass 2: analysis failed. [man error::pass2]
|
经过研究发现,stap -h
告诉我们它想要使用的 kernel-debuginfo 的版本是4.19.91-27.an8.x86_64
:
1
2
3
4
5
|
$ stap -h
...
-r RELEASE cross-compile to kernel /lib/modules/RELEASE/build, instead of
/lib/modules/4.19.91-27.an8.x86_64/build
...
|
而uname -r
告诉我们当前的内核版本是 4.19.91-26.an8.x86_64
两者不一致:
1
2
|
$ uname -r
4.19.91-26.an8.x86_64
|
但是 yum 仓库里没有 4.19.91-27.an8.x86_64
的内核。
yum repolist --all
查看所有仓库:
1
2
3
4
5
|
$ yum repolist --all
...
Plus [Disabled]
BaseOS-debuginfo [Enabled]
Plus-debuginfo [Enabled]
|
把 Plus 仓库启用起来:
1
|
$ yum-config-manager --enable Plus
|
然后再安装 kernel 和 kernel-devel:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
$ yum install -y kernel
AnolisOS-8 - Plus 126 kB/s | 3.8 kB 00:00
软件包 kernel-4.19.91-26.an8.x86_64 已安装。
依赖关系解决。
=====================================================================================
软件包 架构 版本 仓库 大小
=====================================================================================
安装:
kernel x86_64 4.19.91-27.an8 Plus 307 k
安装依赖关系:
kernel-core x86_64 4.19.91-27.an8 Plus 23 M
kernel-modules x86_64 4.19.91-27.an8 Plus 21 M
...
$ dnf install kernel-devel-4.19.91-27.an8.x86_64
|
重启机器,问题解决。
评论