summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2018-09-23 16:35:07 +0100
committerV3n3RiX <venerix@redcorelinux.org>2018-09-23 16:35:07 +0100
commit2c6cccd18a2e5ce01b696a7684140ef68430dce8 (patch)
tree9a78672c78eaa3e72db1e2b389dfe4e034cb8d3d
parentbb61464b053b94e4f30dd329ecb7b2b89767e97c (diff)
sys-boot/dracut : import from arbor, downgrade to 044, use our gentoo && redcore patchsets
-rw-r--r--packages/sys-boot/dracut/dracut-044.exheres-07
-rw-r--r--packages/sys-boot/dracut/dracut.exlib183
-rw-r--r--packages/sys-boot/dracut/files/0001-base-dracut-lib.sh-dev_unit_name-guard-against-dev-b.patch32
-rw-r--r--packages/sys-boot/dracut/files/0002-systemd-initrd-add-initrd-root-device.target.patch24
-rw-r--r--packages/sys-boot/dracut/files/0003-50-dracut.install-use-bin-bash-shebang.patch23
-rw-r--r--packages/sys-boot/dracut/files/0004-redcore-change-default-initramfs-name.patch12
-rw-r--r--packages/sys-boot/dracut/files/0005-dracut-044-bash-4.4.patch80
-rw-r--r--packages/sys-boot/dracut/files/0006-dracut-044-preserve-xattrs-when-copying.patch51
-rw-r--r--packages/sys-boot/dracut/files/0007-dracut-044-backport-fix-for-microcode-loading.patch12
-rw-r--r--packages/sys-boot/dracut/files/0008-dracut-044-ext4-and-f2fs-need-crc32X-too.patch30
-rw-r--r--packages/sys-boot/dracut/files/0009-sort-fixup-creating-early-microcode.patch31
11 files changed, 485 insertions, 0 deletions
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 <spoonb@exherbo.org>
+# 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 <eternaleye@gmail.com>
+# Copyright 2010 Brett Witherspoon <spoonb@exherbo.org>
+# 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 <alexander@tsoy.me>
+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 <harald@redhat.com>
+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 <floppym@gentoo.org>
+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 <stefanb@us.ibm.com>
+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 <stefanb@linux.vnet.ibm.com>
+---
+ 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