mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 01:53:29 +02:00
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:
parent
950c31e8f1
commit
801295be01
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user