From 0aaaaa9bdf4c883c75f3ec15a491231ed21d6e8d Mon Sep 17 00:00:00 2001 From: Nathan Lee Date: Mon, 3 Aug 2026 20:40:24 -0500 Subject: create a simple CPIO parser for initrd's --- kernel/kernel.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'kernel/kernel.c') diff --git a/kernel/kernel.c b/kernel/kernel.c index e41d239..de556e7 100644 --- a/kernel/kernel.c +++ b/kernel/kernel.c @@ -2,6 +2,7 @@ #include #include #include +#include #define KERNEL_SIZE 3 * 1024 * 1024 @@ -24,7 +25,19 @@ void kernel_main(size_t hart, void *fdt) { km_init(info); - printk("kernel init was successful\n"); + printk("memory blocks initialized\n"); + + size_t len = 0; + uint32_t *initrd = dt_get_prop(head, "initrd", &len); + if (!initrd || len < 8) { + printk("failed to find initrd!\n"); + return; + } + uint32_t base = btohi(initrd[0]); + uint32_t size = btohi(initrd[1]); + + char *file = cpio_get_file((void*)base, (size_t)size, "/sbin/init"); + (void)file; } void kernel_trap() { -- cgit v1.2.3