When ugrd generates an initramfs it copies some system binaries into the boot filesystem image including /usr/bin/cp, /usr/bin/mkdir, and more. But when sys-apps/coreutils is built with USE=multicall some of those binaries are just 1-line shebang scripts that call /usr/bin/coreutils. $ cat /usr/bin/cp #!/usr/bin/coreutils --coreutils-prog-shebang=cp $ Ugrd doesn't know it needs to copy /usr/bin/coreutils too, so booting with the initramfs fails. See the boot log below. The key error message is /init: line 5: /usr/bin/mkdir: cannot execute: required file not found The failure happens with current stable ugrd-1.29.0 and with unstable ugrd-1.31.2. A workaround is to tell ugrd to copy the extra binary by adding 'binaries = [ "/usr/bin/coreutils" ]' to the ugrd config file (default /etc/ugrd/config.toml). USE=multicall gets passed to the coreutils configure script as "--enable-single-binary" and I noticed that it also accepts "--enable-single-binary=symlinks" to use symlinks instead of shebang scripts. So maybe a better fix is for the coreutils ebuild to pass that to the configure script instead. Symlinks seem like a better way to go anyhow, and ugrd would work with them as-is. ... [ ] RAS: Correctable Errors collector initialized. [ ] clk: Disabling unused clocks [ ] PM: genpd: Disabling unused power domains [ ] Freeing unused decrypted memory: 2028K [ ] Freeing unused kernel image (initmem) memory: 4932K [ ] Write protecting the kernel read-only data: 34816k [ ] Freeing unused kernel image (rodata/data gap) memory: 1944K [ ] x86/mm: Checked W+X mappings: passed, no W+X pages found. [ ] Run /init as init process Mounted base mounts, version: 5.8.0 /init: line 5: /usr/bin/mkdir: cannot execute: required file not found /etc/profile: line 27: /run/vars/loglevel: No such file or directory /etc/profile: line 27: /run/vars/init: No such file or directory /etc/profile: line 27: /run/vars/SWITCH_ROOT_TARGET: No such file or directory /etc/profile: line 27: /run/vars/MOUNTS_ROOT_SOURCE: No such file or directory /etc/profile: line 27: /run/vars/MOUNTS_ROOT_TYPE: No such file or directory /etc/profile: line 27: /run/vars/MOUNTS_ROOT_OPTIONS: No such file or directory /etc/profile: line 27: /run/vars/MOUNTS_ROOT_TARGET: No such file or directory /etc/profile: line 27: /run/vars/VERSION: No such file or directory /etc/profile: line 27: /run/vars/exported: No such file or directory /etc/profile: line 27: /run/vars/INIT_ARGS: No such file or directory /etc/profile: line 27: /run/vars/quiet: No such file or directory /etc/profile: line 27: /run/vars/debug: No such file or directory /etc/profile: line 27: /run/vars/recovery: No such file or directory /etc/profile: line 27: /run/vars/rootwait: No such file or directory /etc/profile: line 27: /run/vars/root: No such file or directory Parsed cmdline: root=PARTUUID=94a4fb0f-1728-43d8-af16-2e849cd58c32 ro UGRD v Kernel version: 6.12.21-gentoo-dist Loading kernel modules: crc32c insmod /lib/modules/6.12.21-gentoo-dist/kernel/arch/x86/crypto/crc32c-intel.ko /etc/profile: line 32: echo: write error: Invalid argument Scanning for Btrfs filesystems Root mount already exists, unmounting: umount: : no mount point specified. Mounting '' () to '' with options: mount: : unknown filesystem type ''. dmesg(1) may have more information after failed mount system call. [0/5] Failed: mount -t -o Retrying in: 1s mount: : unknown filesystem type ''. dmesg(1) may have more information after failed mount system call. [1/5] Failed: mount -t -o Retrying in: 1s mount: : unknown filesystem type ''. dmesg(1) may have more information after failed mount system call. [2/5] Failed: mount -t -o Retrying in: 1s mount: : unknown filesystem type ''. dmesg(1) may have more information after failed mount system call. [3/5] Failed: mount -t -o Retrying in: 1s mount: : unknown filesystem type ''. dmesg(1) may have more information after failed mount system call. [4/5] Failed: mount -t -o Checking root mount: Failure: Root not found at: Press enter to display debug info. Reproducible: Always
Fixed here, I'm going to try to include this in the upcoming 2.0.0 release: https://github.com/desultory/ugrd/pull/265 I can backport this if needed, but it seems like it would also be good for the multicall option to be able to use symlinks somehow, so this fix isn't always needed.