The initramfs filesystem layout is derived from the paths of the binaries and libraries in the full system. Create the same symlinks and adjust initrd_add_bin so it does not trip over the symlinks.
I've also considered to change all input for initrd_add_bin to point at the /usr/… paths. But this is not possible, for example ldd/lddtree will point at libraries in /lib and /lib64, and this gets passed to initrd_add_bin.
Without this patch, the init script and all binaries called from it cannot be executed.
Set init= so the kernel doesn't try to run other scripts if /init fails:
[ 2.946381] Run /init as init process [ 2.948885] Failed to execute /init (error -2) [ 2.949051] Run /sbin/init as init process [ 2.949329] Run /etc/init as init process [ 2.949566] Run /bin/init as init process [ 2.949795] Run /bin/sh as init process