Skip to content

Commit c30d4b4

Browse files
committed
Add kernel_kselftest.sh
This is a helper script for running kselftests against a kernel under test. It attempts to install the appropriate dependencies for different versions of Rocky Linux and attempts to run appropriate tests, with appropriate permissions, for a few select kernel versions. This is just a starting point. Hopefully this continues to evolve, increasing the number of successful that can reliably be run.
1 parent 9e07d75 commit c30d4b4

File tree

1 file changed

+246
-0
lines changed

1 file changed

+246
-0
lines changed

kernel_kselftest.sh

Lines changed: 246 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,246 @@
1+
#!/bin/sh
2+
set -e
3+
4+
KSELFTEST_LOG_DIR=${KSELFTEST_LOG_DIR:-../kselftest-logs}
5+
6+
# So we can detect what version of Rocky we are running on
7+
. /etc/os-release
8+
9+
if [ ! -f .config ] ; then
10+
echo "No .config found. Please configure before testing"
11+
exit 1
12+
fi
13+
14+
if [ $# -eq 1 ] ; then
15+
runs=$1
16+
else
17+
runs=1
18+
fi
19+
20+
install_kselftest_deps_8() {
21+
echo
22+
echo "Installing kselftest deps for Rocky 8"
23+
echo
24+
sudo dnf -y groupinstall 'Development Tools'
25+
sudo dnf -y install epel-release
26+
sudo dnf -y install --enablerepo=devel \
27+
VirtualGL \
28+
alsa-lib-devel \
29+
bc \
30+
clang \
31+
curl \
32+
dropwatch \
33+
dwarves \
34+
glibc \
35+
iperf3 \
36+
jq \
37+
kernel-devel \
38+
libasan \
39+
libcap-devel \
40+
libcap-ng-devel \
41+
libmnl-devel \
42+
libreswan \
43+
libubsan \
44+
llvm \
45+
ncurses-devel \
46+
net-tools \
47+
netsniff-ng \
48+
nmap-ncat \
49+
numactl-devel \
50+
openssl-devel \
51+
perf \
52+
popt-devel \
53+
python3-pip \
54+
rsync \
55+
socat \
56+
tcpdump \
57+
wget
58+
59+
# Doesn't work for 8.6?
60+
sudo dnf -y install --enablerepo=devel \
61+
fuse-devel \
62+
gcc-toolset-13-libasan-devel \
63+
glibc-static \
64+
kernel-selftests-internal
65+
66+
pip3 install --user \
67+
netaddr \
68+
packaging \
69+
pyftpdlib \
70+
pyparsing \
71+
pytest \
72+
scapy \
73+
tftpy
74+
}
75+
76+
install_kselftest_deps_9() {
77+
echo
78+
echo "Installing kselftest deps for Rocky 9"
79+
echo
80+
sudo dnf -y groupinstall 'Development Tools'
81+
sudo dnf -y install epel-release
82+
sudo dnf -y install --enablerepo=crb,devel \
83+
VirtualGL \
84+
alsa-lib-devel \
85+
bc \
86+
clang \
87+
curl \
88+
dropwatch \
89+
dwarves \
90+
fuse-devel \
91+
gcc-toolset-13-libasan-devel \
92+
glibc \
93+
glibc-static \
94+
iperf3 \
95+
jq \
96+
kernel-devel \
97+
kernel-selftests-internal \
98+
libasan \
99+
libcap-devel \
100+
libcap-ng-devel \
101+
libmnl-devel \
102+
libreswan \
103+
libubsan \
104+
llvm \
105+
ncurses-devel \
106+
net-tools \
107+
netsniff-ng \
108+
nmap-ncat \
109+
numactl-devel \
110+
openssl-devel \
111+
packetdrill \
112+
perf \
113+
popt-devel \
114+
python3-pip \
115+
rsync \
116+
socat \
117+
tcpdump \
118+
virtme-ng \
119+
wget
120+
121+
pip3 install --user \
122+
netaddr \
123+
packaging \
124+
pyftpdlib \
125+
pyparsing \
126+
pytest \
127+
scapy \
128+
tftpy \
129+
wheel
130+
}
131+
132+
install_kselftest_deps_10() {
133+
echo
134+
echo "Installing kselftest deps for Rocky 10"
135+
echo
136+
sudo dnf -y groupinstall 'Development Tools'
137+
sudo dnf -y install epel-release
138+
sudo dnf -y install --enablerepo=crb,devel \
139+
alsa-lib-devel \
140+
bc \
141+
clang \
142+
curl \
143+
dropwatch \
144+
dwarves \
145+
fuse-devel \
146+
glibc \
147+
glibc-static \
148+
iperf3 \
149+
kernel-devel \
150+
kernel-selftests-internal \
151+
libasan \
152+
libasan-static \
153+
libcap-devel \
154+
libcap-ng-devel \
155+
libmnl-devel \
156+
libreswan \
157+
libubsan \
158+
llvm \
159+
ncurses-devel \
160+
net-tools \
161+
nmap-ncat \
162+
numactl-devel \
163+
openssl-devel \
164+
packetdrill \
165+
perf \
166+
popt-devel \
167+
python3-pip \
168+
rsync \
169+
socat \
170+
tcpdump \
171+
virtme-ng \
172+
wget
173+
174+
pip3 install --user \
175+
netaddr \
176+
packaging \
177+
pyftpdlib \
178+
pyparsing \
179+
pytest \
180+
scapy \
181+
tftpy \
182+
wheel
183+
}
184+
185+
run_kselftest() {
186+
SUDO_TARGETS=$1
187+
SKIP_TARGETS=$2
188+
mkdir -p $KSELFTEST_LOG_DIR
189+
make -C tools/testing/selftests clean
190+
make -C tools/testing/selftests SKIP_TARGETS="$SKIP_TARGETS"
191+
for run in $(seq 1 $runs) ; do
192+
make -C tools/testing/selftests SKIP_TARGETS="$SUDO_TARGETS $SKIP_TARGETS" run_tests | tee $KSELFTEST_LOG_DIR/selftest-$(uname -r)-$run.log
193+
sudo make -C tools/testing/selftests TARGETS="$SUDO_TARGETS" run_tests | tee -a $KSELFTEST_LOG_DIR/selftest-$(uname -r)-$run.log
194+
done
195+
}
196+
197+
case "$ROCKY_SUPPORT_PRODUCT" in
198+
Rocky-Linux-10)
199+
install_kselftest_deps_10
200+
;;
201+
Rocky-Linux-9)
202+
install_kselftest_deps_9
203+
;;
204+
Rocky-Linux-8)
205+
install_kselftest_deps_8
206+
;;
207+
esac
208+
209+
case $(uname -r) in
210+
*3.10.0*)
211+
echo
212+
echo "Running 3.10.0 kselftests"
213+
echo
214+
SUDO_TARGETS="x86"
215+
SKIP_TARGETS=""
216+
;;
217+
*4.18.0*)
218+
echo
219+
echo "Running 4.18.0 kselftests"
220+
echo
221+
SUDO_TARGETS="capabilities cpu-hotplug cpufreq efivars efivarfs fpu ipc intel_pstate kexec lib livepatch memfd memory-hotplug mptcp mqueue net netfilter sync sysctl timens timers vm x86 zram"
222+
SKIP_TARGETS=""
223+
;;
224+
*5.14.0*)
225+
echo
226+
echo "Running 5.14.0 kselftests"
227+
echo
228+
SUDO_TARGETS="binderfs capabilities cgroup cpu-hotplug cpufreq efivars efivarfs firmware fpu gpio ipc intel_pstate ir kexec lib livepatch memfd memory-hotplug mptcp mqueue net netfilter sync sysctl timens timers vm x86 zram"
229+
SKIP_TARGETS="lkdtm proc"
230+
;;
231+
*6.12.*)
232+
echo
233+
echo "Running 6.12 kselftests"
234+
echo
235+
SUDO_TARGETS="binderfs capabilities cgroup clone3 cpu-hotplug cpufreq damon drivers/net efivars efivarfs exec firmware fpu gpio ipc intel_pstate ir kexec lib livepatch memfd memory-hotplug mptcp mqueue net netfilter sync sysctl timens timers vm x86 zram"
236+
SKIP_TARGETS="lkdtm"
237+
;;
238+
*)
239+
echo
240+
echo "Warning: Unknown kernel version ($(uname -r)). No kselftest targets defined."
241+
exit 1
242+
;;
243+
esac
244+
245+
run_kselftest "$SUDO_TARGETS" "$SKIP_TARGETS"
246+

0 commit comments

Comments
 (0)