]> git.ipfire.org Git - thirdparty/dracut.git/commit
Allow running on a cross-compiled rootfs
authorBöszörményi Zoltán <zboszor@pr.hu>
Thu, 24 Oct 2019 09:28:55 +0000 (11:28 +0200)
committerHarald Hoyer <harald@hoyer.xyz>
Fri, 25 Oct 2019 09:58:58 +0000 (11:58 +0200)
commita01204202b3014c0c761c93bc7de8bf35e6dc5ef
treea09a2934b193095df4991224409db175ddafb51c
parent89bc1aa324bcdda3723247218a697171c5a3de6f
Allow running on a cross-compiled rootfs

For the shell scripts, new environment variables were introduced.

dracutsysrootdir is the root directory, file existence checks use it.

DRACUT_LDCONFIG can override ldconfig with a different one that works
on the sysroot with foreign binaries.

DRACUT_LDD can override ldd with a different one that works
with foreign binaries.

DRACUT_TESTBIN can override /bin/sh. A cross-compiled sysroot
may use symlinks that are valid only when running on the target
so a real file must be provided that exist in the sysroot.

DRACUT_INSTALL now supports debugging dracut-install in itself
when run by dracut but without debugging the dracut scripts.
E.g. DRACUT_INSTALL="valgrind dracut-install or
DRACUT_INSTALL="dracut-install --debug".

DRACUT_COMPRESS_BZIP2, DRACUT_COMPRESS_LBZIP2, DRACUT_COMPRESS_LZMA,
DRACUT_COMPRESS_XZ, DRACUT_COMPRESS_GZIP, DRACUT_COMPRESS_PIGZ,
DRACUT_COMPRESS_LZOP, DRACUT_COMPRESS_ZSTD, DRACUT_COMPRESS_LZ4,
DRACUT_COMPRESS_CAT: All of the compression utilities may be
overridden, to support the native binaries in non-standard places.

DRACUT_ARCH overrides "uname -m".

SYSTEMD_VERSION overrides "systemd --version".

The dracut-install utility was overhauled to support sysroot via
a new option -r and fixes for clang-analyze. It supports
cross-compiler-ldd from
https://gist.github.com/jerome-pouiller/c403786c1394f53f44a3b61214489e6f

DRACUT_INSTALL_PATH was introduced so dracut-install can work with
a different PATH. In a cross-compiled environment (e.g. Yocto), PATH
points to natively built binaries that are not in the host's /bin,
/usr/bin, etc. dracut-install still needs plain /bin and /usr/bin
that are relative to the cross-compiled sysroot.

The hashmap pool allocate_tile/deallocate_tile code was removed
because clang-analyze showed errors in it. hashmap_copy was removed
because it wasn't used and clang-analyze showed errors in it.

DRACUT_INSTALL_LOG_TARGET and DRACUT_INSTALL_LOG_LEVEL were
introduced so dracut-install can use different settings from
DRACUT_LOG_TARGET and DRACUT_LOG_LEVEL.

Signed-off-by: Böszörményi Zoltán <zboszor@pr.hu>
52 files changed:
dracut-functions.sh
dracut-init.sh
dracut.sh
install/dracut-install.c
install/hashmap.c
install/hashmap.h
install/log.c
mkinitrd-dracut.sh
mkinitrd-suse.sh
modules.d/00systemd/module-setup.sh
modules.d/00warpclock/module-setup.sh
modules.d/02systemd-networkd/module-setup.sh
modules.d/03modsign/module-setup.sh
modules.d/10i18n/module-setup.sh
modules.d/35network-legacy/module-setup.sh
modules.d/40network/module-setup.sh
modules.d/45ifcfg/module-setup.sh
modules.d/45url-lib/module-setup.sh
modules.d/50drm/module-setup.sh
modules.d/50gensplash/module-setup.sh
modules.d/50plymouth/module-setup.sh
modules.d/50plymouth/plymouth-populate-initrd.sh
modules.d/80cms/module-setup.sh
modules.d/81cio_ignore/module-setup.sh
modules.d/90crypt/module-setup.sh
modules.d/90kernel-modules/module-setup.sh
modules.d/90kernel-network-modules/module-setup.sh
modules.d/90lvm/module-setup.sh
modules.d/90mdraid/module-setup.sh
modules.d/90multipath/module-setup.sh
modules.d/91crypt-gpg/module-setup.sh
modules.d/91zipl/module-setup.sh
modules.d/95cifs/module-setup.sh
modules.d/95dasd/module-setup.sh
modules.d/95dasd_mod/module-setup.sh
modules.d/95dasd_rules/module-setup.sh
modules.d/95dcssblk/module-setup.sh
modules.d/95debug/module-setup.sh
modules.d/95fcoe/module-setup.sh
modules.d/95fstab-sys/module-setup.sh
modules.d/95iscsi/module-setup.sh
modules.d/95nfs/module-setup.sh
modules.d/95qeth_rules/module-setup.sh
modules.d/95resume/module-setup.sh
modules.d/95ssh-client/module-setup.sh
modules.d/95terminfo/module-setup.sh
modules.d/95udev-rules/module-setup.sh
modules.d/95zfcp/module-setup.sh
modules.d/95zfcp_rules/module-setup.sh
modules.d/95znet/module-setup.sh
modules.d/99base/module-setup.sh
modules.d/99fs-lib/module-setup.sh