From e8d5fb1fab1fdd7df34163d283b864465039e955 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 2 Jan 2026 00:40:38 +0000 Subject: [PATCH 1/4] Initial plan From 5605feabff5793f8f915f3b16b9ad265b895b4af Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 2 Jan 2026 00:43:09 +0000 Subject: [PATCH 2/4] Fix kernel panic by adding initrd to GRUB config Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com> --- config/grub.cfg.in | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config/grub.cfg.in b/config/grub.cfg.in index 9c16822..9c439f5 100644 --- a/config/grub.cfg.in +++ b/config/grub.cfg.in @@ -26,14 +26,17 @@ echo "SparkOS Boot Menu - Starting in $timeout seconds..." menuentry "SparkOS" { echo "Loading SparkOS kernel..." linux /boot/vmlinuz root=LABEL=@ROOT_LABEL@ ro init=/sbin/init console=tty0 console=ttyS0,115200n8 + initrd /boot/initrd.img } menuentry "SparkOS (Verbose Mode)" { echo "Loading SparkOS kernel in verbose mode..." linux /boot/vmlinuz root=LABEL=@ROOT_LABEL@ ro init=/sbin/init console=tty0 console=ttyS0,115200n8 debug loglevel=7 + initrd /boot/initrd.img } menuentry "SparkOS (Recovery Mode)" { echo "Loading SparkOS kernel in recovery mode..." linux /boot/vmlinuz root=LABEL=@ROOT_LABEL@ rw init=/bin/sh console=tty0 console=ttyS0,115200n8 + initrd /boot/initrd.img } From 3db98e9a33acfd478efb9eb00fb75563cb4e19ec Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 2 Jan 2026 00:45:35 +0000 Subject: [PATCH 3/4] Ensure initrd is required and always copied during image build Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com> --- scripts/docker-image-create-uefi-old.sh | 11 ++++++++++- scripts/docker-image-create-uefi.sh | 14 ++++++++++---- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/scripts/docker-image-create-uefi-old.sh b/scripts/docker-image-create-uefi-old.sh index 0058a4b..1933550 100755 --- a/scripts/docker-image-create-uefi-old.sh +++ b/scripts/docker-image-create-uefi-old.sh @@ -57,7 +57,15 @@ INITRD_PATH=$(find /kernel/boot -name "initrd.img-*" | head -1) # Copy kernel and initrd to staging echo "Copying kernel to staging..." cp $KERNEL_PATH /staging/esp/boot/vmlinuz -if [ -f "$INITRD_PATH" ]; then cp $INITRD_PATH /staging/esp/boot/initrd.img; fi + +# Ensure initrd exists (required for booting) +if [ ! -f "$INITRD_PATH" ]; then + echo "ERROR: initrd not found. The kernel requires an initrd to boot." + echo "Expected to find: initrd.img-* in /kernel/boot/" + exit 1 +fi +echo "Copying initrd to staging..." +cp $INITRD_PATH /staging/esp/boot/initrd.img # Create GRUB configuration printf '%s\n' \ @@ -66,6 +74,7 @@ printf '%s\n' \ '' \ 'menuentry "SparkOS" {' \ ' linux /boot/vmlinuz root=LABEL=SparkOS rw init=/sbin/init console=tty1 quiet' \ + ' initrd /boot/initrd.img' \ '}' \ > /staging/esp/boot/grub/grub.cfg diff --git a/scripts/docker-image-create-uefi.sh b/scripts/docker-image-create-uefi.sh index 15dddd5..a61dd5b 100755 --- a/scripts/docker-image-create-uefi.sh +++ b/scripts/docker-image-create-uefi.sh @@ -40,7 +40,15 @@ INITRD_PATH=$(find /kernel/boot -name "initrd.img-*" | head -1) # Copy kernel and initrd to staging echo "Copying kernel to staging..." cp $KERNEL_PATH /staging/esp/boot/vmlinuz -if [ -f "$INITRD_PATH" ]; then cp $INITRD_PATH /staging/esp/boot/initrd.img; fi + +# Ensure initrd exists (required for booting) +if [ ! -f "$INITRD_PATH" ]; then + echo "ERROR: initrd not found. The kernel requires an initrd to boot." + echo "Expected to find: initrd.img-* in /kernel/boot/" + exit 1 +fi +echo "Copying initrd to staging..." +cp $INITRD_PATH /staging/esp/boot/initrd.img # Create GRUB configuration from template sed "s/@ROOT_LABEL@/$ROOT_LABEL/g" /build/config/grub.cfg.in > /staging/esp/boot/grub/grub.cfg @@ -110,9 +118,7 @@ mmd -i /tmp/esp.img ::/boot mmd -i /tmp/esp.img ::/boot/grub mcopy -i /tmp/esp.img /staging/esp/EFI/BOOT/BOOTX64.EFI ::/EFI/BOOT/ mcopy -i /tmp/esp.img /staging/esp/boot/vmlinuz ::/boot/ -if [ -f "/staging/esp/boot/initrd.img" ]; then - mcopy -i /tmp/esp.img /staging/esp/boot/initrd.img ::/boot/ -fi +mcopy -i /tmp/esp.img /staging/esp/boot/initrd.img ::/boot/ mcopy -i /tmp/esp.img /staging/esp/boot/grub/grub.cfg ::/boot/grub/ # Format root partition (ext4) with directory contents (no mount needed!) From 02d2314b5dd28ee2883520db74941a81aba310a0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 2 Jan 2026 00:47:02 +0000 Subject: [PATCH 4/4] Remove redundant conditional for initrd copying in old script Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com> --- scripts/docker-image-create-uefi-old.sh | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/scripts/docker-image-create-uefi-old.sh b/scripts/docker-image-create-uefi-old.sh index 1933550..87497f9 100755 --- a/scripts/docker-image-create-uefi-old.sh +++ b/scripts/docker-image-create-uefi-old.sh @@ -124,12 +124,9 @@ echo "Copying bootloader files..." guestfish -a /output/sparkos.img -m /dev/sda1 <