a4f5ed5a7c
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@free.fr> Cc: Thierry Bultel <thierry.bultel@linatsea.fr> Cc: Adam Duskett <aduskett@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> |
||
---|---|---|
arch | ||
board | ||
boot | ||
configs | ||
docs | ||
fs | ||
linux | ||
package | ||
support | ||
system | ||
toolchain | ||
utils | ||
.clang-format | ||
.defconfig | ||
.flake8 | ||
.gitignore | ||
.gitlab-ci.yml | ||
.shellcheckrc | ||
CHANGES | ||
Config.in | ||
Config.in.legacy | ||
COPYING | ||
DEVELOPERS | ||
Makefile | ||
Makefile.legacy | ||
README |
Buildroot is a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation. The documentation can be found in docs/manual. You can generate a text document with 'make manual-text' and read output/docs/manual/manual.text. Online documentation can be found at http://buildroot.org/docs.html To build and use the buildroot stuff, do the following: 1) run 'make menuconfig' 2) select the target architecture and the packages you wish to compile 3) run 'make' 4) wait while it compiles 5) find the kernel, bootloader, root filesystem, etc. in output/images You do not need to be root to build or run buildroot. Have fun! Buildroot comes with a basic configuration for a number of boards. Run 'make list-defconfigs' to view the list of provided configurations. Please feed suggestions, bug reports, insults, and bribes back to the buildroot mailing list: buildroot@buildroot.org You can also find us on #buildroot on OFTC IRC. If you would like to contribute patches, please read https://buildroot.org/manual.html#submitting-patches