Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 953538 - sys-kernel/ugrd-1.29.0 initramfs boot fails with sys-apps/coreutils[multicall]
Summary: sys-kernel/ugrd-1.29.0 initramfs boot fails with sys-apps/coreutils[multicall]
Status: UNCONFIRMED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal
Assignee: zen
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-04-11 00:00 UTC by gen2dev
Modified: 2025-04-11 17:22 UTC (History)
4 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description gen2dev 2025-04-11 00:00:00 UTC
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
Comment 1 zen 2025-04-11 17:22:20 UTC
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.