[Buildroot] [PATCH] package/dracut: workaround breakage on non-merged-usr hosts

Thomas Petazzoni thomas.petazzoni at bootlin.com
Sun Nov 13 21:11:28 UTC 2022


On Sat, 12 Nov 2022 14:37:07 +0100
"Yann E. MORIN" <yann.morin.1998 at free.fr> wrote:

> dracut is not really ready to be installed with a non-/ prefix, and it
> has a lot of hard-coded assumptions that it is going to run on the host
> for which it is goign to generate an initramfs; for example, it
> hard-codes calls to /lib/dracut/some-file in some of its modules. It
> also uses the host system layout to decide whether it needs a
> merged-usr or not.
> 
> Furthermore, dracut populates the temporary directory which content will
> be used to generate the cpio, with a bunch of files, even before calling
> any of the dracut modules.
> 
> The name for that temporary directory is not predictable (looks like the
> output of 'mktemp -d dracut.XXXXXX', with names like dracut.1Vfn9F seen
> while debugging).
> 
> As a consequence, we can't prepare the temporary directory with the
> proper symlinks beforehand.
> 
> So, we provide a very-early module of our own, that will (hopefully) run
> before any other module, to fixup the messed-up layout prepared by
> dracut. This module moves the content of /lib, /bin, and /sbin, out and
> into their counterparts in /usr, and creates the usual symlinks.
> 
> When we do not require a merged-usr, then we have nothing to do, so the
> module checks for /lib being a symlink, as the hint that we want a
> merged-usr or not.
> 
> Note: currently, we've seen nothing that dracut installed in /bin or
> /sbin, but for trying to be future-proof, we also handle them; this
> causes a spurious warning:
>     mv: cannot stat '..../build/buildroot-fs/cpio/tmp/dracut.YQnzNP/initramfs/bin/*': No such file or directory
> 
> Since there are already quite a bunch of similar failures in the
> official modules bundled in dracut, an extra such issue or two should
> not be too scary...
> 
> Fixes:
>     https://gitlab.com/buildroot.org/buildroot/-/jobs/3282261241
>     https://gitlab.com/buildroot.org/buildroot/-/jobs/3282261239
>     https://gitlab.com/buildroot.org/buildroot/-/jobs/3282261236
> 
> Signed-off-by: Yann E. MORIN <yann.morin.1998 at free.fr>
> Cc: Thierry Bultel <thierry.bultel at linatsea.fr>
> Cc: Adam Duskett <aduskett at gmail.com>
> ---
>  package/dracut/dracut.mk                  |  2 ++
>  package/dracut/merged-usr-module-setup.sh | 26 +++++++++++++++++++++++
>  2 files changed, 28 insertions(+)
>  create mode 100644 package/dracut/merged-usr-module-setup.sh

Applied to master, thanks.

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com



More information about the buildroot mailing list