Sometimes BOOT_IMAGE contains partition which does not point to /boot e.g. BOOT_IMAGE=(hd0,gpt1)/opensuse-tumbleweed/6.18.3-1-default/linux-30afdbce3ab6d0eff8f42b71df1a66f4baf2daf8 on Tumbleweed aarch64. Therefore detect common kernel image paths.
Signed-off-by: Petr Vorel <[email protected]> --- .../security/integrity/ima/tests/ima_kexec.sh | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/testcases/kernel/security/integrity/ima/tests/ima_kexec.sh b/testcases/kernel/security/integrity/ima/tests/ima_kexec.sh index d6eb0829d8..7688690af2 100755 --- a/testcases/kernel/security/integrity/ima/tests/ima_kexec.sh +++ b/testcases/kernel/security/integrity/ima/tests/ima_kexec.sh @@ -42,7 +42,7 @@ measure() setup() { - local arch + local arch f uname if [ ! -f "$IMA_KEXEC_IMAGE" ]; then for arg in $(cat /proc/cmdline); do @@ -63,6 +63,32 @@ setup() fi fi + if [ ! -f "$IMA_KEXEC_IMAGE" ]; then + uname="$(uname -r)" + + # x86_64 + f="/boot/vmlinuz-$uname" + + # ppc64le, s390x + if [ ! -f "$f" ]; then + f="/boot/vmlinux-$uname" + fi + + # aarch64 + if [ ! -f "$f" ]; then + f="/boot/Image-$uname" + fi + + # aarch64 often uses compression + if [ ! -f "$f" ]; then + f="$(ls /boot/Image-$uname.* || true)" + fi + + if [ -f "$f" ]; then + IMA_KEXEC_IMAGE="$f" + fi + fi + if [ ! -f "$IMA_KEXEC_IMAGE" ]; then tst_brk TCONF "kernel image not found, specify path in \$IMA_KEXEC_IMAGE" fi -- 2.51.0
