The kernel ALWAYS runs /init when booting from an initramfs. If /init doesn't exist, the kernel falls back to the legacy root-mount path (looking for a real root partition via root= cmdline), which we don't want — our system IS the initramfs. Previous fix removed piCore's /init to stop it from being run; that caused the kernel to skip the initramfs entrypoint entirely and panic with 'Cannot open root device' (error -6). Correct fix: replace piCore's /init with a copy of our init.sh. The kernel runs /init -> our staged boot, which is exactly what we want. Keep /sbin/init as well (some boot paths exec it directly, e.g. via init= cmdline override) and the existing init=/sbin/init in grub-arm64.cfg as a belt. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
21 KiB
Executable File
21 KiB
Executable File