From bde347c2f27b7e3ab053fd4c84b3bfef0c7484c8 Mon Sep 17 00:00:00 2001 From: Stefan Reimer Date: Fri, 19 Feb 2021 15:35:17 +0100 Subject: [PATCH] Update dracut crypt-ssh support to latest stable --- sys-kernel/dracut/Manifest | 22 +- sys-kernel/dracut/dracut-027-r1.ebuild | 308 ------------------ sys-kernel/dracut/dracut-050-r2.ebuild | 172 ++++++++++ .../files/027-0000-fix-version-print.patch | 13 - ...acut-functions.sh-support-for-altern.patch | 37 --- ...ntoo.conf-let-udevdir-be-handled-by-.patch | 30 -- ...-Do-not-call-plymouth-with-full-path.patch | 167 ---------- ...ymouth-plymouth-pretrigger.sh-fixup-.patch | 25 -- sys-kernel/dracut/files/027-crypt-ssh.patch | 76 ----- .../050-Makefile-fix-VERSION-again.patch | 34 ++ ...main-version-and-git-version-earlier.patch | 78 +++++ ...050-btrfs-force-preload-btrfs-module.patch | 30 ++ .../dracut/files/050-busybox-module-fix.patch | 102 ++++++ ...ote-variables-in-parameter-expansion.patch | 111 +++++++ ...call-fsfreeze-on-subvol-of-root-file.patch | 75 +++++ ...ix-removal-of-pvscan-from-udev-rules.patch | 26 ++ ...ensure-that-nm-run.sh-is-executed-wh.patch | 48 +++ ...emd-remove-obsolete-syslog-parameter.patch | 241 ++++++++++++++ .../files/051-dracut.sh-move-ldconfig.patch | 60 ++++ sys-kernel/dracut/files/crypt-ssh-luks.patch | 132 ++++++++ .../dracut/files/gentoo-ldconfig-paths.patch | 39 +++ 21 files changed, 1162 insertions(+), 664 deletions(-) delete mode 100644 sys-kernel/dracut/dracut-027-r1.ebuild create mode 100644 sys-kernel/dracut/dracut-050-r2.ebuild delete mode 100644 sys-kernel/dracut/files/027-0000-fix-version-print.patch delete mode 100644 sys-kernel/dracut/files/027-0001-dracut-functions.sh-support-for-altern.patch delete mode 100644 sys-kernel/dracut/files/027-0002-gentoo.conf-let-udevdir-be-handled-by-.patch delete mode 100644 sys-kernel/dracut/files/027-0003-Do-not-call-plymouth-with-full-path.patch delete mode 100644 sys-kernel/dracut/files/027-0004-plymouth-plymouth-pretrigger.sh-fixup-.patch delete mode 100644 sys-kernel/dracut/files/027-crypt-ssh.patch create mode 100644 sys-kernel/dracut/files/050-Makefile-fix-VERSION-again.patch create mode 100644 sys-kernel/dracut/files/050-Makefile-merge-main-version-and-git-version-earlier.patch create mode 100644 sys-kernel/dracut/files/050-btrfs-force-preload-btrfs-module.patch create mode 100644 sys-kernel/dracut/files/050-busybox-module-fix.patch create mode 100644 sys-kernel/dracut/files/050-dracut-lib.sh-quote-variables-in-parameter-expansion.patch create mode 100644 sys-kernel/dracut/files/050-dracut.sh-don-t-call-fsfreeze-on-subvol-of-root-file.patch create mode 100644 sys-kernel/dracut/files/050-lvm-fix-removal-of-pvscan-from-udev-rules.patch create mode 100644 sys-kernel/dracut/files/050-network-manager-ensure-that-nm-run.sh-is-executed-wh.patch create mode 100644 sys-kernel/dracut/files/050-systemd-remove-obsolete-syslog-parameter.patch create mode 100644 sys-kernel/dracut/files/051-dracut.sh-move-ldconfig.patch create mode 100644 sys-kernel/dracut/files/crypt-ssh-luks.patch create mode 100644 sys-kernel/dracut/files/gentoo-ldconfig-paths.patch diff --git a/sys-kernel/dracut/Manifest b/sys-kernel/dracut/Manifest index eca94ce..fefa851 100644 --- a/sys-kernel/dracut/Manifest +++ b/sys-kernel/dracut/Manifest @@ -1,8 +1,14 @@ -AUX 027-0000-fix-version-print.patch 365 SHA256 c065b20c95b24a9fc0e8e1e20de19ec3dca7cb4bd62d7a3d26adf099c39fc57b SHA512 2f622d8bc4e483d91674cb7acaa2ef9bde613bcda7c8b5c8b79bed4919fdcf0852798ba38615f796528e8c83fc18a89322a1fbde7fc5effaa6c4c4d0a389638f WHIRLPOOL b38923d3e04e161b23b9fa510b0dc0b3ce5238f3008ef0f92a1918e38c7a9ecf6d6c99a14006b734c8c77df01213c866bdce293c684c073a6cb61691a5700102 -AUX 027-0001-dracut-functions.sh-support-for-altern.patch 1387 SHA256 992e44243e87b07833154d4b2299d08df4d7c1d3b931aa22e1ad75acce21330b SHA512 d3dd82a6f976bb4aab0e70a5c483e89e6ef43f59401bbe756ea8376a758003b434610f31d2d661d749d865b6a943da01867d0223856981262dddc5f12457ccdf WHIRLPOOL eb11e2d39e18d6e2f47c34f4c9d52c90becefe71507069e333c08f96b2b3b2630e4f0d9acff265858546f63f876bd6f83227d8e9459a6732b7488c0f7e77503e -AUX 027-0002-gentoo.conf-let-udevdir-be-handled-by-.patch 950 SHA256 e778ee1fb9179e3898b25e5ae558060d1ee75a0c63e03ad1ddb36b5275c53b35 SHA512 3ce017f58d7eea16342631b02f86330f8e86d8357928df2fb2009d3544b17f4d12a9446e83d6a47cd8fa90c2a910df34a0c680277174bf865a34f1a771f1902a WHIRLPOOL fb5cfa821abd55e6a16ec710cb418d34c1ace1be9e787310054ca5b0d08c31a26600a7ec2d8e27ee8b74773ecbc0d93810ec67f225e909e88623914eb0eb7bbc -AUX 027-0003-Do-not-call-plymouth-with-full-path.patch 7131 SHA256 0a4d3482713417969a946760b4b25473ba9b4f42224d1fa4223bcc7967137e12 SHA512 bd35e3f22de44df839680f7b28db0bb5a14fd164faafc47a90d3fd799455d83e4e03811c003818c8db76ed56c14ca22b4806e8d6fec3e9f8d90831859f3dbe3f WHIRLPOOL 65917161c32c1f9796e7d8ddf498415ab4e9d09b19140798f4a44df2d3e75bf655bba723603598348f2c657d34bfa7376536e4361afd8ee5d8ab40e2bf233ee6 -AUX 027-0004-plymouth-plymouth-pretrigger.sh-fixup-.patch 1056 SHA256 8e126a78eb051ccc69b9a3edb2d7b74515170ce8acdb9420aceaee750068cc11 SHA512 b1bda85237331aa51d0105e1ad0dee655284ea23d8e47c0818e6ea74190b65593e70b366a254140c9706e33d23eccb7893b83f0a28514806318d9f08cae01281 WHIRLPOOL 5b78398b28cc06c5a25e99b5ae687ad1c7dc14c67605fe7256f3617b458fa21af24f783ab5cad24278225e93f59fd40d1ba97ed42b460f77d1814f0546058c25 -AUX 027-crypt-ssh.patch 2641 SHA256 28745938ef7bf8ed1a0459062e6ef2b87cde194e63738c7635c72525c9fb2bc3 SHA512 f235391602ac1c2aeca2fb4bf35b87da4e22c9dba609166b2badde6c4eb00b9f2c46ce61df65180156bba39f7f0cd793e98238967452a4a07981c2ae37099955 WHIRLPOOL 007130dd88b846bee9d1193e2837297df081fcb8a9e30cfb6032d8219a232728acb2e6a1cbf5747da430ee7279a065ef8d053da196845f88e03f06348243a0d6 -DIST dracut-027.tar.bz2 253049 SHA256 9a8f1ad2e133b4072ff433410be5b14a01cec4f75ab72ef0296e5f49a15fad13 SHA512 1e44b1ad09bc631cc554be4917c5f56514d6f5f4f9658401a7c7e9dc20ef79029246106682146785cb63beef39061aaa944fb24acd106086f02ba1356c61e938 WHIRLPOOL ebd0e0f1c4ba6e95a320e01f98ed7e31d7f399b05c7133fff8a686750f39f29c803b02764995775fa3f2c383205bc09b35a905116d366298bd6587d8d1cac572 -EBUILD dracut-027-r1.ebuild 8983 SHA256 683fcabd8e618b3321c4b667a0cfe2821fd974cb6f585e240cb2ff7713a0022b SHA512 c7f464126ad3baf86cd59536659e0f056edc8390fc627464241581a2f37c27c949cdcf58fbc38f04298b69d11d2bcb24c92d6dcd5a9f5cfbad1522000901cbc1 WHIRLPOOL 8521155da6b3b8578ff2ffe801946cda1e52c2d9996c8e4446173b1e20c9a4000b180345e8037926619db3b2dab7e9d11c01028d7e5b5f822d6328a5646f40c6 +AUX 050-Makefile-fix-VERSION-again.patch 1057 BLAKE2B 8373a43030c02bc0273aacb3f0f286d4f98812039c459ec16607e3e5b9bd83c367420c6b67d7cc8d2f6d9469bca2e5e5770f20390348e50abdbec7f12c4f36a3 SHA512 89e5ae4cf88d65ec5f31384c334b46f8e6e74a31e0225a62523524f87f35ead8cae221d3a0f8e5f837a1e22b51833db75b2d3f3b07fa3ac4ded5dac9012a8027 +AUX 050-Makefile-merge-main-version-and-git-version-earlier.patch 3071 BLAKE2B 0d20b6ca7bb92aca21b3afaaee6fffb94c23de806ebe46383074979e0afedc893aec478122391d7c6015882b7882dd3f6e4124fa1f6fa1dc0bb48beae50d4d9d SHA512 ad9219c66b0a921b2fcb9dc325d1afd4c17d447228ee3b95b7a7e799acdc9d48d1d963842643d6ee6e90f8891d5c924c707331041cde53701261cb670adbcd33 +AUX 050-btrfs-force-preload-btrfs-module.patch 960 BLAKE2B 9837361b8f3559d87dc39374ca9cd8e2717f257dbb428d542e356672623c6b02d2a8aea5c0cbd2c64b01564a1ec08fc7288b993f46c7043327300ca684469168 SHA512 8fcd5579486ce2afc3164970bcd2eb23306d00bef3ce1458fd6f41664299a16c5772ed3f0d823861b698b01cf7a495412afb7f3a200e4c07e96ca3b617d8d6bf +AUX 050-busybox-module-fix.patch 3468 BLAKE2B a5292669c358f46ededf184e654213298e1e2a193e27b90cdb3913149cae40c2bfb70a8a211515ea7d3109fe87676ad71f93166dce793b7033ecfc05691e822c SHA512 a85d8f157d466e642c53436276777e6caf42aa3280cfa2d635c1541919484c50cccc232802131ce6776b1059151bdcfabdd3e4f69d697012d2e4d24a4793794b +AUX 050-dracut-lib.sh-quote-variables-in-parameter-expansion.patch 3655 BLAKE2B dc48d86fa1d78622bf0a7e5714de23d046515d3ad866f321769b0c56c243bdc6d6b45c69eb09e02477a79d90a546bdfcd767551b838f647f07179c9174ff46f7 SHA512 774602605b552343b0f26bcc7311c118bbb816bae9a1d798e650b72105c7a44ada8bfe238a66619ef6ee345534ef6a6d3c6449eaad51ba0ecf483fcc4aac1fb8 +AUX 050-dracut.sh-don-t-call-fsfreeze-on-subvol-of-root-file.patch 2779 BLAKE2B edb10ef79fd22863aef5184ca0d7abc88602cf3e8a3cfd198047e0970d10e9aa56e1222dc44a089afb3a0f15caa87e4e3233b32980b5fd56e9975196350000f4 SHA512 a31cfceb9ab53e53ce3f69ed6388bf7cfcf40ad7b036197194f34cd973a74e28ac8bfb7bf7d79068b48fc8c5feaf26540948b8008c1fdab997587bf4b31f8b71 +AUX 050-lvm-fix-removal-of-pvscan-from-udev-rules.patch 1270 BLAKE2B ac4b93d0ed469ca9d2ba2ad9ca83b1f0efce590758bdd824278e9409fd4706e975d3fa9a10733775cc5b0a3a4665260d8869291de5a1f89c810c01a7cf0889e4 SHA512 7466c66f570c9a097b701a91d2735469187e879d2dec2ff2d10322ad39c86f3a5c70fc778d13b42014ba9754a6d1bea6d37f3ee456cbe4ec075dd676cf09093d +AUX 050-network-manager-ensure-that-nm-run.sh-is-executed-wh.patch 1627 BLAKE2B c45b8efef1612ede5021be1bfe2135586286b4ac8d501ce6cde518eefb699c143fec1ec858e4320ba473feb06e88896ab0f4b2f738c6a5a98c20a161d11f508a SHA512 e070f24f0d0e95a14ee503e0cbc62d87b32ad678c12a8054c1a0c505d9ae833cd37052d51fe8d1a2a608fd06a8894d06ea4da626aadf5e9e4dd39b2ea883aaae +AUX 050-systemd-remove-obsolete-syslog-parameter.patch 8176 BLAKE2B abf1619f4010cd38d98814f8827d592394a7ed7acc4c19392751adea4a98ce4acfce12bae1c2d264c392c73081ae04a205cfccd3591de651b87301352bbbe68c SHA512 3609ea93b85f79d3451fc810164c1be61def3f8e016a1fc0963088f2a690c56680d0c49bad5f8398af80150bd07bf953de50fe8832a5b88da5c01eead5fdbe7f +AUX 051-dracut.sh-move-ldconfig.patch 2064 BLAKE2B 91d60d66cc3dd788f97900e4765761b918425abb603ce09b3101ec242222f17e6e7166af7faaa8ad47cff7aa1a9259af90832066ee67f7bee25c400bdfd302cb SHA512 060f968f39bd11822b1154baa7d28a1190ead371f57e43d4a997e8013f39d48e1509908b2fe3859b9315de57dc4ed03b8e4beab1ec743dc56186c9e6a1d9c116 +AUX crypt-ssh-luks.patch 4691 BLAKE2B 6b73b9e399e089e081e98d44af971c1afcc371c62c89c145ccde496e8007c8493ef3156a4acc312d4cde1d17fcd80d8395cbdb7f78785c9957b4afb6f3a0c6bf SHA512 74768f06daf9f02344064065613d4ca202906579ba9dce1f0ffaa618698fa6d6efe6af712c735ef13316415e6f8c63c0ea37cac3612130d60bbd1e25a9025295 +AUX gentoo-ldconfig-paths.patch 1420 BLAKE2B 3ff093e1d244288585c369f0e3c1bc346abe1ee2ce8ee399098559765fa4e3a96611269de5f4edebe435e5a71fa1bb99eb650fcb221fad188e019837261645f4 SHA512 aa99bb08dbc8e38ee1794b7d77e5e6656afa7f6c67684d1b3fb6368861630ea7c7711d84cc48c2c5cf3b1fd98aa2673f816e4f5ebf651b63a07ded93b00d371a +DIST dracut-050.tar.xz 333592 BLAKE2B cb0bfa5a8e7547260b8a80a3606eb284182c062926269c85b09e07d26ad177df0eeaa64b17005bff9290611f1c83fc8cd8e2216cfe14b5e66ec7f659d4c2fa7b SHA512 eba046cf1c8013369a398e585e0bff233daa8595d469ce9acc8bbc6a32d55c6a5429d4219db19abbf6001104be05b357f0961f9e66b7f926039a5d3ee7c2b850 +EBUILD dracut-050-r2.ebuild 5340 BLAKE2B d4ec5701f82859ab58c81619a737a88a0edf14b0ead3cedd6461c734f5acd8efc90d91148170db6d2604f95ff4d608e2c96fcee0f90d75e4a963f3eededd5f38 SHA512 4b1b6ee247a3efdc4a35a83b87ccb39d2f12abc329bbc767e2d8c2ce1d767c2f159a3aee02cbff290effe6fa17031962e3a6efadf6ac5f5335116d208a0d0b76 diff --git a/sys-kernel/dracut/dracut-027-r1.ebuild b/sys-kernel/dracut/dracut-027-r1.ebuild deleted file mode 100644 index 03105a5..0000000 --- a/sys-kernel/dracut/dracut-027-r1.ebuild +++ /dev/null @@ -1,308 +0,0 @@ -# Copyright 1999-2013 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-kernel/dracut/dracut-027-r1.ebuild,v 1.1 2013/04/18 13:37:10 aidecoe Exp $ - -EAPI=4 - -inherit bash-completion-r1 eutils linux-info - -add_req_use_for() { - local dep="$1"; shift - local f - - for f in "$@"; do - REQUIRED_USE+="${f}? ( ${dep} ) -" - done -} - -DESCRIPTION="Generic initramfs generation tool" -HOMEPAGE="http://dracut.wiki.kernel.org" -SRC_URI="mirror://kernel/linux/utils/boot/${PN}/${P}.tar.bz2" -LICENSE="GPL-2" -SLOT="0" -KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc ~x86" - -REQUIRED_USE=" - dracut_modules_bootchart? ( !dracut_modules_systemd ) - dracut_modules_crypt-gpg? ( dracut_modules_crypt ) - dracut_modules_crypt-ssh? ( dracut_modules_crypt ) - dracut_modules_crypt-loop? ( dracut_modules_crypt ) - dracut_modules_livenet? ( dracut_modules_dmsquash-live ) - " -COMMON_MODULES=" - dracut_modules_biosdevname - dracut_modules_bootchart - dracut_modules_btrfs - dracut_modules_caps - dracut_modules_crypt-gpg - dracut_modules_crypt-loop - dracut_modules_gensplash - dracut_modules_mdraid - dracut_modules_multipath - dracut_modules_plymouth - dracut_modules_syslog - dracut_modules_systemd - " -DM_MODULES=" - dracut_modules_crypt - dracut_modules_dmraid - dracut_modules_dmsquash-live - dracut_modules_livenet - dracut_modules_lvm - " -NETWORK_MODULES=" - dracut_modules_cifs - dracut_modules_iscsi - dracut_modules_livenet - dracut_modules_nbd - dracut_modules_nfs - dracut_modules_ssh-client - dracut_modules_crypt-ssh - " -add_req_use_for device-mapper ${DM_MODULES} -add_req_use_for net ${NETWORK_MODULES} -IUSE_DRACUT_MODULES="${COMMON_MODULES} ${DM_MODULES} ${NETWORK_MODULES}" -IUSE="debug device-mapper optimization net selinux ${IUSE_DRACUT_MODULES}" - -RESTRICT="test" - -CDEPEND="virtual/udev - dracut_modules_systemd? ( >=sys-apps/systemd-199 ) - " -RDEPEND="${CDEPEND} - app-arch/cpio - >=app-shells/bash-4.0 - >=app-shells/dash-0.5.4.11 - >=sys-apps/baselayout-1.12.14-r1 - || ( >=sys-apps/module-init-tools-3.8 >sys-apps/kmod-5[tools] ) - >=sys-apps/sysvinit-2.87-r3 - >=sys-apps/util-linux-2.21 - virtual/pkgconfig - - debug? ( dev-util/strace ) - device-mapper? ( >=sys-fs/lvm2-2.02.33 ) - net? ( net-misc/curl >=net-misc/dhcp-4.2.4_p2-r1[client] sys-apps/iproute2 ) - selinux? ( sys-libs/libselinux sys-libs/libsepol ) - dracut_modules_biosdevname? ( sys-apps/biosdevname ) - dracut_modules_bootchart? ( app-benchmarks/bootchart2 sys-apps/usleep - sys-process/acct ) - dracut_modules_btrfs? ( sys-fs/btrfs-progs ) - dracut_modules_caps? ( sys-libs/libcap ) - dracut_modules_cifs? ( net-fs/cifs-utils ) - dracut_modules_crypt? ( sys-fs/cryptsetup ) - dracut_modules_crypt-gpg? ( app-crypt/gnupg ) - dracut_modules_crypt-ssh? ( net-misc/dropbear ) - dracut_modules_dmraid? ( sys-fs/dmraid sys-fs/multipath-tools ) - dracut_modules_gensplash? ( media-gfx/splashutils ) - dracut_modules_iscsi? ( >=sys-block/open-iscsi-2.0.871.3 ) - dracut_modules_lvm? ( >=sys-fs/lvm2-2.02.33 ) - dracut_modules_mdraid? ( sys-fs/mdadm ) - dracut_modules_multipath? ( sys-fs/multipath-tools ) - dracut_modules_nbd? ( sys-block/nbd ) - dracut_modules_nfs? ( net-fs/nfs-utils net-nds/rpcbind ) - dracut_modules_plymouth? ( >=sys-boot/plymouth-0.8.3-r1 ) - dracut_modules_ssh-client? ( dev-libs/openssl ) - dracut_modules_syslog? ( || ( app-admin/syslog-ng app-admin/rsyslog ) ) - " -DEPEND="${CDEPEND} - app-text/asciidoc - >=dev-libs/libxslt-1.1.26 - app-text/docbook-xml-dtd:4.5 - >=app-text/docbook-xsl-stylesheets-1.75.2 - " - -DOCS=( AUTHORS HACKING NEWS README README.generic README.kernel README.modules - README.testsuite TODO ) -MY_LIBDIR="/usr/lib" - -# -# Helper functions -# - -# Returns true if any of specified modules is enabled by USE flag and false -# otherwise. -# $1 = list of modules (which have corresponding USE flags of the same name) -any_module() { - local m modules=" $@ " - - for m in ${modules}; do - ! use $m && modules=${modules/ $m / } - done - - shopt -s extglob - modules=${modules%%+( )} - shopt -u extglob - - [[ ${modules} ]] -} - -# Removes module from modules.d. -# $1 = module name -# Module name can be specified without number prefix. -rm_module() { - local force m - [[ $1 = -f ]] && force=-f - - for m in $@; do - if [[ $m =~ ^[0-9][0-9][^\ ]*$ ]]; then - rm ${force} --interactive=never -r "${modules_dir}"/$m - else - rm ${force} --interactive=never -r "${modules_dir}"/[0-9][0-9]$m - fi - done -} - -# -# ebuild functions -# - -src_prepare() { - epatch "${FILESDIR}/${PV}-0000-fix-version-print.patch" - epatch "${FILESDIR}/${PV}-0001-dracut-functions.sh-support-for-altern.patch" - epatch "${FILESDIR}/${PV}-0002-gentoo.conf-let-udevdir-be-handled-by-.patch" - epatch "${FILESDIR}/${PV}-0003-Do-not-call-plymouth-with-full-path.patch" - epatch "${FILESDIR}/${PV}-0004-plymouth-plymouth-pretrigger.sh-fixup-.patch" - - if use dracut_modules_systemd; then - local systemdutildir="$($(tc-getPKG_CONFIG) systemd \ - --variable=systemdutildir)" - local systemdsystemunitdir="$($(tc-getPKG_CONFIG) systemd \ - --variable=systemdsystemunitdir)" - [[ ${systemdutildir} ]] || die "Couldn't detect systemdutildir" - [[ ${systemdsystemunitdir} ]] \ - || die "Couldn't detect systemdsystemunitdir" - einfo "Setting systemdutildir to ${systemdutildir} and ..." - sed -e "4asystemdutildir=\"${systemdutildir}\"" \ - -i "${S}/dracut.conf.d/gentoo.conf.example" || die - einfo "Setting systemdsystemunitdir to ${systemdsystemunitdir}..." - sed -e "5asystemdsystemunitdir=\"${systemdsystemunitdir}\"" \ - -i "${S}/dracut.conf.d/gentoo.conf.example" || die - fi - if use dracut_modules_crypt-ssh; then - epatch "${FILESDIR}/${PV}-crypt-ssh.patch" - fi -} - -src_configure() { - econf --libdir="${MY_LIBDIR}" -} - -src_compile() { - emake doc - - if use optimization; then - ewarn "Enabling experimental optimization!" - tc-export CC - emake install/dracut-install - fi -} - -src_install() { - default - - newbashcomp "${PN}-bash-completion.sh" "${PN}" - - local dracutlibdir="${MY_LIBDIR#/}/dracut" - - echo "DRACUT_VERSION=$PVR" > "${D%/}/${dracutlibdir}/dracut-version.sh" - - insinto "${dracutlibdir}/dracut.conf.d/" - newins dracut.conf.d/gentoo.conf.example gentoo.conf - - insinto /etc/logrotate.d - newins dracut.logrotate dracut - - dodir /var/lib/dracut/overlay - - dohtml dracut.html - - # - # Modules - # - local module - modules_dir="${D%/}/${dracutlibdir}/modules.d" - - # Remove modules not enabled by USE flags - for module in ${IUSE_DRACUT_MODULES} ; do - ! use ${module} && rm_module -f ${module#dracut_modules_} - done - - # Those flags are specific, and even are corresponding to modules, they need - # to be declared as regular USE flags. - use debug || rm_module 95debug - use selinux || rm_module 98selinux - - # Following flags define set of helper modules which are base dependencies - # for others and as so have no practical use, so remove these modules. - use device-mapper || rm_module 90dm - use net || rm_module 40network 45ifcfg 45url-lib - - if use dracut_modules_systemd; then - # With systemd following modules do not make sense - rm_module 96securityfs 98selinux - else - # Without systemd following modules do not make sense - rm_module 00systemd-bootchart - fi - - # Remove S/390 modules which are not tested at all - rm_module 80cms 95dasd 95dasd_mod 95zfcp 95znet - - # Remove modules which won't work for sure - rm_module 95fcoe # no tools - # fips module depends on masked app-crypt/hmaccalc - rm_module 01fips 02fips-aesni - - # Remove extra modules which go to future dracut-extras - rm_module 05busybox 97masterkey 98ecryptfs 98integrity -} - -pkg_postinst() { - if linux-info_get_any_version && linux_config_src_exists; then - ewarn "" - ewarn "If the following test report contains a missing kernel" - ewarn "configuration option, you should reconfigure and rebuild your" - ewarn "kernel before booting image generated with this Dracut version." - ewarn "" - - local CONFIG_CHECK="~BLK_DEV_INITRD ~DEVTMPFS" - - # Kernel configuration options descriptions: - local desc_DEVTMPFS="Maintain a devtmpfs filesystem to mount at /dev" - local desc_BLK_DEV_INITRD="Initial RAM filesystem and RAM disk "\ -"(initramfs/initrd) support" - - local opt desc - - # Generate ERROR_* variables for check_extra_config. - for opt in ${CONFIG_CHECK}; do - opt=${opt#\~} - desc=desc_${opt} - eval "local ERROR_${opt}='CONFIG_${opt}: \"${!desc}\"" \ - "is missing and REQUIRED'" - done - - check_extra_config - echo - else - ewarn "" - ewarn "Your kernel configuration couldn't be checked. Do you have" - ewarn "/usr/src/linux/.config file there? Please check manually if" - ewarn "following options are enabled:" - ewarn "" - ewarn " CONFIG_BLK_DEV_INITRD" - ewarn " CONFIG_DEVTMPFS" - ewarn "" - fi - - if use dracut_modules_crypt || use dracut_modules_dmraid || use \ - dracut_modules_mdraid || use dracut_modules_lvm; then - - if ! [[ $(=dracut-024." - ewarn "Use rd.auto option to turn it on." - fi - fi -} diff --git a/sys-kernel/dracut/dracut-050-r2.ebuild b/sys-kernel/dracut/dracut-050-r2.ebuild new file mode 100644 index 0000000..8028fe7 --- /dev/null +++ b/sys-kernel/dracut/dracut-050-r2.ebuild @@ -0,0 +1,172 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit bash-completion-r1 linux-info optfeature systemd toolchain-funcs + +if [[ ${PV} == 9999 ]] ; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/dracutdevs/dracut" +else + [[ "${PV}" = *_rc* ]] || \ + KEYWORDS="~alpha amd64 arm arm64 ~ia64 ~mips ppc ppc64 sparc x86" + SRC_URI="https://www.kernel.org/pub/linux/utils/boot/${PN}/${P}.tar.xz" +fi + +DESCRIPTION="Generic initramfs generation tool" +HOMEPAGE="https://dracut.wiki.kernel.org" + +LICENSE="GPL-2" +SLOT="0" +IUSE="selinux" + +# Tests need root privileges, bug #298014 +RESTRICT="test" + +RDEPEND=" + app-arch/cpio + >=app-shells/bash-4.0:0 + sys-apps/coreutils[xattr(-)] + >=sys-apps/kmod-23[tools] + || ( + >=sys-apps/sysvinit-2.87-r3 + sys-apps/openrc[sysv-utils(-),selinux?] + sys-apps/systemd[sysv-utils] + ) + >=sys-apps/util-linux-2.21 + virtual/pkgconfig + virtual/udev + + elibc_musl? ( sys-libs/fts-standalone ) + selinux? ( + sec-policy/selinux-dracut + sys-libs/libselinux + sys-libs/libsepol + ) +" +DEPEND=" + >=sys-apps/kmod-23 + elibc_musl? ( sys-libs/fts-standalone ) +" + +BDEPEND=" + app-text/asciidoc + app-text/docbook-xml-dtd:4.5 + >=app-text/docbook-xsl-stylesheets-1.75.2 + >=dev-libs/libxslt-1.1.26 + virtual/pkgconfig +" + +DOCS=( AUTHORS HACKING NEWS README.md README.generic README.kernel README.modules + README.testsuite TODO ) + +QA_MULTILIB_PATHS="usr/lib/dracut/.*" + +PATCHES=( + "${FILESDIR}"/050-Makefile-merge-main-version-and-git-version-earlier.patch + "${FILESDIR}"/050-dracut.sh-don-t-call-fsfreeze-on-subvol-of-root-file.patch + "${FILESDIR}"/050-Makefile-fix-VERSION-again.patch + "${FILESDIR}"/050-btrfs-force-preload-btrfs-module.patch + "${FILESDIR}"/050-network-manager-ensure-that-nm-run.sh-is-executed-wh.patch + "${FILESDIR}"/050-dracut-lib.sh-quote-variables-in-parameter-expansion.patch + "${FILESDIR}"/050-busybox-module-fix.patch + "${FILESDIR}"/050-systemd-remove-obsolete-syslog-parameter.patch + "${FILESDIR}"/050-lvm-fix-removal-of-pvscan-from-udev-rules.patch + "${FILESDIR}"/gentoo-ldconfig-paths.patch + "${FILESDIR}"/crypt-ssh-luks.patch +) + +src_configure() { + local myconf=( + --prefix="${EPREFIX}/usr" + --sysconfdir="${EPREFIX}/etc" + --bashcompletiondir="$(get_bashcompdir)" + --systemdsystemunitdir="$(systemd_get_systemunitdir)" + ) + + tc-export CC PKG_CONFIG + + echo ./configure "${myconf[@]}" + ./configure "${myconf[@]}" || die + + if [[ ${PV} != 9999 && ! -f dracut-version.sh ]] ; then + # Source tarball from github doesn't include this file + echo "DRACUT_VERSION=${PV}" > dracut-version.sh || die + fi +} + +src_install() { + default + + insinto /etc/logrotate.d + newins dracut.logrotate dracut + + docinto html + dodoc dracut.html +} + +pkg_postinst() { + if linux-info_get_any_version && linux_config_exists; then + ewarn "" + ewarn "If the following test report contains a missing kernel" + ewarn "configuration option, you should reconfigure and rebuild your" + ewarn "kernel before booting image generated with this Dracut version." + ewarn "" + + local CONFIG_CHECK="~BLK_DEV_INITRD ~DEVTMPFS" + + # Kernel configuration options descriptions: + local ERROR_DEVTMPFS='CONFIG_DEVTMPFS: "Maintain a devtmpfs filesystem to mount at /dev" ' + ERROR_DEVTMPFS+='is missing and REQUIRED' + local ERROR_BLK_DEV_INITRD='CONFIG_BLK_DEV_INITRD: "Initial RAM filesystem and RAM disk ' + ERROR_BLK_DEV_INITRD+='(initramfs/initrd) support" is missing and REQUIRED' + + check_extra_config + echo + else + ewarn "" + ewarn "Your kernel configuration couldn't be checked." + ewarn "Please check manually if following options are enabled:" + ewarn "" + ewarn " CONFIG_BLK_DEV_INITRD" + ewarn " CONFIG_DEVTMPFS" + ewarn "" + fi + + elog "To get additional features, a number of optional runtime" + elog "dependencies may be installed:" + elog "" + optfeature "Networking support" net-misc/networkmanager + optfeature "Legacy networking support" net-misc/curl "net-misc/dhcp[client]" \ + sys-apps/iproute2 "net-misc/iputils[arping]" + optfeature \ + "Measure performance of the boot process for later visualisation" \ + app-benchmarks/bootchart2 app-admin/killproc sys-process/acct + optfeature "Scan for Btrfs on block devices" sys-fs/btrfs-progs + optfeature "Load kernel modules and drop this privilege for real init" \ + sys-libs/libcap + optfeature "Support CIFS" net-fs/cifs-utils + optfeature "Decrypt devices encrypted with cryptsetup/LUKS" \ + "sys-fs/cryptsetup[-static-libs]" + optfeature "Support for GPG-encrypted keys for crypt module" \ + app-crypt/gnupg + optfeature \ + "Allows use of dash instead of default bash (on your own risk)" \ + app-shells/dash + optfeature "Support iSCSI" sys-block/open-iscsi + optfeature "Support Logical Volume Manager" sys-fs/lvm2 + optfeature "Support MD devices, also known as software RAID devices" \ + sys-fs/mdadm + optfeature "Support Device Mapper multipathing" sys-fs/multipath-tools + optfeature "Plymouth boot splash" '>=sys-boot/plymouth-0.8.5-r5' + optfeature "Support network block devices" sys-block/nbd + optfeature "Support NFS" net-fs/nfs-utils net-nds/rpcbind + optfeature \ + "Install ssh and scp along with config files and specified keys" \ + net-misc/openssh + optfeature "Enable logging with rsyslog" app-admin/rsyslog + optfeature \ + "Enable rngd service to help generating entropy early during boot" \ + sys-apps/rng-tools +} diff --git a/sys-kernel/dracut/files/027-0000-fix-version-print.patch b/sys-kernel/dracut/files/027-0000-fix-version-print.patch deleted file mode 100644 index 3607fb2..0000000 --- a/sys-kernel/dracut/files/027-0000-fix-version-print.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/modules.d/99base/init.sh b/modules.d/99base/init.sh -index b441a27..410201a 100755 ---- a/modules.d/99base/init.sh -+++ b/modules.d/99base/init.sh -@@ -104,7 +104,7 @@ else - fi - - [ -f /etc/initrd-release ] && . /etc/initrd-release --[ -n "$VERSION" ] && info "dracut-$VERSION" -+[ -n "$VERSION_ID" ] && info "$NAME-$VERSION_ID" - - source_conf /etc/conf.d - diff --git a/sys-kernel/dracut/files/027-0001-dracut-functions.sh-support-for-altern.patch b/sys-kernel/dracut/files/027-0001-dracut-functions.sh-support-for-altern.patch deleted file mode 100644 index ca079ad..0000000 --- a/sys-kernel/dracut/files/027-0001-dracut-functions.sh-support-for-altern.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 3688462730a97d4cc5644dab87aadf147d8c72f0 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= -Date: Sun, 6 Jan 2013 13:35:01 +0100 -Subject: [PATCH 1/2] dracut-functions.sh: support for alternative udev dirs - - udevaltdirs - -It is required for Gentoo which moves udev from / to /usr and supports -both /lib/udev and /usr/lib/udev for compatibility with other packages. - -Credits go to Alexander Tsoy . ---- - dracut-functions.sh | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/dracut-functions.sh b/dracut-functions.sh -index eba7412..d888f4c 100755 ---- a/dracut-functions.sh -+++ b/dracut-functions.sh -@@ -961,6 +961,15 @@ inst_rules() { - inst_dir "$_target" - for _rule in "$@"; do - if [ "${_rule#/}" = "$_rule" ]; then -+ for r in ${udevaltdirs}; do -+ [[ "$r" = "${udevdir}" ]] && continue -+ if [[ -f $r/rules.d/$_rule ]]; then -+ _found="$r/rules.d/$_rule" -+ inst_rule_programs "$_found" -+ inst_rule_group_owner "$_found" -+ inst_simple "$_found" "${udevdir}/rules.d/${_found##*/}" -+ fi -+ done - for r in ${udevdir}/rules.d /etc/udev/rules.d; do - if [[ -f $r/$_rule ]]; then - _found="$r/$_rule" --- -1.8.1.5 - diff --git a/sys-kernel/dracut/files/027-0002-gentoo.conf-let-udevdir-be-handled-by-.patch b/sys-kernel/dracut/files/027-0002-gentoo.conf-let-udevdir-be-handled-by-.patch deleted file mode 100644 index d110afa..0000000 --- a/sys-kernel/dracut/files/027-0002-gentoo.conf-let-udevdir-be-handled-by-.patch +++ /dev/null @@ -1,30 +0,0 @@ -From 624a97d4e2b548889b5f758ed6a908a1495b44be Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Amadeusz=20=C5=BBo=C5=82nowski?= -Date: Sun, 16 Dec 2012 20:02:48 +0100 -Subject: [PATCH 2/2] gentoo.conf: let udevdir= be handled by pkg-config and - use udevaltdirs - -To avoid need of rebuild after udev update/downgrade let udevdir= be set -dynamically with pkg-config. Use udevaltdirs to search for rules both -in old and new locations. ---- - dracut.conf.d/gentoo.conf.example | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/dracut.conf.d/gentoo.conf.example b/dracut.conf.d/gentoo.conf.example -index 1361a30..b78e5c6 100644 ---- a/dracut.conf.d/gentoo.conf.example -+++ b/dracut.conf.d/gentoo.conf.example -@@ -1,7 +1,8 @@ - # /etc/dracut.conf.d/gentoo.conf - # dracut config file customized for Gentoo Base System release 2 - --udevdir=/lib/udev -+udevdir= -+udevaltdirs="/lib/udev /usr/lib/udev" - ro_mnt=yes - - # --- -1.8.1.5 - diff --git a/sys-kernel/dracut/files/027-0003-Do-not-call-plymouth-with-full-path.patch b/sys-kernel/dracut/files/027-0003-Do-not-call-plymouth-with-full-path.patch deleted file mode 100644 index 55a6630..0000000 --- a/sys-kernel/dracut/files/027-0003-Do-not-call-plymouth-with-full-path.patch +++ /dev/null @@ -1,167 +0,0 @@ -From d084ce382e70723854f960daa8b0e486ee1ce97f Mon Sep 17 00:00:00 2001 -From: Harald Hoyer -Date: Thu, 11 Apr 2013 16:08:26 +0200 -Subject: [PATCH 3/4] Do not call plymouth with full path - ---- - modules.d/50plymouth/module-setup.sh | 2 +- - modules.d/50plymouth/plymouth-emergency.sh | 2 +- - modules.d/50plymouth/plymouth-newroot.sh | 4 ++-- - modules.d/50plymouth/plymouth-populate-initrd.sh | 5 ++--- - modules.d/50plymouth/plymouth-pretrigger.sh | 6 +++--- - modules.d/90crypt/crypt-lib.sh | 4 ++-- - modules.d/90dmsquash-live/dmsquash-live-root.sh | 4 ++-- - modules.d/98systemd/dracut-emergency.sh | 2 +- - modules.d/99base/dracut-lib.sh | 4 ++-- - 9 files changed, 16 insertions(+), 17 deletions(-) - -diff --git a/modules.d/50plymouth/module-setup.sh b/modules.d/50plymouth/module-setup.sh -index f754e24..ae35b11 100755 ---- a/modules.d/50plymouth/module-setup.sh -+++ b/modules.d/50plymouth/module-setup.sh -@@ -4,7 +4,7 @@ - - check() { - [[ "$mount_needs" ]] && return 1 -- [[ -x /sbin/plymouthd && -x /bin/plymouth && -x /usr/sbin/plymouth-set-default-theme ]] -+ type -P plymouthd >/dev/null && type -P plymouth >/dev/null - } - - depends() { -diff --git a/modules.d/50plymouth/plymouth-emergency.sh b/modules.d/50plymouth/plymouth-emergency.sh -index 68955b8..ed0b0ac 100755 ---- a/modules.d/50plymouth/plymouth-emergency.sh -+++ b/modules.d/50plymouth/plymouth-emergency.sh -@@ -1,4 +1,4 @@ - #!/bin/sh - # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- - # ex: ts=8 sw=4 sts=4 et filetype=sh --[ -x /bin/plymouth ] && /bin/plymouth --hide-splash -+plymouth --hide-splash 2>/dev/null || : -diff --git a/modules.d/50plymouth/plymouth-newroot.sh b/modules.d/50plymouth/plymouth-newroot.sh -index 2311b47..96cd138 100755 ---- a/modules.d/50plymouth/plymouth-newroot.sh -+++ b/modules.d/50plymouth/plymouth-newroot.sh -@@ -2,6 +2,6 @@ - # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- - # ex: ts=8 sw=4 sts=4 et filetype=sh - --if [ -x /bin/plymouth -a -z "$DRACUT_SYSTEMD" ]; then -- /bin/plymouth --newroot=$NEWROOT -+if type plymouth >/dev/null 2>&1 && [ -z "$DRACUT_SYSTEMD" ]; then -+ plymouth --newroot=$NEWROOT - fi -diff --git a/modules.d/50plymouth/plymouth-populate-initrd.sh b/modules.d/50plymouth/plymouth-populate-initrd.sh -index 1e2ffe7..6e0f561 100755 ---- a/modules.d/50plymouth/plymouth-populate-initrd.sh -+++ b/modules.d/50plymouth/plymouth-populate-initrd.sh -@@ -4,15 +4,14 @@ - PLYMOUTH_LOGO_FILE="/usr/share/pixmaps/system-logo-white.png" - PLYMOUTH_THEME=$(plymouth-set-default-theme) - --inst /sbin/plymouthd /bin/plymouthd --dracut_install /bin/plymouth \ -+dracut_install plymouthd plymouth \ - "${PLYMOUTH_LOGO_FILE}" \ - /etc/system-release - - mkdir -m 0755 -p "${initdir}/usr/share/plymouth" - - inst_libdir_file "plymouth/text.so" "plymouth/details.so" -- -+ - if [[ $hostonly ]]; then - dracut_install \ - "/usr/share/plymouth/themes/details/details.plymouth" \ -diff --git a/modules.d/50plymouth/plymouth-pretrigger.sh b/modules.d/50plymouth/plymouth-pretrigger.sh -index 0e3cb02..8087bf6 100755 ---- a/modules.d/50plymouth/plymouth-pretrigger.sh -+++ b/modules.d/50plymouth/plymouth-pretrigger.sh -@@ -2,7 +2,7 @@ - # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- - # ex: ts=8 sw=4 sts=4 et filetype=sh - --if [ -x /bin/plymouthd -a -z "$DRACUT_SYSTEMD" ]; then -+if type plymouthd >/dev/null 2>&1 && [-z "$DRACUT_SYSTEMD" ]; then - if getargbool 1 plymouth.enable && getargbool 1 rd.plymouth -d -n rd_NO_PLYMOUTH; then - # first trigger graphics subsystem - udevadm trigger --action=add --attr-match=class=0x030000 >/dev/null 2>&1 -@@ -16,8 +16,8 @@ if [ -x /bin/plymouthd -a -z "$DRACUT_SYSTEMD" ]; then - read consoledev rest < /sys/class/tty/console/active - consoledev=${consoledev:-tty0} - [ -x /lib/udev/console_init -a -e "/dev/$consoledev" ] && /lib/udev/console_init "/dev/$consoledev" -- [ -x /bin/plymouthd ] && /bin/plymouthd --attach-to-session --pid-file /run/plymouth/pid -- /bin/plymouth --show-splash 2>&1 | vinfo -+ plymouthd --attach-to-session --pid-file /run/plymouth/pid -+ plymouth --show-splash 2>&1 | vinfo - # reset tty after plymouth messed with it - [ -x /lib/udev/console_init -a -e "/dev/$consoledev" ] && /lib/udev/console_init "/dev/$consoledev" - fi -diff --git a/modules.d/90crypt/crypt-lib.sh b/modules.d/90crypt/crypt-lib.sh -index d66ba88..ebe09f8 100755 ---- a/modules.d/90crypt/crypt-lib.sh -+++ b/modules.d/90crypt/crypt-lib.sh -@@ -47,8 +47,8 @@ ask_for_password() { - - { flock -s 9; - # Prompt for password with plymouth, if installed and running. -- if [ -x /bin/plymouth ] && /bin/plymouth --ping; then -- /bin/plymouth ask-for-password \ -+ if type plymouth >/dev/null 2>&1 && plymouth --ping 2>/dev/null; then -+ plymouth ask-for-password \ - --prompt "$ply_prompt" --number-of-tries=$ply_tries \ - --command="$ply_cmd" - ret=$? -diff --git a/modules.d/90dmsquash-live/dmsquash-live-root.sh b/modules.d/90dmsquash-live/dmsquash-live-root.sh -index a79b0d9..07e41f0 100755 ---- a/modules.d/90dmsquash-live/dmsquash-live-root.sh -+++ b/modules.d/90dmsquash-live/dmsquash-live-root.sh -@@ -31,7 +31,7 @@ if [ "$fs" = "iso9660" -o "$fs" = "udf" ]; then - fi - getarg rd.live.check -d check || check="" - if [ -n "$check" ]; then -- [ -x /bin/plymouth ] && /bin/plymouth --hide-splash -+ type plymouth >/dev/null 2>&1 && plymouth --hide-splash - if [ -n "$DRACUT_SYSTEMD" ]; then - p=$(str_replace "$livedev" "-" '\x2d') - systemctl start checkisomd5@${p}.service -@@ -42,7 +42,7 @@ if [ -n "$check" ]; then - die "CD check failed!" - exit 1 - fi -- [ -x /bin/plymouth ] && /bin/plymouth --show-splash -+ type plymouth >/dev/null 2>&1 && plymouth --show-splash - fi - - ln -s $livedev /run/initramfs/livedev -diff --git a/modules.d/98systemd/dracut-emergency.sh b/modules.d/98systemd/dracut-emergency.sh -index a0a4b12..8ab045e 100755 ---- a/modules.d/98systemd/dracut-emergency.sh -+++ b/modules.d/98systemd/dracut-emergency.sh -@@ -10,7 +10,7 @@ type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh - - source_conf /etc/conf.d - --[ -x /bin/plymouth ] && /bin/plymouth quit -+type plymouth >/dev/null 2>&1 && plymouth quit - - export _rdshell_name="dracut" action="Boot" hook="emergency" - -diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh -index e456b01..b8919f3 100755 ---- a/modules.d/99base/dracut-lib.sh -+++ b/modules.d/99base/dracut-lib.sh -@@ -952,8 +952,8 @@ emergency_shell() - shift 2 - elif [ "$1" = "--shutdown" ]; then - _rdshell_name=$2; action="Shutdown"; hook="shutdown-emergency" -- if [ -x /bin/plymouth ]; then -- /bin/plymouth --hide-splash -+ if type plymouth >/dev/null 2>&1; then -+ plymouth --hide-splash - elif [ -x /oldroot/bin/plymouth ]; then - /oldroot/bin/plymouth --hide-splash - fi --- -1.8.2.1 - diff --git a/sys-kernel/dracut/files/027-0004-plymouth-plymouth-pretrigger.sh-fixup-.patch b/sys-kernel/dracut/files/027-0004-plymouth-plymouth-pretrigger.sh-fixup-.patch deleted file mode 100644 index 52e5b29..0000000 --- a/sys-kernel/dracut/files/027-0004-plymouth-plymouth-pretrigger.sh-fixup-.patch +++ /dev/null @@ -1,25 +0,0 @@ -From 331ebcb5f3530597f49a344c7392c7f330838fdd Mon Sep 17 00:00:00 2001 -From: Harald Hoyer -Date: Fri, 12 Apr 2013 15:25:44 +0200 -Subject: [PATCH 4/4] plymouth/plymouth-pretrigger.sh: fixup of ca2c6936 - ---- - modules.d/50plymouth/plymouth-pretrigger.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/modules.d/50plymouth/plymouth-pretrigger.sh b/modules.d/50plymouth/plymouth-pretrigger.sh -index 8087bf6..196f2f9 100755 ---- a/modules.d/50plymouth/plymouth-pretrigger.sh -+++ b/modules.d/50plymouth/plymouth-pretrigger.sh -@@ -2,7 +2,7 @@ - # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- - # ex: ts=8 sw=4 sts=4 et filetype=sh - --if type plymouthd >/dev/null 2>&1 && [-z "$DRACUT_SYSTEMD" ]; then -+if type plymouthd >/dev/null 2>&1 && [ -z "$DRACUT_SYSTEMD" ]; then - if getargbool 1 plymouth.enable && getargbool 1 rd.plymouth -d -n rd_NO_PLYMOUTH; then - # first trigger graphics subsystem - udevadm trigger --action=add --attr-match=class=0x030000 >/dev/null 2>&1 --- -1.8.2.1 - diff --git a/sys-kernel/dracut/files/027-crypt-ssh.patch b/sys-kernel/dracut/files/027-crypt-ssh.patch deleted file mode 100644 index b4f0317..0000000 --- a/sys-kernel/dracut/files/027-crypt-ssh.patch +++ /dev/null @@ -1,76 +0,0 @@ -commit 2a662251cf8d8163d5fbd42cd4c08329d58f2486 -Author: Stefan Reimer -Date: Wed Apr 3 23:18:19 2013 -0700 - - Initial version of the crypt-ssh module - -diff --git a/modules.d/90crypt/cryptroot-ask.sh b/modules.d/90crypt/cryptroot-ask.sh -index 9665e48..2d81684 100755 ---- a/modules.d/90crypt/cryptroot-ask.sh -+++ b/modules.d/90crypt/cryptroot-ask.sh -@@ -146,12 +146,26 @@ fi - - if [ $ask_passphrase -ne 0 ]; then - luks_open="$(command -v cryptsetup) $cryptsetupopts luksOpen" -- ask_for_password --ply-tries 5 \ -- --ply-cmd "$luks_open -T1 $device $luksname" \ -- --ply-prompt "Password ($device)" \ -- --tty-tries 1 \ -- --tty-cmd "$luks_open -T5 $device $luksname" -- unset luks_open -+ port=22001 -+ -+ if getargbool 0 rd.luks.ssh; then -+ # Setup authorized_key file -+ echo -n "command=\"$luks_open -T5 $device $luksname && rm -f /root/.ssh/key.pub \" " > /root/.ssh/authorized_keys -+ cat /root/.ssh/key.pub >> /root/.ssh/authorized_keys && chmod 600 /root/.ssh/authorized_keys -+ echo "Starting SSH server on port $port" -+ /usr/sbin/dropbear -p $port -m -j -k -s -+ while [ -f /root/.ssh/key.pub ]; do -+ sleep 1 -+ done -+ kill $(cat /var/run/dropbear.pid) -+ else -+ ask_for_password --ply-tries 5 \ -+ --ply-cmd "$luks_open -T1 $device $luksname" \ -+ --ply-prompt "Password ($device)" \ -+ --tty-tries 1 \ -+ --tty-cmd "$luks_open -T5 $device $luksname" -+ fi -+ unset luks_open port - fi - - unset device luksname luksfile -diff --git a/modules.d/92crypt-ssh/module-setup.sh b/modules.d/92crypt-ssh/module-setup.sh -new file mode 100644 -index 0000000..ac0785b ---- /dev/null -+++ b/modules.d/92crypt-ssh/module-setup.sh -@@ -0,0 +1,27 @@ -+#!/bin/bash -+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -+# ex: ts=8 sw=4 sts=4 et filetype=sh -+ -+# Author: Stefan Reimer -+# Date: 2013-Mar-24 -+ -+check() { -+ [ -x /usr/sbin/dropbear ] -+} -+ -+depends() { -+ echo "network crypt" -+ return 0 -+} -+ -+install() { -+ #Install dropbear incl. keys -+ mkdir -p /etc/dropbear -+ [ -r /etc/dropbear/dropbear_dss_host_key ] || /usr/bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key > /dev/null -+ [ -r /etc/dropbear/dropbear_rsa_host_key ] || /usr/bin/dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key > /dev/null -+ -+ inst /usr/sbin/dropbear -+ inst /etc/dropbear/dropbear_dss_host_key -+ inst /etc/dropbear/dropbear_rsa_host_key -+ [ -r /root/.ssh/authorized_keys ] && inst /root/.ssh/authorized_keys /root/.ssh/key.pub -+} diff --git a/sys-kernel/dracut/files/050-Makefile-fix-VERSION-again.patch b/sys-kernel/dracut/files/050-Makefile-fix-VERSION-again.patch new file mode 100644 index 0000000..a091e4c --- /dev/null +++ b/sys-kernel/dracut/files/050-Makefile-fix-VERSION-again.patch @@ -0,0 +1,34 @@ +From a76aa8e39016a8564adb0f18f93bbf2e15d3243f Mon Sep 17 00:00:00 2001 +From: Alexander Tsoy +Date: Sun, 8 Mar 2020 05:47:50 +0300 +Subject: [PATCH] Makefile: fix VERSION again + +The variable is not undefined anymore after the first assignment, so +we should check if variable is empty instead. +--- + Makefile | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index c69e2dfc..02e2c4b5 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,9 +1,13 @@ + -include dracut-version.sh + + DRACUT_MAIN_VERSION ?= $(shell env GIT_CEILING_DIRECTORIES=$(CWD)/.. git describe --abbrev=0 --tags --always 2>/dev/null || :) +-DRACUT_MAIN_VERSION ?= $(DRACUT_VERSION) ++ifeq ($(DRACUT_MAIN_VERSION),) ++DRACUT_MAIN_VERSION = $(DRACUT_VERSION) ++endif + DRACUT_FULL_VERSION ?= $(shell env GIT_CEILING_DIRECTORIES=$(CWD)/.. git describe --tags --always 2>/dev/null || :) +-DRACUT_FULL_VERSION ?= $(DRACUT_VERSION) ++ifeq ($(DRACUT_FULL_VERSION),) ++DRACUT_FULL_VERSION = $(DRACUT_VERSION) ++endif + + -include Makefile.inc + +-- +2.24.1 + diff --git a/sys-kernel/dracut/files/050-Makefile-merge-main-version-and-git-version-earlier.patch b/sys-kernel/dracut/files/050-Makefile-merge-main-version-and-git-version-earlier.patch new file mode 100644 index 0000000..49c532b --- /dev/null +++ b/sys-kernel/dracut/files/050-Makefile-merge-main-version-and-git-version-earlier.patch @@ -0,0 +1,78 @@ +From eb8a7a96351b6e1cfd9dc34f1e854333a8f4a4e0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?= + +Date: Fri, 6 Mar 2020 08:46:36 +0700 +Subject: [PATCH] Makefile: merge main-version and git-version earlier + +With GNU Make 4.3 on both ArchLinux, and VoidLinux, +GITVERION is always empty because of bad substitution. +Change '\#' to simply '#' can fix it, +but we don't need that complation. + +We can merge DRACUT_MAIN_VERSION and GITVERSION into DRACUT_FULL_VERSION. +Because, GITVERSION will be attached back to DRACUT_MAIN_VERSION in all +situation. + +While we're at it, detect if we're in git worktree by: +limiting GIT_CEILING_DIRECTORIES to parent directory of +dracut's top level directory; instead of checking for .git directory, +in order to support git-worktree, in such case, .git will be a file, see +gitrepository-layout(5) +--- + Makefile | 13 +++++++------ + 1 file changed, 7 insertions(+), 6 deletions(-) + +diff --git a/Makefile b/Makefile +index 22b584f1..c69e2dfc 100644 +--- a/Makefile ++++ b/Makefile +@@ -1,8 +1,9 @@ + -include dracut-version.sh + +-DRACUT_MAIN_VERSION ?= $(shell [ -d .git ] && git describe --abbrev=0 --tags --always 2>/dev/null || :) ++DRACUT_MAIN_VERSION ?= $(shell env GIT_CEILING_DIRECTORIES=$(CWD)/.. git describe --abbrev=0 --tags --always 2>/dev/null || :) + DRACUT_MAIN_VERSION ?= $(DRACUT_VERSION) +-GITVERSION ?= $(shell [ -d .git ] && { v=$$(git describe --tags --always 2>/dev/null); [ -n "$$v" ] && [ $${v\#*-} != $$v ] && echo -$${v\#*-}; } ) ++DRACUT_FULL_VERSION ?= $(shell env GIT_CEILING_DIRECTORIES=$(CWD)/.. git describe --tags --always 2>/dev/null || :) ++DRACUT_FULL_VERSION ?= $(DRACUT_VERSION) + + -include Makefile.inc + +@@ -92,14 +93,14 @@ endif + + %.xml: %.asc + @rm -f -- "$@" +- asciidoc -a "version=$(DRACUT_MAIN_VERSION)$(GITVERSION)" -d manpage -b docbook -o "$@" $< ++ asciidoc -a "version=$(DRACUT_FULL_VERSION)" -d manpage -b docbook -o "$@" $< + + dracut.8: dracut.usage.asc dracut.8.asc + + dracut.html: dracut.asc $(manpages) dracut.css dracut.usage.asc + @rm -f -- dracut.xml + asciidoc -a "mainversion=$(DRACUT_MAIN_VERSION)" \ +- -a "version=$(DRACUT_MAIN_VERSION)$(GITVERSION)" \ ++ -a "version=$(DRACUT_FULL_VERSION)" \ + -a numbered \ + -d book -b docbook -o dracut.xml dracut.asc + @rm -f -- dracut.html +@@ -112,7 +113,7 @@ dracut.html: dracut.asc $(manpages) dracut.css dracut.usage.asc + dracut.pc: Makefile.inc Makefile + @echo "Name: dracut" > dracut.pc + @echo "Description: dracut" >> dracut.pc +- @echo "Version: $(DRACUT_MAIN_VERSION)$(GITVERSION)" >> dracut.pc ++ @echo "Version: $(DRACUT_FULL_VERSION)" >> dracut.pc + @echo "dracutdir=$(pkglibdir)" >> dracut.pc + @echo "dracutmodulesdir=$(pkglibdir)/modules.d" >> dracut.pc + @echo "dracutconfdir=$(pkglibdir)/dracut.conf.d" >> dracut.pc +@@ -182,7 +183,7 @@ endif + + dracut-version.sh: + @rm -f dracut-version.sh +- @echo "DRACUT_VERSION=$(DRACUT_MAIN_VERSION)$(GITVERSION)" > dracut-version.sh ++ @echo "DRACUT_VERSION=$(DRACUT_FULL_VERSION)" > dracut-version.sh + + clean: + $(RM) *~ +-- +2.24.1 + diff --git a/sys-kernel/dracut/files/050-btrfs-force-preload-btrfs-module.patch b/sys-kernel/dracut/files/050-btrfs-force-preload-btrfs-module.patch new file mode 100644 index 0000000..386722c --- /dev/null +++ b/sys-kernel/dracut/files/050-btrfs-force-preload-btrfs-module.patch @@ -0,0 +1,30 @@ +From 0402b3777b1c64bd716f588ff7457b905e98489d Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Wed, 11 Mar 2020 12:56:52 +0100 +Subject: [PATCH] btrfs: force preload btrfs module + +fixes https://github.com/dracutdevs/dracut/issues/658 + +raid6_pq and xor takes time doing benchmarking + +[ 3.983009] request_module fs-btrfs succeeded, but still no fs? +--- + modules.d/90btrfs/module-setup.sh | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/modules.d/90btrfs/module-setup.sh b/modules.d/90btrfs/module-setup.sh +index b0d0058b..66a254e1 100755 +--- a/modules.d/90btrfs/module-setup.sh ++++ b/modules.d/90btrfs/module-setup.sh +@@ -48,5 +48,7 @@ install() { + + inst_multiple -o btrfsck btrfs-zero-log + inst $(command -v btrfs) /sbin/btrfs ++ # Hack for slow machines ++ # see https://github.com/dracutdevs/dracut/issues/658 ++ echo "rd.driver.pre=btrfs" > ${initdir}/etc/cmdline.d/00-btrfs.conf + } +- +-- +2.26.2 + diff --git a/sys-kernel/dracut/files/050-busybox-module-fix.patch b/sys-kernel/dracut/files/050-busybox-module-fix.patch new file mode 100644 index 0000000..faaf026 --- /dev/null +++ b/sys-kernel/dracut/files/050-busybox-module-fix.patch @@ -0,0 +1,102 @@ +From f769154bccf22d2b5caf5e4888f88bf7edde2662 Mon Sep 17 00:00:00 2001 +From: Alexander Tsoy +Date: Mon, 25 May 2020 19:02:05 +0300 +Subject: [PATCH 1/2] dracut-functions: fix find_binary() to return full path + +Fixes: a01204202b30 (Allow running on a cross-compiled rootfs) +--- + dracut-functions.sh | 21 +++++++++++++-------- + 1 file changed, 13 insertions(+), 8 deletions(-) + +diff --git a/dracut-functions.sh b/dracut-functions.sh +index 3cb9c7af..b5c28248 100755 +--- a/dracut-functions.sh ++++ b/dracut-functions.sh +@@ -41,31 +41,36 @@ str_ends() { [ "${1%*"$2"}" != "$1" ]; } + # search in the usual places to find the binary. + find_binary() { + local _delim ++ local _path + local l + local p + [[ -z ${1##/*} ]] || _delim="/" + + if [[ "$1" == *.so* ]]; then + for l in libdirs ; do +- if { $DRACUT_LDD "$dracutsysrootdir$l$_delim$1" &>/dev/null; }; then +- printf "%s\n" "$1" ++ _path="${l}${_delim}${1}" ++ if { $DRACUT_LDD "${dracutsysrootdir}${_path}" &>/dev/null; }; then ++ printf "%s\n" "${_path}" + return 0 + fi + done +- if { $DRACUT_LDD "$dracutsysrootdir$_delim$1" &>/dev/null; }; then +- printf "%s\n" "$1" ++ _path="${_delim}${1}" ++ if { $DRACUT_LDD "${dracutsysrootdir}${_path}" &>/dev/null; }; then ++ printf "%s\n" "${_path}" + return 0 + fi + fi + if [[ "$1" == */* ]]; then +- if [[ -L $dracutsysrootdir$_delim$1 ]] || [[ -x $dracutsysrootdir$_delim$1 ]]; then +- printf "%s\n" "$1" ++ _path="${_delim}${1}" ++ if [[ -L ${dracutsysrootdir}${_path} ]] || [[ -x ${dracutsysrootdir}${_path} ]]; then ++ printf "%s\n" "${_path}" + return 0 + fi + fi + for p in $DRACUT_PATH ; do +- if [[ -L $dracutsysrootdir$p$_delim$1 ]] || [[ -x $dracutsysrootdir$p$_delim$1 ]]; then +- printf "%s\n" "$1" ++ _path="${p}${_delim}${1}" ++ if [[ -L ${dracutsysrootdir}${_path} ]] || [[ -x ${dracutsysrootdir}${_path} ]]; then ++ printf "%s\n" "${_path}" + return 0 + fi + done +-- +2.26.2 + +From 50cc23ba32b0fda63eff7623b529dbeb4e6a38c6 Mon Sep 17 00:00:00 2001 +From: Alexander Tsoy +Date: Mon, 25 May 2020 17:49:20 +0300 +Subject: [PATCH 2/2] busybox: simplify listing of supported utilities + +'--list' option is supported since busybox-1.20.0, which was released +in 2010. +--- + modules.d/05busybox/module-setup.sh | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +diff --git a/modules.d/05busybox/module-setup.sh b/modules.d/05busybox/module-setup.sh +index ecbd6a13..5d88c5d1 100755 +--- a/modules.d/05busybox/module-setup.sh ++++ b/modules.d/05busybox/module-setup.sh +@@ -14,15 +14,16 @@ depends() { + + # called by dracut + install() { +- local _i _progs _path _busybox ++ local _i _path _busybox ++ local _progs=() + _busybox=$(type -P busybox) + inst $_busybox /usr/bin/busybox +- for _i in $($_busybox | sed -ne '1,/Currently/!{s/,//g; s/busybox//g; p}') +- do +- _progs="$_progs $_i" ++ for _i in $($_busybox --list); do ++ [[ ${_i} == busybox ]] && continue ++ _progs+=("${_i}") + done + +- for _i in $_progs; do ++ for _i in "${_progs[@]}"; do + _path=$(find_binary "$_i") + [ -z "$_path" ] && continue + ln_r /usr/bin/busybox $_path +-- +2.26.2 + diff --git a/sys-kernel/dracut/files/050-dracut-lib.sh-quote-variables-in-parameter-expansion.patch b/sys-kernel/dracut/files/050-dracut-lib.sh-quote-variables-in-parameter-expansion.patch new file mode 100644 index 0000000..11ca7ad --- /dev/null +++ b/sys-kernel/dracut/files/050-dracut-lib.sh-quote-variables-in-parameter-expansion.patch @@ -0,0 +1,111 @@ +From 8e1a4dc5f8a777fc718db490414ffdc9dc755f66 Mon Sep 17 00:00:00 2001 +From: Jonas Witschel +Date: Sat, 18 Apr 2020 14:55:41 +0200 +Subject: [PATCH] dracut-lib.sh: quote variables in parameter expansion + patterns + +According to POSIX.1-2017, 2.6.2 Parameter Expansion: + +${parameter%[word]} [...] The word shall be expanded to produce a +pattern. + +This means if word contains variables that itself contain special +characters like asterisks or backslashes, these are treated as pattern +characters unless the variable is quoted. Try e.g. the following example +in bash, dash or (busybox) ash: + +i='a\c'; j='\'; echo "${i%$j*}" + +This prints "a\c" because "$j*" is expanded to "\*", escaping the +asterisk. In contrast, + +i='a\c'; j='\'; echo "${i%"$j"*}" + +produces the expected result "a" because the backslash is not specially +treated any more after quoting. + +The quotes that this commit adds have been previously removed in commit +f9c96cf56fed390841eac05c43826e62014c9188, citing issues with busybox +hush without further specifying the actual error. I tested a recent +busybox build (upstream commit 9aa751b08ab03d6396f86c3df77937a19687981b) +and couldn't find any problems. Note that the above example always +produces "a\c" in hush regardless of quoting $j, making hush unsuitable +for use with dracut, but using quotes in parameter expansions generally +works. + +The unquoted variables break the "rd.luks.uuid/name" kernel command line +options in dracut 050 because + +str_replace "$luksname" '\' '\\' + +in modules.d/90crypt/parse-crypt.sh is not able to escape the +backslashes any more, see GH-723, GH-727: backslashes in the +systemd-cryptsetup@.service unit name stay unescaped for use in udev +(cf. commit 0f6d93eb9d63695a64002ec8b0421fbc9fc8a7a3), leading to +failures in starting the unit. + +This partially reverts commit f9c96cf56fed390841eac05c43826e62014c9188. +--- + modules.d/99base/dracut-lib.sh | 16 ++++++++-------- + 1 file changed, 8 insertions(+), 8 deletions(-) + +diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh +index c53cd13b..c57523d3 100755 +--- a/modules.d/99base/dracut-lib.sh ++++ b/modules.d/99base/dracut-lib.sh +@@ -24,7 +24,7 @@ debug_on() { + + # returns OK if $1 contains literal string $2 (and isn't empty) + strstr() { +- [ "${1##*$2*}" != "$1" ] ++ [ "${1##*"$2"*}" != "$1" ] + } + + # returns OK if $1 matches (completely) glob pattern $2 +@@ -43,18 +43,18 @@ strglobin() { + + # returns OK if $1 contains literal string $2 at the beginning, and isn't empty + str_starts() { +- [ "${1#$2*}" != "$1" ] ++ [ "${1#"$2"*}" != "$1" ] + } + + # returns OK if $1 contains literal string $2 at the end, and isn't empty + str_ends() { +- [ "${1%*$2}" != "$1" ] ++ [ "${1%*"$2"}" != "$1" ] + } + + trim() { + local var="$*" +- var="${var#${var%%[![:space:]]*}}" # remove leading whitespace characters +- var="${var%${var##*[![:space:]]}}" # remove trailing whitespace characters ++ var="${var#"${var%%[![:space:]]*}"}" # remove leading whitespace characters ++ var="${var%"${var##*[![:space:]]}"}" # remove trailing whitespace characters + printf "%s" "$var" + } + +@@ -108,9 +108,9 @@ str_replace() { + local out='' + + while strstr "${in}" "$s"; do +- chop="${in%%$s*}" ++ chop="${in%%"$s"*}" + out="${out}${chop}$r" +- in="${in#*$s}" ++ in="${in#*"$s"}" + done + echo "${out}${in}" + } +@@ -396,7 +396,7 @@ splitsep() { + while [ -n "$str" -a "$#" -gt 1 ]; do + tmp="${str%%$sep*}" + eval "$1='${tmp}'" +- str="${str#$tmp}" ++ str="${str#"$tmp"}" + str="${str#$sep}" + shift + done +-- +2.26.2 + diff --git a/sys-kernel/dracut/files/050-dracut.sh-don-t-call-fsfreeze-on-subvol-of-root-file.patch b/sys-kernel/dracut/files/050-dracut.sh-don-t-call-fsfreeze-on-subvol-of-root-file.patch new file mode 100644 index 0000000..cf54cab --- /dev/null +++ b/sys-kernel/dracut/files/050-dracut.sh-don-t-call-fsfreeze-on-subvol-of-root-file.patch @@ -0,0 +1,75 @@ +From 0386e4627779cb51f4292b3c642d90586d5e71b4 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Wed, 29 Jan 2020 23:53:29 +0100 +Subject: [PATCH] dracut.sh: don't call fsfreeze on subvol of root file system + +dracut.sh already doesn't call fsfreeze if the output file is on +the root file system. For btrfs, however, this is not sufficient. +Because fsfreeze is a superblock operation, and all btrfs subvolumes +share the same superblock, fsfreeze may freeze the entire system +if the subvolume on which the output file is written and / are +subvolumes of the same file system. Avoid this by comparing file +system UUIDs for btrfs. + +Fixes: de576db3c225 ("call fsfreeze(8) on /boot to flush initramfs data & metadata to media") +--- + dracut.sh | 36 +++++++++++++++++++++++++++++++++++- + 1 file changed, 35 insertions(+), 1 deletion(-) + +diff --git a/dracut.sh b/dracut.sh +index af346f3a..c14f6c0b 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -2075,6 +2075,40 @@ fi + + command -v restorecon &>/dev/null && restorecon -- "$outfile" + ++btrfs_uuid() { ++ btrfs filesystem show "$1" | sed -n '1s/^.*uuid: //p' ++} ++ ++freeze_ok_for_btrfs() { ++ local mnt uuid1 uuid2 ++ # If the output file is on btrfs, we need to make sure that it's ++ # not on a subvolume of the same file system as the root FS. ++ # Otherwise, fsfreeze() might freeze the entire system. ++ # This is most conveniently checked by comparing the FS uuid. ++ ++ [[ "$(stat -f -c %T -- "/")" == "btrfs" ]] || return 0 ++ mnt=$(stat -c %m -- "$1") ++ uuid1=$(btrfs_uuid "$mnt") ++ uuid2=$(btrfs_uuid "/") ++ [[ "$uuid1" && "$uuid2" && "$uuid1" != "$uuid2" ]] ++} ++ ++freeze_ok_for_fstype() { ++ local outfile=$1 ++ local fstype ++ ++ [[ "$(stat -c %m -- "$outfile")" == "/" ]] && return 1 ++ fstype=$(stat -f -c %T -- "$outfile") ++ case $fstype in ++ msdos) ++ return 1;; ++ btrfs) ++ freeze_ok_for_btrfs "$outfile";; ++ *) ++ return 0;; ++ esac ++} ++ + # We sync/fsfreeze only if we're operating on a live booted system. + # It's possible for e.g. `kernel` to be installed as an RPM BuildRequires or equivalent, + # and there's no reason to sync, and *definitely* no reason to fsfreeze. +@@ -2087,7 +2121,7 @@ if test -d $dracutsysrootdir/run/systemd/system; then + fi + + # use fsfreeze only if we're not writing to / +- if [[ "$(stat -c %m -- "$outfile")" != "/" && "$(stat -f -c %T -- "$outfile")" != "msdos" ]]; then ++ if [[ "$(stat -c %m -- "$outfile")" != "/" ]] && freeze_ok_for_fstype "$outfile"; then + if ! $(fsfreeze -f $(dirname "$outfile") 2>/dev/null && fsfreeze -u $(dirname "$outfile") 2>/dev/null); then + dinfo "dracut: warning: could not fsfreeze $(dirname "$outfile")" + fi +-- +2.24.1 + diff --git a/sys-kernel/dracut/files/050-lvm-fix-removal-of-pvscan-from-udev-rules.patch b/sys-kernel/dracut/files/050-lvm-fix-removal-of-pvscan-from-udev-rules.patch new file mode 100644 index 0000000..8b93afc --- /dev/null +++ b/sys-kernel/dracut/files/050-lvm-fix-removal-of-pvscan-from-udev-rules.patch @@ -0,0 +1,26 @@ +From 07417b7fc5cb261187519c916e4735189f20f4c6 Mon Sep 17 00:00:00 2001 +From: Alexander Tsoy +Date: Sat, 23 May 2020 18:03:47 +0300 +Subject: [PATCH] lvm: fix removal of pvscan from udev rules + +udev rules provided by lvm 2.02.128 and newer uses '+=' instead of '='. +--- + modules.d/90lvm/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/90lvm/module-setup.sh b/modules.d/90lvm/module-setup.sh +index d6d2c185..52c803f7 100755 +--- a/modules.d/90lvm/module-setup.sh ++++ b/modules.d/90lvm/module-setup.sh +@@ -101,7 +101,7 @@ install() { + sed -i -e 's/^ENV{SYSTEMD_ALIAS}=.*/# No LVM pvscan in dracut - lvmetad is not running yet/' \ + ${initdir}/lib/udev/rules.d/69-dm-lvm-metad.rules + sed -i -e 's/^ENV{ID_MODEL}=.*//' ${initdir}/lib/udev/rules.d/69-dm-lvm-metad.rules +- sed -i -e 's/^ENV{SYSTEMD_WANTS}=.*//' ${initdir}/lib/udev/rules.d/69-dm-lvm-metad.rules ++ sed -i -e 's/^ENV{SYSTEMD_WANTS}+\?=.*//' ${initdir}/lib/udev/rules.d/69-dm-lvm-metad.rules + else + sed -i -e 's/.*lvm pvscan.*/# No LVM pvscan for in dracut - lvmetad is not running yet/' \ + ${initdir}/lib/udev/rules.d/69-dm-lvm-metad.rules +-- +2.26.2 + diff --git a/sys-kernel/dracut/files/050-network-manager-ensure-that-nm-run.sh-is-executed-wh.patch b/sys-kernel/dracut/files/050-network-manager-ensure-that-nm-run.sh-is-executed-wh.patch new file mode 100644 index 0000000..d97193c --- /dev/null +++ b/sys-kernel/dracut/files/050-network-manager-ensure-that-nm-run.sh-is-executed-wh.patch @@ -0,0 +1,48 @@ +From 3dcaa97ca4dcfa8092252a22df62c60941e59ce3 Mon Sep 17 00:00:00 2001 +From: Beniamino Galvani +Date: Wed, 11 Mar 2020 09:40:50 +0100 +Subject: [PATCH] network-manager: ensure that nm-run.sh is executed when + needed + +The network-manager command line hook must install a +initqueue/finished hook to ensure that nm-run.sh is executed when +there are network connections to activate. + +Fixes: #694 +--- + modules.d/35network-manager/nm-config.sh | 11 +++++++++++ + modules.d/35network-manager/nm-run.sh | 2 ++ + 2 files changed, 13 insertions(+) + +diff --git a/modules.d/35network-manager/nm-config.sh b/modules.d/35network-manager/nm-config.sh +index 1efa737c..39a1c8bd 100755 +--- a/modules.d/35network-manager/nm-config.sh ++++ b/modules.d/35network-manager/nm-config.sh +@@ -5,3 +5,14 @@ if [ -n "$netroot" ] || [ -e /tmp/net.ifaces ]; then + fi + + /usr/libexec/nm-initrd-generator -- $(getcmdline) ++ ++if getargbool 0 rd.neednet; then ++ for i in /usr/lib/NetworkManager/system-connections/* \ ++ /run/NetworkManager/system-connections/* \ ++ /etc/NetworkManager/system-connections/* \ ++ /etc/sysconfig/network-scripts/ifcfg-*; do ++ [ -f "$i" ] || continue ++ echo '[ -f /tmp/nm.done ]' >$hookdir/initqueue/finished/nm.sh ++ break ++ done ++fi +diff --git a/modules.d/35network-manager/nm-run.sh b/modules.d/35network-manager/nm-run.sh +index 4079b735..fc5280a1 100755 +--- a/modules.d/35network-manager/nm-run.sh ++++ b/modules.d/35network-manager/nm-run.sh +@@ -22,3 +22,5 @@ do + source_hook initqueue/online $ifname + /sbin/netroot $ifname + done ++ ++> /tmp/nm.done +-- +2.26.2 + diff --git a/sys-kernel/dracut/files/050-systemd-remove-obsolete-syslog-parameter.patch b/sys-kernel/dracut/files/050-systemd-remove-obsolete-syslog-parameter.patch new file mode 100644 index 0000000..f24cf11 --- /dev/null +++ b/sys-kernel/dracut/files/050-systemd-remove-obsolete-syslog-parameter.patch @@ -0,0 +1,241 @@ +From 265f696b532f63f0ac1f9f341e0469a6eafe2fdd Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B3hann=20B=2E=20Gu=C3=B0mundsson?= +Date: Wed, 15 Jul 2020 14:26:00 +0000 +Subject: [PATCH 01/10] As of v246 of systemd "syslog" and "syslog-console" + switches have been deprecated + +--- + modules.d/90stratis/stratisd-init.service | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/modules.d/90stratis/stratisd-init.service b/modules.d/90stratis/stratisd-init.service +index 318e8c27..1be2e33b 100644 +--- a/modules.d/90stratis/stratisd-init.service ++++ b/modules.d/90stratis/stratisd-init.service +@@ -8,8 +8,6 @@ DefaultDependencies=no + Type=simple + ExecStart=/sbin/stratisd-init --debug + KillSignal=SIGINT +-StandardOutput=syslog +-StandardError=syslog + + [Install] + WantedBy=sysinit.target +-- +2.26.2 + +From 38ba90bf88b38228e128c65be40a2da287c0b1ed Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B3hann=20B=2E=20Gu=C3=B0mundsson?= +Date: Wed, 15 Jul 2020 14:29:34 +0000 +Subject: [PATCH 02/10] As of v246 of systemd "syslog" and "syslog-console" + switches have been deprecated + +--- + modules.d/99squash/squash-mnt-clear.service | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/modules.d/99squash/squash-mnt-clear.service b/modules.d/99squash/squash-mnt-clear.service +index 84441f60..9d94c524 100644 +--- a/modules.d/99squash/squash-mnt-clear.service ++++ b/modules.d/99squash/squash-mnt-clear.service +@@ -12,6 +12,6 @@ ConditionPathExists=/squash/root + Type=oneshot + RemainAfterExit=no + StandardInput=null +-StandardOutput=syslog+console +-StandardError=syslog+console ++StandardOutput=journal+console ++StandardError=journal+console + ExecStart=/squash/clear-squash.sh +-- +2.26.2 + +From 5cb2a4004d18e4b96ddc18f221fae922350a9000 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B3hann=20B=2E=20Gu=C3=B0mundsson?= +Date: Wed, 15 Jul 2020 14:31:17 +0000 +Subject: [PATCH 03/10] As of v246 of systemd "syslog" and "syslog-console" + switches have been deprecated + +--- + modules.d/98dracut-systemd/dracut-pre-trigger.service | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/modules.d/98dracut-systemd/dracut-pre-trigger.service b/modules.d/98dracut-systemd/dracut-pre-trigger.service +index 7bf16167..6f1ba521 100644 +--- a/modules.d/98dracut-systemd/dracut-pre-trigger.service ++++ b/modules.d/98dracut-systemd/dracut-pre-trigger.service +@@ -20,8 +20,7 @@ Environment=NEWROOT=/sysroot + Type=oneshot + ExecStart=-/bin/dracut-pre-trigger + StandardInput=null +-StandardOutput=syslog +-StandardError=syslog+console ++StandardError=journal+console + KillMode=process + RemainAfterExit=yes + +-- +2.26.2 + +From 317d841c788e841d3533515ceda5597a099eb64e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B3hann=20B=2E=20Gu=C3=B0mundsson?= +Date: Wed, 15 Jul 2020 14:31:59 +0000 +Subject: [PATCH 04/10] As of v246 of systemd "syslog" and "syslog-console" + switches have been deprecated + +--- + modules.d/98dracut-systemd/dracut-initqueue.service | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/modules.d/98dracut-systemd/dracut-initqueue.service b/modules.d/98dracut-systemd/dracut-initqueue.service +index 207d545d..3a8679a5 100644 +--- a/modules.d/98dracut-systemd/dracut-initqueue.service ++++ b/modules.d/98dracut-systemd/dracut-initqueue.service +@@ -21,8 +21,7 @@ Environment=NEWROOT=/sysroot + Type=oneshot + ExecStart=-/bin/dracut-initqueue + StandardInput=null +-StandardOutput=syslog +-StandardError=syslog+console ++StandardError=journal+console + KillMode=process + RemainAfterExit=yes + +-- +2.26.2 + +From 0c1bd016ecfb9c6d194c4356199b509d90db4071 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B3hann=20B=2E=20Gu=C3=B0mundsson?= +Date: Wed, 15 Jul 2020 14:32:44 +0000 +Subject: [PATCH 05/10] As of v246 of systemd "syslog" and "syslog-console" + switches have been deprecated + +--- + modules.d/98dracut-systemd/dracut-pre-pivot.service | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/modules.d/98dracut-systemd/dracut-pre-pivot.service b/modules.d/98dracut-systemd/dracut-pre-pivot.service +index 9a1f0854..e893d1dd 100644 +--- a/modules.d/98dracut-systemd/dracut-pre-pivot.service ++++ b/modules.d/98dracut-systemd/dracut-pre-pivot.service +@@ -27,8 +27,7 @@ Environment=NEWROOT=/sysroot + Type=oneshot + ExecStart=-/bin/dracut-pre-pivot + StandardInput=null +-StandardOutput=syslog +-StandardError=syslog+console ++StandardError=journal+console + KillMode=process + RemainAfterExit=yes + +-- +2.26.2 + +From e1130a83405648777210fdc99f7eee087eebaadc Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B3hann=20B=2E=20Gu=C3=B0mundsson?= +Date: Wed, 15 Jul 2020 14:33:33 +0000 +Subject: [PATCH 06/10] As of v246 of systemd "syslog" and "syslog-console" + switches have been deprecated + +--- + modules.d/98dracut-systemd/dracut-pre-udev.service | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/modules.d/98dracut-systemd/dracut-pre-udev.service b/modules.d/98dracut-systemd/dracut-pre-udev.service +index 570ec02d..e4092e35 100644 +--- a/modules.d/98dracut-systemd/dracut-pre-udev.service ++++ b/modules.d/98dracut-systemd/dracut-pre-udev.service +@@ -24,8 +24,7 @@ Environment=NEWROOT=/sysroot + Type=oneshot + ExecStart=-/bin/dracut-pre-udev + StandardInput=null +-StandardOutput=syslog +-StandardError=syslog+console ++StandardError=journal+console + KillMode=process + RemainAfterExit=yes + +-- +2.26.2 + +From c437933cb0490e800e776cb7695d2ea0e95056a2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B3hann=20B=2E=20Gu=C3=B0mundsson?= +Date: Wed, 15 Jul 2020 14:34:17 +0000 +Subject: [PATCH 07/10] As of v246 of systemd "syslog" and "syslog-console" + switches have been deprecated + +--- + modules.d/98dracut-systemd/dracut-pre-mount.service | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/modules.d/98dracut-systemd/dracut-pre-mount.service b/modules.d/98dracut-systemd/dracut-pre-mount.service +index d3909689..18c9730c 100644 +--- a/modules.d/98dracut-systemd/dracut-pre-mount.service ++++ b/modules.d/98dracut-systemd/dracut-pre-mount.service +@@ -19,8 +19,7 @@ Environment=NEWROOT=/sysroot + Type=oneshot + ExecStart=-/bin/dracut-pre-mount + StandardInput=null +-StandardOutput=syslog +-StandardError=syslog+console ++StandardError=journal+console + KillMode=process + RemainAfterExit=yes + +-- +2.26.2 + +From d9149c6ca7c52c204c1b346e9b6a32bbadd0b2ff Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B3hann=20B=2E=20Gu=C3=B0mundsson?= +Date: Wed, 15 Jul 2020 14:35:02 +0000 +Subject: [PATCH 08/10] As of v246 of systemd "syslog" and "syslog-console" + switches have been deprecated + +--- + modules.d/98dracut-systemd/dracut-cmdline.service | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/modules.d/98dracut-systemd/dracut-cmdline.service b/modules.d/98dracut-systemd/dracut-cmdline.service +index e577ec88..a8078bd2 100644 +--- a/modules.d/98dracut-systemd/dracut-cmdline.service ++++ b/modules.d/98dracut-systemd/dracut-cmdline.service +@@ -23,8 +23,7 @@ Environment=NEWROOT=/sysroot + Type=oneshot + ExecStart=-/bin/dracut-cmdline + StandardInput=null +-StandardOutput=syslog +-StandardError=syslog+console ++StandardError=journal+console + KillMode=process + RemainAfterExit=yes + +-- +2.26.2 + +From 8cb5ac1b30be458df9497911ba601d90e68f4d5b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B3hann=20B=2E=20Gu=C3=B0mundsson?= +Date: Wed, 15 Jul 2020 14:35:38 +0000 +Subject: [PATCH 09/10] As of v246 of systemd "syslog" and "syslog-console" + switches have been deprecated + +--- + modules.d/98dracut-systemd/dracut-mount.service | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/modules.d/98dracut-systemd/dracut-mount.service b/modules.d/98dracut-systemd/dracut-mount.service +index 77d34f62..c88e6d84 100644 +--- a/modules.d/98dracut-systemd/dracut-mount.service ++++ b/modules.d/98dracut-systemd/dracut-mount.service +@@ -19,8 +19,7 @@ Environment=NEWROOT=/sysroot + Type=oneshot + ExecStart=-/bin/dracut-mount + StandardInput=null +-StandardOutput=syslog +-StandardError=syslog+console ++StandardError=journal+console + KillMode=process + RemainAfterExit=yes + +-- +2.26.2 + diff --git a/sys-kernel/dracut/files/051-dracut.sh-move-ldconfig.patch b/sys-kernel/dracut/files/051-dracut.sh-move-ldconfig.patch new file mode 100644 index 0000000..d6d97f7 --- /dev/null +++ b/sys-kernel/dracut/files/051-dracut.sh-move-ldconfig.patch @@ -0,0 +1,60 @@ +From 48258fae9fa58046d7d1a246ea3d821530180643 Mon Sep 17 00:00:00 2001 +From: Alexander Tsoy +Date: Fri, 18 Dec 2020 00:01:32 +0300 +Subject: [PATCH] dracut.sh: Move ldconfig after library workaround + +This fixes boot failures when libgcc_s.so.1 is in a non-standard +directory. + +Bug: https://bugs.gentoo.org/760249 +Fixes: de3cb0e3214c (dracut.sh: Move the library workaround after squash) +--- + dracut.sh | 28 ++++++++++++++-------------- + 1 file changed, 14 insertions(+), 14 deletions(-) + +diff --git a/dracut.sh b/dracut.sh +index 0f4648397..c6c361acc 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -1724,20 +1724,6 @@ for ((i=0; i < ${#include_src[@]}; i++)); do + fi + done + +-if [[ $kernel_only != yes ]]; then +- # make sure that library links are correct and up to date +- for f in $dracutsysrootdir/etc/ld.so.conf $dracutsysrootdir/etc/ld.so.conf.d/*; do +- [[ -f $f ]] && inst_simple "${f#$dracutsysrootdir}" +- done +- if ! $DRACUT_LDCONFIG -r "$initdir" -f /etc/ld.so.conf; then +- if [[ $EUID = 0 ]]; then +- derror "ldconfig exited ungracefully" +- else +- derror "ldconfig might need uid=0 (root) for chroot()" +- fi +- fi +-fi +- + if [[ $do_hardlink = yes ]] && command -v hardlink >/dev/null; then + dinfo "*** Hardlinking files ***" + hardlink "$initdir" 2>&1 +@@ -1920,6 +1906,20 @@ if [[ $kernel_only != yes ]]; then + fi + fi + ++if [[ $kernel_only != yes ]]; then ++ # make sure that library links are correct and up to date ++ for f in $dracutsysrootdir/etc/ld.so.conf $dracutsysrootdir/etc/ld.so.conf.d/*; do ++ [[ -f $f ]] && inst_simple "${f#$dracutsysrootdir}" ++ done ++ if ! $DRACUT_LDCONFIG -r "$initdir" -f /etc/ld.so.conf; then ++ if [[ $EUID = 0 ]]; then ++ derror "ldconfig exited ungracefully" ++ else ++ derror "ldconfig might need uid=0 (root) for chroot()" ++ fi ++ fi ++fi ++ + if [[ $do_strip = yes ]] && ! [[ $DRACUT_FIPS_MODE ]]; then + dinfo "*** Stripping files ***" + find "$initdir" -type f \ diff --git a/sys-kernel/dracut/files/crypt-ssh-luks.patch b/sys-kernel/dracut/files/crypt-ssh-luks.patch new file mode 100644 index 0000000..c01354c --- /dev/null +++ b/sys-kernel/dracut/files/crypt-ssh-luks.patch @@ -0,0 +1,132 @@ +commit 2e091e01691ac86f014d52504f13c6e1cc0990c3 +Author: Stefan Reimer +Date: Fri Feb 19 13:50:45 2021 +0100 + + crypt-ssh module: This modules allows for unlocking LUKS encrypted root filesystems remotely over SSH. + By setting rd.luks.ssh and having a /root/.ssh/authorized_keys file dracut will wait + until an authorized users logs in and enters a passphrase to open the LUKS device. + +diff --git a/modules.d/90crypt/cryptroot-ask.sh b/modules.d/90crypt/cryptroot-ask.sh +index 1ea77ccc..e73743ef 100755 +--- a/modules.d/90crypt/cryptroot-ask.sh ++++ b/modules.d/90crypt/cryptroot-ask.sh +@@ -173,15 +173,26 @@ fi + + if [ $ask_passphrase -ne 0 ]; then + luks_open="$(command -v cryptsetup) $cryptsetupopts luksOpen" +- _timeout=$(getargs "rd.luks.timeout") +- _timeout=${_timeout:-0} +- ask_for_password --ply-tries 5 \ +- --ply-cmd "$luks_open -T1 $device $luksname" \ +- --ply-prompt "Password ($device)" \ +- --tty-tries 1 \ +- --tty-cmd "$luks_open -T5 -t $_timeout $device $luksname" ++ ++ if getargbool 0 rd.luks.ssh; then ++ # Setup authorized_key file, inject forced cmd for each entry ++ while read key; do ++ echo "command=\"$luks_open -T5 $device $luksname && rm -f /tmp/crypt-ssh-block\" $key" >> /root/.ssh/authorized_keys ++ done < /root/.ssh/key.pub ++ rm -f /root/.ssh/key.pub ++ # Create flock to prevent initqueue from timing out waiting for someone to login ++ echo "initqueue blocked by ssh server" > /tmp/crypt-ssh-block ++ else ++ _timeout=$(getargs "rd.luks.timeout") ++ _timeout=${_timeout:-0} ++ ask_for_password --ply-tries 5 \ ++ --ply-cmd "$luks_open -T1 $device $luksname" \ ++ --ply-prompt "Password ($device)" \ ++ --tty-tries 1 \ ++ --tty-cmd "$luks_open -T5 -t $_timeout $device $luksname" ++ unset _timeout ++ fi + unset luks_open +- unset _timeout + fi + + if [ "$is_keysource" -ne 0 -a ${luksname##luks-} != "$luksname" ]; then +diff --git a/modules.d/92crypt-ssh/crypt-ssh-cleanup.sh b/modules.d/92crypt-ssh/crypt-ssh-cleanup.sh +new file mode 100644 +index 00000000..03b05d84 +--- /dev/null ++++ b/modules.d/92crypt-ssh/crypt-ssh-cleanup.sh +@@ -0,0 +1,7 @@ ++#!/bin/sh ++ ++# Stops previously started dropbear ++ ++if [ -f /var/run/dropbear.pid ]; then ++ kill $(cat /var/run/dropbear.pid) ++fi +diff --git a/modules.d/92crypt-ssh/module-setup.sh b/modules.d/92crypt-ssh/module-setup.sh +new file mode 100644 +index 00000000..4fd2aadf +--- /dev/null ++++ b/modules.d/92crypt-ssh/module-setup.sh +@@ -0,0 +1,33 @@ ++#!/bin/bash ++ ++check() { ++ require_binaries dropbear || return 1 ++ ++ # We need a SSH pub key, as passwords are not an option ++ # due to the initrd being unencrypted on disk ++ [ -r /root/.ssh/authorized_keys ] || { ++ echo "No /root/.ssh/authorized_keys found, needed to authenticate at boot!"; ++ exit 1; ++ } ++ return 255 ++} ++ ++depends() { ++ echo "network crypt" ++ return 0 ++} ++ ++install() { ++ #Install dropbear ++ mkdir -p /etc/dropbear ++ ++ # Create host keys of needed ++ [ -r /etc/dropbear/dropbear_dss_host_key ] || /usr/bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key > /dev/null ++ [ -r /etc/dropbear/dropbear_rsa_host_key ] || /usr/bin/dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key > /dev/null ++ ++ inst_multiple dropbear /etc/dropbear/dropbear_dss_host_key /etc/dropbear/dropbear_rsa_host_key ++ inst /root/.ssh/authorized_keys /root/.ssh/key.pub ++ ++ inst_hook initqueue/online 60 "$moddir/start-ssh.sh" ++ inst_hook cleanup 99 "$moddir/crypt-ssh-cleanup.sh" ++} +diff --git a/modules.d/92crypt-ssh/start-ssh.sh b/modules.d/92crypt-ssh/start-ssh.sh +new file mode 100644 +index 00000000..ac1c5ec3 +--- /dev/null ++++ b/modules.d/92crypt-ssh/start-ssh.sh +@@ -0,0 +1,27 @@ ++#!/bin/sh ++ ++# Start dropbear server once online ++ ++type get_ip >/dev/null 2>&1 || . /lib/net-lib.sh ++ ++port=$(getargnum 22 1 65535 rd.luks.ssh.port) ++listen_ip=$(get_ip $1) ++pid_file="/var/run/dropbear_$listen_ip_$port.pid" ++ ++[ "x$listen_ip" != "x" ] && listen_ip="$listen_ip:" ++ ++if [ -x "/usr/sbin/dropbear" ]; then ++ if [ -r /root/.ssh/authorized_keys ]; then ++ touch /var/log/lastlog ++ /usr/sbin/dropbear -p $listen_ip$port -m -j -k -s -P $pid_file ++ # flock will be removed upon successful luksopen via forced_command ++ while [ -e /tmp/crypt-ssh-block ]; do ++ sleep 1 ++ done ++ kill $(cat $pid_file) ++ else ++ warn "No authorized_keys files, not starting SSH server!" ++ fi ++else ++ warn "initqueue/online/start-ssh: Could not find dropbear binary!" ++fi diff --git a/sys-kernel/dracut/files/gentoo-ldconfig-paths.patch b/sys-kernel/dracut/files/gentoo-ldconfig-paths.patch new file mode 100644 index 0000000..15522ef --- /dev/null +++ b/sys-kernel/dracut/files/gentoo-ldconfig-paths.patch @@ -0,0 +1,39 @@ +From 0674b9136831b1beb6a7ec91147fd5c280c693a3 Mon Sep 17 00:00:00 2001 +From: Alexander Tsoy +Date: Mon, 9 Mar 2020 02:47:07 +0300 +Subject: [PATCH] Remove redundant gcc paths in ldconfig_paths() + +Bug: https://bugs.gentoo.org/705728 +--- + dracut-functions.sh | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +diff --git a/dracut-functions.sh b/dracut-functions.sh +index 3cb9c7af..5337ff6c 100755 +--- a/dracut-functions.sh ++++ b/dracut-functions.sh +@@ -76,7 +76,20 @@ find_binary() { + + ldconfig_paths() + { +- $DRACUT_LDCONFIG ${dracutsysrootdir:+-r ${dracutsysrootdir} -f /etc/ld.so.conf} -pN 2>/dev/null | grep -E -v '/(lib|lib64|usr/lib|usr/lib64)/[^/]*$' | sed -n 's,.* => \(.*\)/.*,\1,p' | sort | uniq ++ local gccpath ++ ++ if type -P gcc-config &>/dev/null; then ++ gccpath=$(gcc-config -c) ++ gccpath=/usr/lib/gcc/${gccpath%-*}/${gccpath##*-} ++ fi ++ ++ while read -r line; do ++ if [[ ${line} != /usr/lib/gcc/* || -z ${gccpath} ]]; then ++ echo ${line} ++ elif [[ ${line} == ${gccpath} ]]; then ++ echo ${line} ++ fi ++ done < <($DRACUT_LDCONFIG ${dracutsysrootdir:+-r ${dracutsysrootdir} -f /etc/ld.so.conf} -pN 2>/dev/null | grep -E -v '/(lib|lib64|usr/lib|usr/lib64)/[^/]*$' | sed -n 's,.* => \(.*\)/.*,\1,p' | sort | uniq) + } + + # Version comparision function. Assumes Linux style version scheme. +-- +2.24.1 +