selftest/kho: update generation of initrd

Use nolibc include directory rather than include a cumulative nolibc.h on
the compiler command line and replace use of 'sudo cpio' with
usr/gen_init_cpio.

While on it fix spelling of KHO_FINALIZE

Link: https://lkml.kernel.org/r/20250811082510.4154080-4-rppt@kernel.org
Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
Suggested-by: Thomas Weißschuh <linux@weissschuh.net>
Cc: Alexander Graf <graf@amazon.com>
Cc: Baoquan He <bhe@redhat.com>
Cc: Changyuan Lyu <changyuanl@google.com>
Cc: Pasha Tatashin <pasha.tatashin@soleen.com>
Cc: Pratyush Yadav <pratyush@kernel.org>
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Mike Rapoport (Microsoft) 2025-08-11 11:25:10 +03:00 committed by Andrew Morton
parent 950c31e8f1
commit 801295be01
2 changed files with 18 additions and 21 deletions

View File

@ -1,22 +1,17 @@
// SPDX-License-Identifier: GPL-2.0
#ifndef NOLIBC
#include <errno.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <syscall.h>
#include <sys/syscall.h>
#include <sys/mount.h>
#include <sys/reboot.h>
#endif
#include <linux/kexec.h>
/* from arch/x86/include/asm/setup.h */
#define COMMAND_LINE_SIZE 2048
/* from include/linux/kexex.h */
#define KEXEC_FILE_NO_INITRAMFS 0x00000004
#define KHO_FINILIZE "/debugfs/kho/out/finalize"
#define KHO_FINALIZE "/debugfs/kho/out/finalize"
#define KERNEL_IMAGE "/kernel"
static int mount_filesystems(void)
@ -32,7 +27,7 @@ static int kho_enable(void)
const char enable[] = "1";
int fd;
fd = open(KHO_FINILIZE, O_RDWR);
fd = open(KHO_FINALIZE, O_RDWR);
if (fd < 0)
return -1;

View File

@ -10,7 +10,6 @@ kernel_dir=$(realpath "$test_dir/../../../..")
tmp_dir=$(mktemp -d /tmp/kho-test.XXXXXXXX)
headers_dir="$tmp_dir/usr"
initrd_dir="$tmp_dir/initrd"
initrd="$tmp_dir/initrd.cpio"
source "$test_dir/../kselftest/ktap_helpers.sh"
@ -81,19 +80,22 @@ EOF
function mkinitrd() {
local kernel=$1
mkdir -p "$initrd_dir"/{dev,debugfs,proc}
sudo mknod "$initrd_dir/dev/console" c 5 1
"$CROSS_COMPILE"gcc -s -static -Os -nostdinc -nostdlib \
-fno-asynchronous-unwind-tables -fno-ident \
-I "$headers_dir/include" \
-I "$kernel_dir/tools/include/nolibc" \
-o "$tmp_dir/init" "$test_dir/init.c"
"$CROSS_COMPILE"gcc -s -static -Os -nostdinc -I"$headers_dir/include" \
-fno-asynchronous-unwind-tables -fno-ident -nostdlib \
-include "$test_dir/../../../include/nolibc/nolibc.h" \
-o "$initrd_dir/init" "$test_dir/init.c" \
cat > "$tmp_dir/cpio_list" <<EOF
dir /dev 0755 0 0
dir /proc 0755 0 0
dir /debugfs 0755 0 0
nod /dev/console 0600 0 0 c 5 1
file /init $tmp_dir/init 0755 0 0
file /kernel $kernel 0644 0 0
EOF
cp "$kernel" "$initrd_dir/kernel"
pushd "$initrd_dir" &>/dev/null
find . | cpio -H newc --create > "$initrd" 2>/dev/null
popd &>/dev/null
"$build_dir/usr/gen_init_cpio" "$tmp_dir/cpio_list" > "$initrd"
}
function run_qemu() {