Hi,

Quoting Benjamin Drung (2026-05-06 14:11:13)
> > I would like to add another "me too" to what ch and mika said. I am
> > maintaining quite a few "image builders" and just ran into this problem
> > with one of them.  This used to work automatically before dracut came
> > along. It can thus evidently be solved automatically. It is an anti-feature
> > to now make all image builders set another environment variable just so
> > that dracut is happy.  As ch pointed out, this means that I also have to
> > backport such a change to earlier versions of Debian so that Debian stable
> > or oldstable is able to create a dracut image for testing and unstable.
> > Please fix this problem in one place (in dracut) instead of forcing a lot
> > of maintainers to do busy-work.
> 
> Can you give me psaudo-code or logic how to determine when dracut should
> default to build a generic initrd and when it can build a host-only initrd?

you could use the ischroot command, no?

Usually, chroot checks use something similar to this:

ischroot() {
  if [ "$(stat -c "%d/%i" "/")" != "$(stat -Lc "%d/%i" "/proc/1/root" 
2>/dev/null)" ]; then
    return 0 # in a chroot
  fi
  return 1 # not in a chroot
}

This checks whether the devicenumber/inode pair of what the process sees as the
root of the filesystem is the same as the one that the process which is 
currently
PID 1 (init) sees.

The above shell snippet is similar to what used to be used by initramfs-tools
before they switched to using the ischroot tool in 2016 (commit b0a5f26a).

The origin of the snippet might've been the udev postinst where it lived until
2023 when it got switched out in favour of dh_installsystemd.

Thanks!

cheers, josch

Attachment: signature.asc
Description: signature

Reply via email to