diff options
Diffstat (limited to 'experiments/01_20250913_booting_minimal_image')
4 files changed, 39 insertions, 0 deletions
diff --git a/experiments/01_20250913_booting_minimal_image/README b/experiments/01_20250913_booting_minimal_image/README new file mode 100644 index 0000000..685b30e --- /dev/null +++ b/experiments/01_20250913_booting_minimal_image/README @@ -0,0 +1,16 @@ +Initially this experiment was about booting kernel directly into VM with qemu +and making minimal initramfs + +At 29.11.2025 I decided to copy few binaries to initramfs to see if I can get +a working shell. Turned out it's actually easy and adding bin/dash, 2 libs it +dynamically links to at runtime (ld and libc) and making correct symlinks was +enough to get me started + +binaries copied: +/bin/dash +/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 +/lib/x86_64-linux-gnu/libc.so.6 + +links: +/init -> /bin/dash +/lib64/ld-linux-x86-64.so.2 -> /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 diff --git a/experiments/01_20250913_booting_minimal_image/build_initrd.sh b/experiments/01_20250913_booting_minimal_image/build_initrd.sh new file mode 100755 index 0000000..5525e92 --- /dev/null +++ b/experiments/01_20250913_booting_minimal_image/build_initrd.sh @@ -0,0 +1,8 @@ +#!/usr/bin/sh + +mkdir -p initramfs + +gcc -static -o initramfs/init init/main.c + +cd initramfs +find . | cpio -o -H newc | gzip > ../initrd.cpio.gz diff --git a/experiments/01_20250913_booting_minimal_image/init/main.c b/experiments/01_20250913_booting_minimal_image/init/main.c new file mode 100644 index 0000000..c87e23a --- /dev/null +++ b/experiments/01_20250913_booting_minimal_image/init/main.c @@ -0,0 +1,12 @@ +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <string.h> + +int +main(int argc, char **argv) +{ + fprintf(stderr, "Testing things UwU\n"); + + return 0; +} diff --git a/experiments/01_20250913_booting_minimal_image/run_qemu.sh b/experiments/01_20250913_booting_minimal_image/run_qemu.sh new file mode 100755 index 0000000..211b281 --- /dev/null +++ b/experiments/01_20250913_booting_minimal_image/run_qemu.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env sh + +qemu-system-x86_64 -kernel /boot/vmlinuz-$(uname -r) -initrd initrd.cpio.gz -nographic -append "root=/dev/sda console=ttyS0" |
