From 2c6cccd18a2e5ce01b696a7684140ef68430dce8 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Sun, 23 Sep 2018 16:35:07 +0100 Subject: sys-boot/dracut : import from arbor, downgrade to 044, use our gentoo && redcore patchsets --- packages/sys-boot/dracut/dracut-044.exheres-0 | 7 + packages/sys-boot/dracut/dracut.exlib | 183 +++++++++++++++++++++ ...-lib.sh-dev_unit_name-guard-against-dev-b.patch | 32 ++++ ...temd-initrd-add-initrd-root-device.target.patch | 24 +++ ...03-50-dracut.install-use-bin-bash-shebang.patch | 23 +++ ...004-redcore-change-default-initramfs-name.patch | 12 ++ .../dracut/files/0005-dracut-044-bash-4.4.patch | 80 +++++++++ ...6-dracut-044-preserve-xattrs-when-copying.patch | 51 ++++++ ...ut-044-backport-fix-for-microcode-loading.patch | 12 ++ ...-dracut-044-ext4-and-f2fs-need-crc32X-too.patch | 30 ++++ .../0009-sort-fixup-creating-early-microcode.patch | 31 ++++ 11 files changed, 485 insertions(+) create mode 100644 packages/sys-boot/dracut/dracut-044.exheres-0 create mode 100644 packages/sys-boot/dracut/dracut.exlib create mode 100644 packages/sys-boot/dracut/files/0001-base-dracut-lib.sh-dev_unit_name-guard-against-dev-b.patch create mode 100644 packages/sys-boot/dracut/files/0002-systemd-initrd-add-initrd-root-device.target.patch create mode 100644 packages/sys-boot/dracut/files/0003-50-dracut.install-use-bin-bash-shebang.patch create mode 100644 packages/sys-boot/dracut/files/0004-redcore-change-default-initramfs-name.patch create mode 100644 packages/sys-boot/dracut/files/0005-dracut-044-bash-4.4.patch create mode 100644 packages/sys-boot/dracut/files/0006-dracut-044-preserve-xattrs-when-copying.patch create mode 100644 packages/sys-boot/dracut/files/0007-dracut-044-backport-fix-for-microcode-loading.patch create mode 100644 packages/sys-boot/dracut/files/0008-dracut-044-ext4-and-f2fs-need-crc32X-too.patch create mode 100644 packages/sys-boot/dracut/files/0009-sort-fixup-creating-early-microcode.patch diff --git a/packages/sys-boot/dracut/dracut-044.exheres-0 b/packages/sys-boot/dracut/dracut-044.exheres-0 new file mode 100644 index 0000000..f29e24e --- /dev/null +++ b/packages/sys-boot/dracut/dracut-044.exheres-0 @@ -0,0 +1,7 @@ +# Copyright 2010 Brett Witherspoon +# Distributed under the terms of the GNU General Public License v2 + +require dracut + +PLATFORMS="~amd64 ~armv7 ~x86" + diff --git a/packages/sys-boot/dracut/dracut.exlib b/packages/sys-boot/dracut/dracut.exlib new file mode 100644 index 0000000..bc674db --- /dev/null +++ b/packages/sys-boot/dracut/dracut.exlib @@ -0,0 +1,183 @@ +# Copyright 2010 Alex Elsayed +# Copyright 2010 Brett Witherspoon +# Distributed under the terms of the GNU General Public License v2 + +require systemd-service + +DOWNLOADS="mirror://kernel/linux/utils/boot/${PN}/${PNV}.tar.gz" + +export_exlib_phases src_prepare src_install + +SUMMARY="Dracut is a modular initramfs infrastructure." +DESCRIPTION=" +Unlike existing initramfs's, this is an attempt at having as little as possible hard-coded into +the initramfs as possible. The initramfs has (basically) one purpose in life -- getting the rootfs +mounted so that we can transition to the real rootfs. This is all driven off of device availability. +Therefore, instead of scripts hard-coded to do various things, we depend on udev to create device +nodes for us and then when we have the rootfs's device node, we mount and carry on. This helps to +keep the time required in the initramfs as little as possible so that things like a 5 second boot +aren't made impossible as a result of the very existence of an initramfs. It's likely that we'll +grow some hooks for running arbitrary commands in the flow of the script, but it's worth trying +to resist the urge as much as we can as hooks are guaranteed to be the path to slow-down. Also, +there is an attempt to keep things as distribution-agnostic as possible. +" +HOMEPAGE="https://dracut.wiki.kernel.org/" + +UPSTREAM_DOCUMENTATION=" + https://www.kernel.org/pub/linux/utils/boot/dracut/dracut.html [[ description = [ Manual ] lang = en ]] +" + +LICENCES="GPL-2" +SLOT="0" +MYOPTIONS="" + +DEPENDENCIES=" + build: + app-doc/asciidoc + app-text/docbook-xml-dtd:4.5 + dev-libs/libxslt + dev-util/elfutils + sys-apps/kmod[>=23] + run: + app-shells/bash[>=4.0] + virtual/pkg-config + sys-apps/coreutils[xattr] + sys-apps/util-linux[>=2.21] + test: + app-shells/dash + recommendation: + sys-process/procps [[ + description = [ Required by the base module for pidof if not using busybox ] + ]] + suggestion: + app-arch/pigz [[ + description = [ Support parallel (de)compression via pigz ] + ]] + app-crypt/gnupg [[ + description = [ Add support for GPG-encrypted keys to the crypt module ] + ]] + app-shells/dash [[ + description = [ Support for dash as the initramfs shell ] + ]] + net-fs/cifs-utils [[ + description = [ Required by the CIFS module for rootfs on CIFS ] + ]] + net-fs/nfs-utils [[ + description = [ Required by the NFS module for rootfs on NFS ] + group-name = [ dracut-nfs-module ] + ]] + net-misc/open-iscsi [[ + description = [ Support for rootfs on iSCSI ] + ]] + net-nds/rpcbind [[ + description = [ Reguired by the NFS module for rootfs on NFS ] + group-name = [ dracut-nfs-module ] + ]] + sys-boot/plymouth [[ + description = [ Provides boot splash support ] + ]] + sys-fs/btrfs-progs [[ + description = [ Support for multi-device btrfs filesystems ] + ]] + sys-fs/cryptsetup [[ + description = [ Support for an encrypted rootfs using dmcrypt ] + ]] + sys-fs/lvm2 [[ + description = [ Support for LVM volumes and device-mapper partitions for various modules ] + ]] + sys-fs/multipath-tools [[ + description = [ Support for rootfs on multipath devices ] + ]] + net-misc/bridge-utils [[ + description = [ Required by the network boot module for brctl ] + group-name = [ dracut-network-module ] + ]] + net-misc/dhcp [[ + description = [ Required by the network boot module for dhclient ] + group-name = [ dracut-network-module ] + ]] + net-misc/iputils [[ + description = [ Required by the network boot and debug module for arping and ping ] + group-name = [ dracut-network-module ] + ]] + sys-apps/iproute2 [[ + description = [ Required by the network boot module for ip ] + group-name = [ dracut-network-module ] + ]] + sys-apps/keyutils [[ + description = [ Required by the masterkey, ecryptfs and integrity modules to decrypt keys ] + ]] + sys-apps/net-tools [[ + description = [ Required by the iSCSI and debug module for hostname and netstat ] + ]] + sys-libs/libcap [[ + description = [ Required by the caps module for initramfs which drops capabilities ] + ]] + virtual/syslog [[ + description = [ Support for logging to a remote server with the syslog module ] + ]] +" + +# As broken as it gets - the tests even signal failure when they're just checking +# for the file system type +RESTRICT="test" + +# TODO +# - Some modules need additional/unpackaged dependencies and testing. +# See module-info.sh or module-setup.sh in the module directory, + + +DEFAULT_SRC_PREPARE_PATCHES=( + "${FILES}"/0001-base-dracut-lib.sh-dev_unit_name-guard-against-dev-b.patch + "${FILES}"/0002-systemd-initrd-add-initrd-root-device.target.patch + "${FILES}"/0003-50-dracut.install-use-bin-bash-shebang.patch + "${FILES}"/0004-redcore-change-default-initramfs-name.patch + "${FILES}"/0005-dracut-044-bash-4.4.patch + "${FILES}"/0006-dracut-044-preserve-xattrs-when-copying.patch + "${FILES}"/0007-dracut-044-backport-fix-for-microcode-loading.patch + "${FILES}"/0008-dracut-044-ext4-and-f2fs-need-crc32X-too.patch + "${FILES}"/0009-sort-fixup-creating-early-microcode.patch +) + +DEFAULT_SRC_CONFIGURE_PARAMS=( + --bashcompletiondir=/usr/share/bash-completion/completions + --systemdsystemunitdir="${SYSTEMDSYSTEMUNITDIR}" +) + +DEFAULT_SRC_INSTALL_PARAMS=( + prefix=/usr + libdir=/usr/$(exhost --target)/lib + sysconfdir=/etc +) + +dracut_src_prepare() { + default + + edo sed -i -e "s:HOST-\(strip\):$(exhost --target)-\1:g" dracut.sh + + # Dracut's "Test Matrix" requires root privileges and are excessive. + # This disables them and only runs the syntax check with dash. + edo sed -i -e '/$(MAKE) -C test check/d' Makefile + + # Fix libdir. + edo sed -i -e "s:/lib\(/kernel/install.d\):/$(exhost --target)/lib\1:" Makefile + + # Remove modules that are not compatible with Exherbo. + edo rm -r modules.d/45ifcfg +} + +dracut_src_install() { + export systemdsystemunitdir="${SYSTEMDSYSTEMUNITDIR}" + + default + + insinto /usr/share/doc/${PNVR}/html/ + doins dracut.html dracut.png + + keepdir /etc/dracut.conf.d + keepdir /usr/$(exhost --target)/lib/dracut/dracut.conf.d + + insinto /etc/logrotate.d/ + newins dracut.logrotate dracut +} + diff --git a/packages/sys-boot/dracut/files/0001-base-dracut-lib.sh-dev_unit_name-guard-against-dev-b.patch b/packages/sys-boot/dracut/files/0001-base-dracut-lib.sh-dev_unit_name-guard-against-dev-b.patch new file mode 100644 index 0000000..fd6f118 --- /dev/null +++ b/packages/sys-boot/dracut/files/0001-base-dracut-lib.sh-dev_unit_name-guard-against-dev-b.patch @@ -0,0 +1,32 @@ +From c41df7e1db1adc51399ab2c22f251b15eb2065b1 Mon Sep 17 00:00:00 2001 +From: Alexander Tsoy +Date: Tue, 5 Jan 2016 22:11:57 +0300 +Subject: [PATCH] base/dracut-lib.sh:dev_unit_name() guard against $dev + beginning with "-" + +crypt/parse-crypt.sh generate initqueue job which always call +dev_unit_name() with an argument beginning with "-". This results +in the following error: + +dracut-initqueue[307]: + systemd-escape -p -cfb4aa43-2f02-4c6b-a313-60ea99288087 +dracut-initqueue[307]: systemd-escape: invalid option -- 'c' +--- + modules.d/99base/dracut-lib.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/99base/dracut-lib.sh b/modules.d/99base/dracut-lib.sh +index ad03394..0a0b1b9 100755 +--- a/modules.d/99base/dracut-lib.sh ++++ b/modules.d/99base/dracut-lib.sh +@@ -874,7 +874,7 @@ dev_unit_name() + local dev="$1" + + if command -v systemd-escape >/dev/null; then +- systemd-escape -p "$dev" ++ systemd-escape -p -- "$dev" + return + fi + +-- +2.10.2 + diff --git a/packages/sys-boot/dracut/files/0002-systemd-initrd-add-initrd-root-device.target.patch b/packages/sys-boot/dracut/files/0002-systemd-initrd-add-initrd-root-device.target.patch new file mode 100644 index 0000000..21cb679 --- /dev/null +++ b/packages/sys-boot/dracut/files/0002-systemd-initrd-add-initrd-root-device.target.patch @@ -0,0 +1,24 @@ +From d4efc0aeeecc470d9a267b7f3c130f472488905c Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Wed, 25 May 2016 15:06:29 +0200 +Subject: [PATCH] systemd-initrd: add initrd-root-device.target + +--- + modules.d/01systemd-initrd/module-setup.sh | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules.d/01systemd-initrd/module-setup.sh b/modules.d/01systemd-initrd/module-setup.sh +index fb6a9ea..c1ccd2a 100755 +--- a/modules.d/01systemd-initrd/module-setup.sh ++++ b/modules.d/01systemd-initrd/module-setup.sh +@@ -28,6 +28,7 @@ install() { + inst_multiple -o \ + $systemdsystemunitdir/initrd.target \ + $systemdsystemunitdir/initrd-fs.target \ ++ $systemdsystemunitdir/initrd-root-device.target \ + $systemdsystemunitdir/initrd-root-fs.target \ + $systemdsystemunitdir/initrd-switch-root.target \ + $systemdsystemunitdir/initrd-switch-root.service \ +-- +2.10.2 + diff --git a/packages/sys-boot/dracut/files/0003-50-dracut.install-use-bin-bash-shebang.patch b/packages/sys-boot/dracut/files/0003-50-dracut.install-use-bin-bash-shebang.patch new file mode 100644 index 0000000..85ebc7e --- /dev/null +++ b/packages/sys-boot/dracut/files/0003-50-dracut.install-use-bin-bash-shebang.patch @@ -0,0 +1,23 @@ +From 69395a528aed99ec04b16c14ebacf4c2e10afd26 Mon Sep 17 00:00:00 2001 +From: Mike Gilbert +Date: Fri, 4 Nov 2016 13:09:28 -0400 +Subject: [PATCH] 50-dracut.install: use /bin/bash shebang + +This script utilizes several bash-specific constructs. +--- + 50-dracut.install | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/50-dracut.install b/50-dracut.install +index 7d081d5..54c71d4 100755 +--- a/50-dracut.install ++++ b/50-dracut.install +@@ -1,4 +1,4 @@ +-#!/bin/sh ++#!/bin/bash + + COMMAND="$1" + KERNEL_VERSION="$2" +-- +2.10.2 + diff --git a/packages/sys-boot/dracut/files/0004-redcore-change-default-initramfs-name.patch b/packages/sys-boot/dracut/files/0004-redcore-change-default-initramfs-name.patch new file mode 100644 index 0000000..3916337 --- /dev/null +++ b/packages/sys-boot/dracut/files/0004-redcore-change-default-initramfs-name.patch @@ -0,0 +1,12 @@ +diff -Nur a/dracut.sh b/dracut.sh +--- a/dracut.sh 2015-11-25 13:22:28.000000000 +0000 ++++ b/dracut.sh 2017-12-30 00:26:04.680751115 +0000 +@@ -627,7 +627,7 @@ + if [[ $MACHINE_ID ]] && ( [[ -d /boot/${MACHINE_ID} ]] || [[ -L /boot/${MACHINE_ID} ]] ); then + outfile="/boot/${MACHINE_ID}/$kernel/initrd" + else +- outfile="/boot/initramfs-$kernel.img" ++ outfile="/boot/initrd-$kernel" + fi + fi + diff --git a/packages/sys-boot/dracut/files/0005-dracut-044-bash-4.4.patch b/packages/sys-boot/dracut/files/0005-dracut-044-bash-4.4.patch new file mode 100644 index 0000000..3144c8e --- /dev/null +++ b/packages/sys-boot/dracut/files/0005-dracut-044-bash-4.4.patch @@ -0,0 +1,80 @@ +diff -urN dracut-044.orig/modules.d/50drm/module-setup.sh dracut-044/modules.d/50drm/module-setup.sh +--- dracut-044.orig/modules.d/50drm/module-setup.sh 2015-11-25 16:22:28.000000000 +0300 ++++ dracut-044/modules.d/50drm/module-setup.sh 2016-09-28 02:50:08.914967926 +0300 +@@ -24,9 +24,9 @@ + local _fname _fcont + while read _fname || [ -n "$_fname" ]; do + case "$_fname" in +- *.ko) _fcont="$(< $_fname)" ;; +- *.ko.gz) _fcont="$(gzip -dc $_fname)" ;; +- *.ko.xz) _fcont="$(xz -dc $_fname)" ;; ++ *.ko) _fcont="$(< $_fname tr -d \\0)" ;; ++ *.ko.gz) _fcont="$(gzip -dc $_fname | tr -d \\0)" ;; ++ *.ko.xz) _fcont="$(xz -dc $_fname | tr -d \\0)" ;; + esac + [[ $_fcont =~ $_drm_drivers + && ! $_fcont =~ iw_handler_get_spy ]] \ +diff -urN dracut-044.orig/modules.d/90kernel-modules/module-setup.sh dracut-044/modules.d/90kernel-modules/module-setup.sh +--- dracut-044.orig/modules.d/90kernel-modules/module-setup.sh 2015-11-25 16:22:28.000000000 +0300 ++++ dracut-044/modules.d/90kernel-modules/module-setup.sh 2016-09-28 02:49:11.725390294 +0300 +@@ -10,9 +10,9 @@ + function bmf1() { + local _f + while read _f || [ -n "$_f" ]; do case "$_f" in +- *.ko) [[ $(< $_f) =~ $_blockfuncs ]] && echo "$_f" ;; +- *.ko.gz) [[ $(gzip -dc <$_f) =~ $_blockfuncs ]] && echo "$_f" ;; +- *.ko.xz) [[ $(xz -dc <$_f) =~ $_blockfuncs ]] && echo "$_f" ;; ++ *.ko) [[ $(< $_f tr -d \\0) =~ $_blockfuncs ]] && echo "$_f" ;; ++ *.ko.gz) [[ $(gzip -dc <$_f | tr -d \\0) =~ $_blockfuncs ]] && echo "$_f" ;; ++ *.ko.xz) [[ $(xz -dc <$_f | tr -d \\0) =~ $_blockfuncs ]] && echo "$_f" ;; + esac + done + return 0 +diff -urN dracut-044.orig/modules.d/90kernel-network-modules/module-setup.sh dracut-044/modules.d/90kernel-network-modules/module-setup.sh +--- dracut-044.orig/modules.d/90kernel-network-modules/module-setup.sh 2015-11-25 16:22:28.000000000 +0300 ++++ dracut-044/modules.d/90kernel-network-modules/module-setup.sh 2016-09-28 02:51:08.202422231 +0300 +@@ -26,9 +26,9 @@ + while read _fname; do + [[ $_fname =~ $_unwanted_drivers ]] && continue + case "$_fname" in +- *.ko) _fcont="$(< $_fname)" ;; +- *.ko.gz) _fcont="$(gzip -dc $_fname)" ;; +- *.ko.xz) _fcont="$(xz -dc $_fname)" ;; ++ *.ko) _fcont="$(< $_fname tr -d \\0)" ;; ++ *.ko.gz) _fcont="$(gzip -dc $_fname | tr -d \\0)" ;; ++ *.ko.xz) _fcont="$(xz -dc $_fname | tr -d \\0)" ;; + esac + [[ $_fcont =~ $_net_drivers + && ! $_fcont =~ iw_handler_get_spy ]] \ +diff -urN dracut-044.orig/modules.d/90multipath/module-setup.sh dracut-044/modules.d/90multipath/module-setup.sh +--- dracut-044.orig/modules.d/90multipath/module-setup.sh 2015-11-25 16:22:28.000000000 +0300 ++++ dracut-044/modules.d/90multipath/module-setup.sh 2016-09-28 02:49:11.726390235 +0300 +@@ -58,9 +58,9 @@ + local _f + while read _f || [ -n "$_f" ]; do + case "$_f" in +- *.ko) [[ $(< $_f) =~ $_funcs ]] && echo "$_f" ;; +- *.ko.gz) [[ $(gzip -dc <$_f) =~ $_funcs ]] && echo "$_f" ;; +- *.ko.xz) [[ $(xz -dc <$_f) =~ $_funcs ]] && echo "$_f" ;; ++ *.ko) [[ $(< $_f tr -d \\0) =~ $_funcs ]] && echo "$_f" ;; ++ *.ko.gz) [[ $(gzip -dc <$_f | tr -d \\0) =~ $_funcs ]] && echo "$_f" ;; ++ *.ko.xz) [[ $(xz -dc <$_f | tr -d \\0) =~ $_funcs ]] && echo "$_f" ;; + esac + done + return 0 +diff -urN dracut-044.orig/modules.d/95iscsi/module-setup.sh dracut-044/modules.d/95iscsi/module-setup.sh +--- dracut-044.orig/modules.d/95iscsi/module-setup.sh 2015-11-25 16:22:28.000000000 +0300 ++++ dracut-044/modules.d/95iscsi/module-setup.sh 2016-09-28 02:49:11.726390235 +0300 +@@ -168,9 +168,9 @@ + local _f + while read _f || [ -n "$_f" ]; do + case "$_f" in +- *.ko) [[ $(< $_f) =~ $_funcs ]] && echo "$_f" ;; +- *.ko.gz) [[ $(gzip -dc <$_f) =~ $_funcs ]] && echo "$_f" ;; +- *.ko.xz) [[ $(xz -dc <$_f) =~ $_funcs ]] && echo "$_f" ;; ++ *.ko) [[ $(< $_f tr -d \\0) =~ $_funcs ]] && echo "$_f" ;; ++ *.ko.gz) [[ $(gzip -dc <$_f | tr -d \\0) =~ $_funcs ]] && echo "$_f" ;; ++ *.ko.xz) [[ $(xz -dc <$_f | tr -d \\0) =~ $_funcs ]] && echo "$_f" ;; + esac + done + return 0 diff --git a/packages/sys-boot/dracut/files/0006-dracut-044-preserve-xattrs-when-copying.patch b/packages/sys-boot/dracut/files/0006-dracut-044-preserve-xattrs-when-copying.patch new file mode 100644 index 0000000..3146d84 --- /dev/null +++ b/packages/sys-boot/dracut/files/0006-dracut-044-preserve-xattrs-when-copying.patch @@ -0,0 +1,51 @@ +From 61c761bc2c35fb244d46fbbde97161f5927071dc Mon Sep 17 00:00:00 2001 +From: Stefan Berger +Date: Tue, 25 Oct 2016 15:09:49 -0400 +Subject: [PATCH] dracut-install: preserve extended attributes when copying + files + +Preserve extended attributes when copying files using dracut-install. + +The copying of extended attributes avoids file execution denials when +the Linux Integrity Measurement's Appraisal mode is active. In that mode +executables need their file signatures copied. In particular, this patch +solves the problem that dependent libaries are not included in the +initramfs since the copied programs could not be executed due to missing +signatures. The following audit record shows the type of failure that +is now prevented: + +type=INTEGRITY_DATA msg=audit(1477409025.492:30065): pid=922 uid=0 + auid=4294967295 ses=4294967295 + subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 + op="appraise_data" cause="IMA-signature-required" + comm="ld-linux-x86-64" + name="/var/tmp/dracut.R6ySa4/initramfs/usr/bin/journalctl" + dev="dm-0" ino=37136 res=0 + +Signed-off-by: Stefan Berger +--- + install/dracut-install.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/install/dracut-install.c b/install/dracut-install.c +index fe30bba..c0f1c17 100644 +--- a/install/dracut-install.c ++++ b/install/dracut-install.c +@@ -294,7 +294,7 @@ static int cp(const char *src, const char *dst) + normal_copy: + pid = fork(); + if (pid == 0) { +- execlp("cp", "cp", "--reflink=auto", "--sparse=auto", "--preserve=mode,timestamps", "-fL", src, dst, ++ execlp("cp", "cp", "--reflink=auto", "--sparse=auto", "--preserve=mode,timestamps,xattr", "-fL", src, dst, + NULL); + _exit(EXIT_FAILURE); + } +@@ -302,7 +302,7 @@ static int cp(const char *src, const char *dst) + while (waitpid(pid, &ret, 0) < 0) { + if (errno != EINTR) { + ret = -1; +- log_error("Failed: cp --reflink=auto --sparse=auto --preserve=mode,timestamps -fL %s %s", src, ++ log_error("Failed: cp --reflink=auto --sparse=auto --preserve=mode,timestamps,xattr -fL %s %s", src, + dst); + break; + } diff --git a/packages/sys-boot/dracut/files/0007-dracut-044-backport-fix-for-microcode-loading.patch b/packages/sys-boot/dracut/files/0007-dracut-044-backport-fix-for-microcode-loading.patch new file mode 100644 index 0000000..a7454d3 --- /dev/null +++ b/packages/sys-boot/dracut/files/0007-dracut-044-backport-fix-for-microcode-loading.patch @@ -0,0 +1,12 @@ +diff -Nur a/dracut-functions.sh b/dracut-functions.sh +--- a/dracut-functions.sh 2015-11-25 13:22:28.000000000 +0000 ++++ b/dracut-functions.sh 2018-01-10 06:32:03.255256206 +0000 +@@ -652,7 +652,7 @@ + if [[ "$(get_cpu_vendor)" == "AMD" ]]; then + # If family greater or equal than 0x15 + if [[ $family -ge 21 ]]; then +- printf "microcode_amd_fam15h.bin" ++ printf "microcode_amd_fam%xh.bin" $family + else + printf "microcode_amd.bin" + fi diff --git a/packages/sys-boot/dracut/files/0008-dracut-044-ext4-and-f2fs-need-crc32X-too.patch b/packages/sys-boot/dracut/files/0008-dracut-044-ext4-and-f2fs-need-crc32X-too.patch new file mode 100644 index 0000000..dad12c9 --- /dev/null +++ b/packages/sys-boot/dracut/files/0008-dracut-044-ext4-and-f2fs-need-crc32X-too.patch @@ -0,0 +1,30 @@ +diff -Naur dracut-044/modules.d/99fs-lib/module-setup.sh dracut-044-p/modules.d/99fs-lib/module-setup.sh +--- dracut-044/modules.d/99fs-lib/module-setup.sh 2015-11-25 14:22:28.000000000 +0100 ++++ dracut-044-p/modules.d/99fs-lib/module-setup.sh 2018-04-26 16:30:19.960345610 +0200 +@@ -38,20 +38,23 @@ + include_fs_helper_modules() { + local dev=$1 fs=$2 + case "$fs" in +- xfs|btrfs) ++ xfs|btrfs|ext4) + instmods crc32c + ;; ++ f2fs) ++ instmods crc32 ++ ;; + esac + } + + # called by dracut + installkernel() { +- # xfs and btrfs needs crc32c... ++ # xfs, btrfs , ext4, f2fs needs crc32c / crc32 + if [[ $hostonly ]]; then + for_each_host_dev_fs include_fs_helper_modules + : + else +- instmods crc32c ++ instmods crc32c crc32 + fi + } + diff --git a/packages/sys-boot/dracut/files/0009-sort-fixup-creating-early-microcode.patch b/packages/sys-boot/dracut/files/0009-sort-fixup-creating-early-microcode.patch new file mode 100644 index 0000000..1dc9515 --- /dev/null +++ b/packages/sys-boot/dracut/files/0009-sort-fixup-creating-early-microcode.patch @@ -0,0 +1,31 @@ +diff -Naur dracut-047/dracut.sh dracut-047-microcode/dracut.sh +--- dracut-047/dracut.sh 2018-02-19 10:00:33.000000000 +0100 ++++ dracut-047-microcode/dracut.sh 2018-05-16 21:14:14.440286520 +0200 +@@ -1686,10 +1686,23 @@ + break 2 + done + for i in $_fwdir/$_fw/$_src; do +- [[ -e "$i" ]] || continue +- # skip gpg files +- str_ends "$i" ".asc" && continue +- cat "$i" >> $_dest_dir/${ucode_dest[$idx]} ++ ## match intel and amd ucode ignore other stuff ++ _i=$(echo $i | egrep "[0-9a-z]\w-[0-9a-z]\w-[0-9a-z]\w$|microcode_amd.*.bin$") ++ if [[ -n $_i ]]; then ++ j=$(file -bi $_i) ++ case $j in ++ *application/octet-stream*) ++ [[ -e "$_i" ]] || continue ++ ;; ++ *) ++ ## ignore also files matches names but are not data ( octet-stream ) ++ dinfo " Ignoring '$(basename $_i)', matches ucode names but is not a data file." ++ continue ++ ;; ++ esac ++ ++ cat "$_i" >> $_dest_dir/${ucode_dest[$idx]} ++ fi + done + create_early_cpio="yes" + fi -- cgit v1.2.3