diff --git a/0012-40network-Fix-race-condition-when-wait-for-networks.patch b/0012-40network-Fix-race-condition-when-wait-for-networks.patch new file mode 100644 index 0000000..8200967 --- /dev/null +++ b/0012-40network-Fix-race-condition-when-wait-for-networks.patch @@ -0,0 +1,36 @@ +From e4a8408698ea1a4d77b1c6d9ba76a7eab93b024a Mon Sep 17 00:00:00 2001 +From: Pawel Wieczorkiewicz +Date: Tue, 8 Apr 2014 08:50:55 +0200 +Subject: 40network: Fix race condition when wait for networks + +If no network related params are specific, but rd.neednet=1 is set, +the default initqueue action is to wait until one of the network +interfaces is marked as setup properly. + +This also help with initqueue's race condition when the network interface +shows upd late + +References: bnc#866771 + +Signed-off-by: Hannes Reinecke +--- + modules.d/40network/net-genrules.sh | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/modules.d/40network/net-genrules.sh b/modules.d/40network/net-genrules.sh +index b1c156c..d591161 100755 +--- a/modules.d/40network/net-genrules.sh ++++ b/modules.d/40network/net-genrules.sh +@@ -95,6 +95,9 @@ command -v fix_bootif >/dev/null || . /lib/net-lib.sh + cond='ACTION=="add", SUBSYSTEM=="net"' + # if you change the name of "91-default-net.rules", also change modules.d/80cms/cmssetup.sh + echo "$cond, $runcmd" > /etc/udev/rules.d/91-default-net.rules ++ if [ "$NEEDNET" = "1" ]; then ++ echo "[ -f /tmp/net.*.did-setup ]" >$hookdir/initqueue/finished/wait-network.sh ++ fi + fi + + # if you change the name of "90-net.rules", also change modules.d/80cms/cmssetup.sh +-- +2.6.6 + diff --git a/0013-40network-always-start-netroot-in-ifup.sh.patch b/0013-40network-always-start-netroot-in-ifup.sh.patch new file mode 100644 index 0000000..3489d51 --- /dev/null +++ b/0013-40network-always-start-netroot-in-ifup.sh.patch @@ -0,0 +1,64 @@ +From a9a919e44e0ce5cc5bc4167889a31d87626058e4 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 4 Jun 2014 12:04:10 +0200 +Subject: 40network: always start netroot in ifup.sh + +It's totally irrelevant how the network is configured when +trying to setup netroot. It only matters if it could be +configured at all. +So change the logic the check for correct network setup +and then start netroot. + +References: bnc#881235 + +Signed-off-by: Hannes Reinecke +--- + modules.d/40network/ifup.sh | 29 +++++++++++------------------ + 1 file changed, 11 insertions(+), 18 deletions(-) + +diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh +index 109fb4b..31a04bf 100755 +--- a/modules.d/40network/ifup.sh ++++ b/modules.d/40network/ifup.sh +@@ -373,27 +373,20 @@ for p in $(getargs ip=); do + do_static ;; + esac + done +- ret=$? + +- > /tmp/net.${netif}.up ++ if [ $? -eq 0 ]; then ++ > /tmp/net.${netif}.up + +- if [ -e /sys/class/net/${netif}/address ]; then +- > /tmp/net.$(cat /sys/class/net/${netif}/address).up +- fi ++ if [ -e /sys/class/net/${netif}/address ]; then ++ > /tmp/net.$(cat /sys/class/net/${netif}/address).up ++ fi + +- case $autoconf in +- dhcp|on|any|dhcp6) +- ;; +- *) +- if [ $ret -eq 0 ]; then +- setup_net $netif +- source_hook initqueue/online $netif +- if [ -z "$manualup" ]; then +- /sbin/netroot $netif +- fi +- fi +- ;; +- esac ++ setup_net $netif ++ source_hook initqueue/online $netif ++ if [ -z "$manualup" ]; then ++ /sbin/netroot $netif ++ fi ++ fi + + exit 0 + done +-- +2.6.6 + diff --git a/0015-40network-replace-dhclient-with-wickedd-dhcp-supplic.patch b/0015-40network-replace-dhclient-with-wickedd-dhcp-supplic.patch new file mode 100644 index 0000000..33861f8 --- /dev/null +++ b/0015-40network-replace-dhclient-with-wickedd-dhcp-supplic.patch @@ -0,0 +1,241 @@ +From 3b7df07e27efd2ef2df4d9d40253ee8185eb4152 Mon Sep 17 00:00:00 2001 +From: Pavel Wieczorkiewicz +Date: Mon, 7 Apr 2014 16:26:57 +0200 +Subject: 40network: replace dhclient with wickedd-dhcp-supplicant + +SLES12 is using wickedd, so we need to replace dhclient with +wickedd-dhcp-supplicant. + +References: bnc#866771 + +Signed-off-by: Hannes Reinecke +--- + modules.d/40network/dhclient.conf | 3 - + modules.d/40network/ifup.sh | 109 ++++++++++++++++++++++++++++------- + modules.d/40network/kill-dhclient.sh | 15 ----- + modules.d/40network/module-setup.sh | 15 +++-- + 4 files changed, 98 insertions(+), 44 deletions(-) + delete mode 100644 modules.d/40network/dhclient.conf + delete mode 100755 modules.d/40network/kill-dhclient.sh + +diff --git a/modules.d/40network/dhclient.conf b/modules.d/40network/dhclient.conf +deleted file mode 100644 +index dbf5882..0000000 +--- a/modules.d/40network/dhclient.conf ++++ /dev/null +@@ -1,3 +0,0 @@ +-request subnet-mask, broadcast-address, time-offset, routers, +- domain-name, domain-name-servers, domain-search, host-name, +- root-path, interface-mtu; +diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh +index 31a04bf..92e4b38 100755 +--- a/modules.d/40network/ifup.sh ++++ b/modules.d/40network/ifup.sh +@@ -87,6 +87,70 @@ else + [ -e /tmp/net.$(cat /sys/class/net/$netif/address).did-setup ] && exit 0 + fi + ++dhcp_apply() { ++ if [ -f /tmp/leaseinfo.${netif}.dhcp.ipv${1:1:1} ]; then ++ . /tmp/leaseinfo.${netif}.dhcp.ipv${1:1:1} ++ else ++ warn "DHCP failed"; ++ return 1 ++ fi ++ ++ if [ -z "${IPADDR}" ] || [ -z "${INTERFACE}" ]; then ++ warn "Missing crucial DHCP variables" ++ return 1 ++ fi ++ ++ # Assign IP address ++ ip $1 addr add "$IPADDR" ${BROADCAST:+broadcast $BROADCAST} dev "$INTERFACE" ++ ++ # Assign network route the interface is attached to ++ if [ -n "${NETWORK}" ]; then ++ ip $1 route add "$NETWORK"/"$PREFIXLEN" dev "$INTERFACE" ++ fi ++ ++ # Assign provided routes ++ local r route=() ++ if [ -n "${ROUTES}" ]; then ++ for r in ${ROUTES}; do ++ route=(${r//,/ }) ++ ip $1 route add "$route[0]"/"$route[1]" via "$route[2]" dev "$INTERFACE" ++ done ++ fi ++ ++ # Assign provided routers ++ local g ++ if [ -n "${GATEWAYS}" ]; then ++ for g in ${GATEWAYS}; do ++ ip $1 route add default via "$g" dev "$INTERFACE" && break ++ done ++ fi ++ ++ # Setup hostname ++ [ -n "${HOSTNAME}" ] && hostname "$HOSTNAME" ++ ++ # If nameserver= has not been specified, use what dhcp provides ++ if [ ! -s /tmp/net.$netif.resolv.conf ]; then ++ if [ -n "${DNSDOMAIN}" ]; then ++ echo domain "${DNSDOMAIN}" ++ fi >> /tmp/net.$netif.resolv.conf ++ ++ if [ -n "${DNSSEARCH}" ]; then ++ echo search "${DNSSEARCH}" ++ fi >> /tmp/net.$netif.resolv.conf ++ ++ if [ -n "${DNSSERVERS}" ] ; then ++ for s in ${DNSSERVERS}; do ++ echo nameserver "$s" ++ done ++ fi >> /tmp/net.$netif.resolv.conf ++ fi ++ [ -e /tmp/net.$netif.resolv.conf ] && \ ++ cp -f /tmp/net.$netif.resolv.conf /etc/resolv.conf ++ ++ info "DHCP is finished successfully" ++ return 0 ++} ++ + # Run dhclient + do_dhcp() { + # dhclient-script will mark the netif up and generate the online +@@ -98,28 +162,35 @@ do_dhcp() { + local _DHCPRETRY=$(getargs rd.net.dhcp.retry=) + _DHCPRETRY=${_DHCPRETRY:-1} + +- [ -e /tmp/dhclient.$netif.pid ] && return 0 ++ [ -f /tmp/leaseinfo.${netif}.dhcp.ipv${1:1:1} ] && return 0 ++ ++ info "Preparation for DHCP transaction" ++ ++ local dhclient='' ++ if [ "$1" = "-4" ] ; then ++ dhclient="wickedd-dhcp4" ++ elif [ "$1" = "-6" ] ; then ++ dhclient="wickedd-dhcp6" ++ fi ++ ++ # Address changed ++ ip $1 addr flush dev "$netif" + + if ! iface_has_link $netif; then +- warn "No carrier detected on interface $netif" +- return 1 ++ warn "No carrier detected" ++ warn "Trying to set $netif up..." ++ ip $1 link set dev "$netif" up ++ if ! iface_has_link $netif; then ++ warn "Failed..." ++ return 1 ++ fi + fi + +- while [ $_COUNT -lt $_DHCPRETRY ]; do +- info "Starting dhcp for interface $netif" +- dhclient "$@" \ +- ${_timeout:+-timeout $_timeout} \ +- -q \ +- -cf /etc/dhclient.conf \ +- -pf /tmp/dhclient.$netif.pid \ +- -lf /tmp/dhclient.$netif.lease \ +- $netif \ +- && return 0 +- _COUNT=$(($_COUNT+1)) +- [ $_COUNT -lt $_DHCPRETRY ] && sleep 1 +- done +- warn "dhcp for interface $netif failed" +- return 1 ++ $dhclient --test $netif > /tmp/leaseinfo.${netif}.dhcp.ipv${1:1:1} ++ dhcp_apply $1 || return $? ++ ++ echo $netif > /tmp/setup_net_${netif}.ok ++ return 0 + } + + load_ipv6() { +@@ -262,8 +333,6 @@ if [ -e /tmp/team.info ]; then + fi + fi + +-# XXX need error handling like dhclient-script +- + if [ -e /tmp/bridge.info ]; then + . /tmp/bridge.info + # start bridge if necessary +diff --git a/modules.d/40network/kill-dhclient.sh b/modules.d/40network/kill-dhclient.sh +deleted file mode 100755 +index 9a17495..0000000 +--- a/modules.d/40network/kill-dhclient.sh ++++ /dev/null +@@ -1,15 +0,0 @@ +-#!/bin/sh +- +-for f in /tmp/dhclient.*.pid; do +- [ -e $f ] || continue +- read PID < $f; +- kill $PID >/dev/null 2>&1 +-done +- +-sleep 0.1 +- +-for f in /tmp/dhclient.*.pid; do +- [ -e $f ] || continue +- read PID < $f; +- kill -9 $PID >/dev/null 2>&1 +-done +diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh +index 4bf93cc..2252995 100755 +--- a/modules.d/40network/module-setup.sh ++++ b/modules.d/40network/module-setup.sh +@@ -1,10 +1,13 @@ + #!/bin/bash + ++WICKEDD_DHCP_PATH="/usr/lib/wicked/bin" ++WICKED_EXT_PATH="/etc/wicked/extensions" ++ + # called by dracut + check() { + local _program + +- require_binaries ip arping dhclient || return 1 ++ require_binaries ip arping $WICKEDD_DHCP_PATH/wickedd-dhcp4 $WICKEDD_DHCP_PATH/wickedd-dhcp6 || return 1 + + return 255 + } +@@ -23,17 +26,18 @@ installkernel() { + # called by dracut + install() { + local _arch _i _dir +- inst_multiple ip arping dhclient sed ++ inst_multiple ip arping hostname sed + inst_multiple -o ping ping6 + inst_multiple -o brctl + inst_multiple -o teamd teamdctl teamnl + inst_simple /etc/libnl/classid ++ inst_simple "$WICKEDD_DHCP_PATH/wickedd-dhcp4" "/usr/sbin/wickedd-dhcp4" ++ inst_simple "$WICKEDD_DHCP_PATH/wickedd-dhcp6" "/usr/sbin/wickedd-dhcp6" ++ inst_libdir_file "libwicked*.so.*" ++ inst_libdir_file "libdbus-1.so.*" + inst_script "$moddir/ifup.sh" "/sbin/ifup" + inst_script "$moddir/netroot.sh" "/sbin/netroot" +- inst_script "$moddir/dhclient-script.sh" "/sbin/dhclient-script" + inst_simple "$moddir/net-lib.sh" "/lib/net-lib.sh" +- inst_simple -H "/etc/dhclient.conf" +- cat "$moddir/dhclient.conf" >> "${initdir}/etc/dhclient.conf" + inst_hook pre-udev 50 "$moddir/ifname-genrules.sh" + inst_hook pre-udev 60 "$moddir/net-genrules.sh" + inst_hook cmdline 91 "$moddir/dhcp-root.sh" +@@ -44,7 +48,6 @@ install() { + inst_hook cmdline 97 "$moddir/parse-bridge.sh" + inst_hook cmdline 98 "$moddir/parse-ip-opts.sh" + inst_hook cmdline 99 "$moddir/parse-ifname.sh" +- inst_hook cleanup 10 "$moddir/kill-dhclient.sh" + + _arch=$(uname -m) + +-- +2.6.6 + diff --git a/0016-Add-new-s390x-specific-rule-files.patch b/0016-Add-new-s390x-specific-rule-files.patch new file mode 100644 index 0000000..d1b40dc --- /dev/null +++ b/0016-Add-new-s390x-specific-rule-files.patch @@ -0,0 +1,53 @@ +From 7995f23a106e28afa0204b5eca68671cb514b1d9 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Tue, 21 Jan 2014 14:32:09 +0100 +Subject: [PATCH] Add new s390x-specific rule files + +With the new s390x configuration tool the naming of the udev +rules files have changed. So add these to the existing ones +to be compatible with existing and new installations. + +References: bnc#856585 + +Signed-off-by: Hannes Reinecke +--- + modules.d/95dasd_rules/module-setup.sh | 4 ++-- + modules.d/95zfcp_rules/module-setup.sh | 1 + + 2 files changed, 3 insertions(+), 2 deletions(-) + +Index: dracut-042/modules.d/95dasd_rules/module-setup.sh +=================================================================== +--- dracut-042.orig/modules.d/95dasd_rules/module-setup.sh 2015-06-11 17:39:47.000000000 +0200 ++++ dracut-042/modules.d/95dasd_rules/module-setup.sh 2015-06-24 18:02:06.297197575 +0200 +@@ -4,7 +4,7 @@ + check() { + local _arch=$(uname -m) + [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1 +- require_binaries dasd_configure /usr/lib/udev/collect || return 1 ++ require_binaries /usr/lib/udev/collect || return 1 + return 0 + } + +@@ -16,10 +16,10 @@ depends() { + + # called by dracut + install() { +- inst_multiple /usr/lib/udev/collect + inst_hook cmdline 30 "$moddir/parse-dasd.sh" + if [[ $hostonly ]] ; then + inst_rules_wildcard 51-dasd-*.rules ++ inst_rules_wildcard 41-s390x-dasd-*.rules + fi + inst_rules 59-dasd.rules + } +Index: dracut-042/modules.d/95zfcp_rules/module-setup.sh +=================================================================== +--- dracut-042.orig/modules.d/95zfcp_rules/module-setup.sh 2015-06-11 17:39:47.000000000 +0200 ++++ dracut-042/modules.d/95zfcp_rules/module-setup.sh 2015-06-24 18:02:06.297197575 +0200 +@@ -19,5 +19,6 @@ install() { + inst_hook cmdline 30 "$moddir/parse-zfcp.sh" + if [[ $hostonly ]] ; then + inst_rules_wildcard 51-zfcp-*.rules ++ inst_rules_wildcard 41-s390x-zfcp-*.rules + fi + } diff --git a/0017-45ifcfg-use-distro-specific-scripts.patch b/0017-45ifcfg-use-distro-specific-scripts.patch new file mode 100644 index 0000000..7ffa2b3 --- /dev/null +++ b/0017-45ifcfg-use-distro-specific-scripts.patch @@ -0,0 +1,68 @@ +From afc08d7bbee93db0b81d20aef00f538fde3209e3 Mon Sep 17 00:00:00 2001 +From: Pawel Wieczorkiewicz +Date: Tue, 8 Apr 2014 08:48:27 +0200 +Subject: 45ifcfg: use distro-specific scripts + +Detect the system flavor and write the ifcfg files accordingly. + + - Do not move ifcfg to -suse and -redhat files to avoid re-diffing after + each upgrade. Handle this in the spec file and a separate + write-ifcfg-suse.sh source file + + - Also revert upstream commit f34e1d6, to not forcibly include 45ifcfg + and thus the whole network stack (bsc#960669) + +Signed-off-by: Hannes Reinecke +Modified-by: Thomas Rennigner +Modified-by: Fabian Vogt +--- + modules.d/40network/ifup.sh | 1 + + modules.d/40network/module-setup.sh | 7 +++++++ + modules.d/45ifcfg/module-setup.sh | 1 - + 3 files changed, 8 insertions(+), 1 deletion(-) + +diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh +index 92e4b38..347c7f7 100755 +--- a/modules.d/40network/ifup.sh ++++ b/modules.d/40network/ifup.sh +@@ -189,6 +189,7 @@ do_dhcp() { + $dhclient --test $netif > /tmp/leaseinfo.${netif}.dhcp.ipv${1:1:1} + dhcp_apply $1 || return $? + ++ echo $netif > /tmp/net.${netif}.did-setup + echo $netif > /tmp/setup_net_${netif}.ok + return 0 + } +diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh +index 2252995..fa6c7fc 100755 +--- a/modules.d/40network/module-setup.sh ++++ b/modules.d/40network/module-setup.sh +@@ -15,6 +15,13 @@ check() { + # called by dracut + depends() { + echo "kernel-network-modules" ++ local link=$(readlink $moddir/write-ifcfg.sh) ++ [[ "$link" = "write-ifcfg-suse.sh" ]] && \ ++ [[ -d /etc/sysconfig/network ]] && \ ++ echo "ifcfg" ++ [[ "$link" = "write-ifcfg-redhat.sh" ]] && \ ++ [[ -d /etc/sysconfig/network-scripts ]] && \ ++ echo "ifcfg" + return 0 + } + +diff --git a/modules.d/45ifcfg/module-setup.sh b/modules.d/45ifcfg/module-setup.sh +index 6791985..60ed92b 100755 +--- a/modules.d/45ifcfg/module-setup.sh ++++ b/modules.d/45ifcfg/module-setup.sh +@@ -2,7 +2,6 @@ + + # called by dracut + check() { +- [[ -d /etc/sysconfig/network-scripts ]] && return 0 + return 255 + } + +-- +2.6.6 + diff --git a/0020-00warpclock-Set-correct-timezone.patch b/0020-00warpclock-Set-correct-timezone.patch new file mode 100644 index 0000000..22bc124 --- /dev/null +++ b/0020-00warpclock-Set-correct-timezone.patch @@ -0,0 +1,63 @@ +From 8792c2c46d3841ea11b9bd30e388eaeb64549fdc Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 5 Dec 2013 09:29:28 +0100 +Subject: [PATCH] 00warpclock: Set correct timezone + +Add module for setting correct timezone. + +References: bnc#830060 + +Signed-off-by: Hannes Reinecke +--- + modules.d/00warpclock/module-setup.sh | 22 ++++++++++++++++++++++ + modules.d/00warpclock/warpclock.sh | 9 +++++++++ + 2 files changed, 31 insertions(+) + create mode 100755 modules.d/00warpclock/module-setup.sh + create mode 100755 modules.d/00warpclock/warpclock.sh + +Index: dracut-042/modules.d/00warpclock/module-setup.sh +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ dracut-042/modules.d/00warpclock/module-setup.sh 2015-06-24 18:02:06.917232873 +0200 +@@ -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 ++ ++# called by dracut ++check() { ++ # hwclock does not exist on S390(x), bail out silently then ++ local _arch=$(uname -m) ++ [ "$_arch" = "s390" -o "$_arch" = "s390x" ] && return 1 ++ ++ [ -e /etc/localtime -a -e /etc/adjtime ] || return 1 ++ require_binaries /sbin/hwclock || return 1 ++} ++ ++# called by dracut ++depends() { ++ return 0 ++} ++ ++# called by dracut ++install() { ++ inst /usr/share/zoneinfo/UTC ++ inst /etc/localtime ++ inst /etc/adjtime ++ inst_hook pre-trigger 00 "$moddir/warpclock.sh" ++ inst /sbin/hwclock ++} +Index: dracut-042/modules.d/00warpclock/warpclock.sh +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ dracut-042/modules.d/00warpclock/warpclock.sh 2015-06-24 18:02:06.917232873 +0200 +@@ -0,0 +1,9 @@ ++#!/bin/sh ++ ++if test -e /etc/adjtime ; then ++ while read line ; do ++ if test "$line" = LOCAL ; then ++ hwclock --systz ++ fi ++ done < /etc/adjtime ++fi diff --git a/0021-95dcssblk-Add-new-module-for-DCSS-block-devices.patch b/0021-95dcssblk-Add-new-module-for-DCSS-block-devices.patch new file mode 100644 index 0000000..f87128e --- /dev/null +++ b/0021-95dcssblk-Add-new-module-for-DCSS-block-devices.patch @@ -0,0 +1,64 @@ +From c4a980a8fa7a2a9d5e25063b0d5b5070e59aa2cc Mon Sep 17 00:00:00 2001 +From: Thomas Renninger +Date: Tue, 8 Apr 2014 08:53:59 +0200 +Subject: [PATCH] 95dcssblk: Add new module for DCSS block devices + +Add s390 dcssblk driver and introduce rd.dcssblk= to pass mounts +that should get activated at initrd stage. + +References: FATE#308263 + +Signed-off-by: Hannes Reinecke +--- + modules.d/95dcssblk/module-setup.sh | 28 ++++++++++++++++++++++++++++ + modules.d/95dcssblk/parse-dcssblk.sh | 8 ++++++++ + 2 files changed, 36 insertions(+) + create mode 100755 modules.d/95dcssblk/module-setup.sh + create mode 100755 modules.d/95dcssblk/parse-dcssblk.sh + +Index: dracut-042/modules.d/95dcssblk/module-setup.sh +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ dracut-042/modules.d/95dcssblk/module-setup.sh 2015-06-24 18:02:07.217249953 +0200 +@@ -0,0 +1,28 @@ ++#!/bin/bash ++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- ++# ex: ts=8 sw=4 sts=4 et filetype=sh ++ ++# called by dracut ++check() { ++ local _arch=$(uname -m) ++ [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1 ++ return 0 ++} ++ ++# called by dracut ++installkernel() { ++ if [ -e /sys/devices/dcssblk/*/block/dcssblk* ];then ++ hostonly='' instmods dcssblk ++ fi ++} ++ ++# called by dracut ++install() { ++ inst_hook cmdline 30 "$moddir/parse-dcssblk.sh" ++ # If there is a config file which contains avail (best only of root device) ++ # disks to activate add it and use it during boot -> then we do not need ++ # a kernel param anymore ++ #if [[ $hostonly ]]; then ++ # inst /etc/dcssblk.conf ++ #fi ++} +Index: dracut-042/modules.d/95dcssblk/parse-dcssblk.sh +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ dracut-042/modules.d/95dcssblk/parse-dcssblk.sh 2015-06-24 18:02:07.217249953 +0200 +@@ -0,0 +1,8 @@ ++#!/bin/sh ++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- ++# ex: ts=8 sw=4 sts=4 et filetype=sh ++dcssblk_arg=$(getarg rd.dcssblk=) ++if [ $? == 0 ];then ++ info "Loading dcssblk segments=$dcssblk_arg" ++ modprobe dcssblk segments=$dcssblk_arg ++fi diff --git a/0048-40network-Only-enable-network-interfaces-if-explicit.patch b/0048-40network-Only-enable-network-interfaces-if-explicit.patch new file mode 100644 index 0000000..4b0b271 --- /dev/null +++ b/0048-40network-Only-enable-network-interfaces-if-explicit.patch @@ -0,0 +1,34 @@ +From 3a951a971fdaa4b51f5375d9b77af0db3c67414e Mon Sep 17 00:00:00 2001 +From: Pawel Wieczorkiewicz +Date: Tue, 27 May 2014 11:48:43 +0200 +Subject: 40network: Only enable network interfaces if explicitly requested + +Currently all available network interfaces are started whenever +40network is pulled in. This causes massive delays during bootup. +This patch modifies the behaviour to start interfaces only if +rd.neednet is specified. + +References: bnc#879038 + +Signed-off-by: Pawel Wieczorkiewicz +--- + modules.d/40network/net-genrules.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/40network/net-genrules.sh b/modules.d/40network/net-genrules.sh +index d591161..559b325 100755 +--- a/modules.d/40network/net-genrules.sh ++++ b/modules.d/40network/net-genrules.sh +@@ -94,8 +94,8 @@ command -v fix_bootif >/dev/null || . /lib/net-lib.sh + else + cond='ACTION=="add", SUBSYSTEM=="net"' + # if you change the name of "91-default-net.rules", also change modules.d/80cms/cmssetup.sh +- echo "$cond, $runcmd" > /etc/udev/rules.d/91-default-net.rules + if [ "$NEEDNET" = "1" ]; then ++ echo "$cond, $runcmd" > /etc/udev/rules.d/91-default-net.rules + echo "[ -f /tmp/net.*.did-setup ]" >$hookdir/initqueue/finished/wait-network.sh + fi + fi +-- +2.6.6 + diff --git a/0053-01fips-fixup-loading-issues.patch b/0053-01fips-fixup-loading-issues.patch new file mode 100644 index 0000000..80d99c7 --- /dev/null +++ b/0053-01fips-fixup-loading-issues.patch @@ -0,0 +1,65 @@ +From a15945f1cd7cac0ad472807ca7979726dd34288b Mon Sep 17 00:00:00 2001 +From: Marcus Meissner +Date: Mon, 2 Jun 2014 15:02:04 +0200 +Subject: [PATCH] 01fips: fixup loading issues + +Adjust the FIPS module list to avoid loading issues + +References: bnc#875855 + +Signed-off-by: Marcus Meissner +--- + modules.d/01fips/fips.sh | 12 ++++++++++++ + modules.d/01fips/module-setup.sh | 6 +++++- + 2 files changed, 17 insertions(+), 1 deletion(-) + +diff --git a/modules.d/01fips/fips.sh b/modules.d/01fips/fips.sh +index 6acdf62..835f520 100755 +--- a/modules.d/01fips/fips.sh ++++ b/modules.d/01fips/fips.sh +@@ -98,6 +98,18 @@ do_fips() + _found=1 + break + done + +81cio_ignore: handle cio_ignore commandline + +References: bnc#874902 + +Incorporates following on-top patches/fixes: +---------------------------- +Subject: 81cio_ignore: skip module if cio_ignore is not active + +When cio_ignore is not active we should skip the entire module +during boot; otherwise it'll lead to adverse effects. + +References: bnc#882685 +---------------------------- +Subject: 81cio_ignore: rewrite module + +Rewrite cio_ignore module to rely on the dracut commandline +parameter 'rd.cio_accept', which takes a comma-separated list +of CCW IDs. Each of those IDs are being removed from the +list of devices from cio_ignore. + +The default values for rd.cio_accept are taken from +/boot/zipl/active_devices.txt. + +References: bnc#882685 +----------------------------- +Subject: More empty cmdline fixes + +This fixes up some more modules which might print out empty +commandline files. + + +Signed-off-by: Thomas Renninger +Index: dracut-044/dracut.cmdline.7.asc +=================================================================== +--- dracut-044.orig/dracut.cmdline.7.asc ++++ dracut-044/dracut.cmdline.7.asc +@@ -948,6 +948,21 @@ that memory is given back to the kernel + anymore. + + ++CIO_IGNORE ++~~~~~~~~~~ ++**rd.cio_accept=**____:: ++ Remove the devices listed in from the default ++ cio_ignore kernel command-line settings. ++ is a list of comma-separated CCW device ids. ++ The default for this value is taken from the ++ _/boot/zipl/active_devices.txt_ file. +++ ++[listing] ++.Example ++-- ++rd.cio_accept=0.0.0180,0.0.0800,0.0.0801,0.0.0802 ++-- ++ + Plymouth Boot Splash + ~~~~~~~~~~~~~~~~~~~~ + **plymouth.enable=0**:: +Index: dracut-044/modules.d/81cio_ignore/module-setup.sh +=================================================================== +--- /dev/null ++++ dracut-044/modules.d/81cio_ignore/module-setup.sh +@@ -0,0 +1,40 @@ ++#!/bin/bash ++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- ++# ex: ts=8 sw=4 sts=4 et filetype=sh ++ ++# called by dracut ++check() { ++# do not add this module by default ++ local arch=$(uname -m) ++ [ "$arch" = "s390" -o "$arch" = "s390x" ] || return 1 ++ return 0 ++} ++ ++cmdline() { ++ local cio_accept ++ ++ if [ -e /boot/zipl/active_devices.txt ] ; then ++ while read dev etc ; do ++ [ "$dev" = "#" -o "$dev" = "" ] && continue; ++ if [ -z "$cio_accept" ] ; then ++ cio_accept="$dev" ++ else ++ cio_accept="${cio_accept},${dev}" ++ fi ++ done < /boot/zipl/active_devices.txt ++ fi ++ if [ -n "$cio_accept" ] ; then ++ echo "rd.cio_accept=${cio_accept}" ++ fi ++} ++ ++# called by dracut ++install() { ++ if [[ $hostonly_cmdline == "yes" ]] ; then ++ local _cio_accept=$(cmdline) ++ [[ $_cio_accept ]] && printf "%s\n" "$_cio_accept" >> "${initdir}/etc/cmdline.d/01cio_accept.conf" ++ fi ++ ++ inst_hook cmdline 20 "$moddir/parse-cio_accept.sh" ++ inst_multiple cio_ignore ++} +Index: dracut-044/modules.d/81cio_ignore/parse-cio_accept.sh +=================================================================== +--- /dev/null ++++ dracut-044/modules.d/81cio_ignore/parse-cio_accept.sh +@@ -0,0 +1,22 @@ ++#!/bin/sh ++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- ++# ex: ts=8 sw=4 sts=4 et filetype=sh ++ ++CIO_IGNORE=$(getarg cio_ignore) ++CIO_ACCEPT=$(getarg rd.cio_accept) ++ ++if [ -z $CIO_IGNORE ] ; then ++ info "cio_ignored disabled on commandline" ++ return ++fi ++if [ -n "$CIO_ACCEPT" ] ; then ++ OLDIFS="$IFS" ++ IFS=, ++ set -- $CIO_ACCEPT ++ while (($# > 0)) ; do ++ info "Enabling device $1" ++ cio_ignore --remove $1 ++ shift ++ done ++ IFS="$OLDIFS" ++fi diff --git a/0057-01fips-Include-some-more-hmacs.patch b/0057-01fips-Include-some-more-hmacs.patch new file mode 100644 index 0000000..ff3bf21 --- /dev/null +++ b/0057-01fips-Include-some-more-hmacs.patch @@ -0,0 +1,29 @@ +From b53bc39cb35dda350b0629036a3eb87d90debe56 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 12 Jun 2014 09:26:20 +0200 +Subject: 01fips: Include some more hmacs + +Include the several hmacs needed for FIPS integrity checking +of cryptsetup, libgcrypt, libfipscheck1. Also add the openssl +HMACs too as someone else seems to use those too. + +Signed-off-by: Marcus Meissner +--- + modules.d/01fips/module-setup.sh | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +Index: dracut-042/modules.d/01fips/module-setup.sh +=================================================================== +--- dracut-042.orig/modules.d/01fips/module-setup.sh 2015-06-24 18:02:07.817284113 +0200 ++++ dracut-042/modules.d/01fips/module-setup.sh 2015-06-24 18:02:08.453320321 +0200 +@@ -44,6 +44,10 @@ install() { + inst_libdir_file libsoftokn3.so libsoftokn3.so \ + libsoftokn3.chk libfreebl3.so libfreebl3.chk \ + libssl.so 'hmaccalc/sha512hmac.hmac' libssl.so.10 \ ++ .libcrypto.so.1.0.0.hmac .libssl.so.1.0.0.hmac \ ++ .libcryptsetup.so.4.5.0.hmac .libcryptsetup.so.4.hmac \ ++ .libgcrypt.so.20.hmac \ ++ .libfipscheck.so.1.hmac .libfipscheck.so.1.1.0.hmac + libfreeblpriv3.so libfreeblpriv3.chk + + # we do not use prelink at SUSE diff --git a/0058-dracut-add-warning-when-including-unsupported-module.patch b/0058-dracut-add-warning-when-including-unsupported-module.patch new file mode 100644 index 0000000..b8e8e82 --- /dev/null +++ b/0058-dracut-add-warning-when-including-unsupported-module.patch @@ -0,0 +1,125 @@ +From 5473e4b5d8d9bbf9bd995dff815647de0ed1b30b Mon Sep 17 00:00:00 2001 +From: Jeff Mahoney +Date: Thu, 12 Jun 2014 09:30:01 +0200 +Subject: dracut: add warning when including unsupported modules + +With self-built kernels (often used for debugging by both internal and +external development), it's a common mistake to not set up +Module.supported properly. As a result, modules can end up without the +supported tag. "make install" will happily build an initramfs, via +dracut, that will not boot due to the kernel refusing to load the +unsupported modules. + +This patch adds a --check-supported option to check whether all modules +added to the initramfs are marked supported and warn if they are not. +It will not cause the initramfs creation to fail. + +The option is intended to be called via /sbin/installkernel, which will +check to see if the kernel has CONFIG_SUSE_KERNEL_SUPPORTED before using +the option. + +Signed-off-by: Jeff Mahoney +--- + dracut-init.sh | 21 +++++++++++++++++++++ + dracut.8.asc | 11 +++++++++++ + dracut.sh | 5 +++++ + 3 files changed, 37 insertions(+) + +Index: dracut-044/dracut-init.sh +=================================================================== +--- dracut-044.orig/dracut-init.sh ++++ dracut-044/dracut-init.sh +@@ -849,6 +849,17 @@ for_each_module_dir() { + done + } + ++check_supported_kmod() { ++ kmod=$1 ++ supported=$(modinfo -k $kernel -F supported $kmod 2>/dev/null) ++ case "$supported" in ++ yes|external) ;; ++ *) dwarn "Module \"$(basename $kmod)\" is unsupported. This may cause" \ ++ "problems while booting." ;; ++ esac ++} ++ ++ + # Install a single kernel module along with any firmware it may require. + # $1 = full path to kernel module to install + install_kmod_with_fw() { +@@ -910,6 +921,10 @@ install_kmod_with_fw() { + fi + fi + done ++ ++ if [[ "$check_supported" = "yes" ]]; then ++ check_supported_kmod $1 ++ fi + return 0 + } + +@@ -956,6 +971,12 @@ dracut_kernel_post() { + inst_simple "$_modpath" "/lib/modules/$kernel/${_destpath}" || exit $? + done < "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist.dep" + fi ++ ++ if [[ $check_supported ]]; then ++ while read _modpath; do ++ check_supported_kmod $_modpath ++ done < "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist.dep" ++ fi + ) & + _pid=$(jobs -p | while read a || [ -n "$a" ]; do printf ":$a";done) + _pid=${_pid##*:} +Index: dracut-044/dracut.8.asc +=================================================================== +--- dracut-044.orig/dracut.8.asc ++++ dracut-044/dracut.8.asc +@@ -490,6 +490,17 @@ will not be able to boot. + Specifies the kernel image, which to include in the UEFI executable. The default is + _/lib/modules//vmlinuz_ or _/boot/vmlinuz-_ + ++**--check-supported**:: ++ The kernel may be configured to check whether a module is ++ supported by the vendor before allowing it to be loaded. On these ++ systems, it's possible to generate an initramfs image that will ++ fail to boot due to unsupported modules being refused. This ++ option enables a check that will issue a warning if a module built ++ without the support option enabled is encountered while building ++ the image. Use of this option assumes that the kernel requires ++ supported modules and will issue a warning on every module if used ++ otherwise. ++ + FILES + ----- + _/var/log/dracut.log_:: +Index: dracut-044/dracut.sh +=================================================================== +--- dracut-044.orig/dracut.sh ++++ dracut-044/dracut.sh +@@ -203,6 +203,9 @@ Creates initial ramdisk images for prelo + --printsize Print out the module install size + --sshkey [SSHKEY] Add ssh key to initramfs (use with ssh-client module) + --logfile [FILE] Logfile to use (overrides configuration setting) ++ --check-supported Check to ensure that modules are marked supported when ++ using a kernel that is configured to check the ++ support status of a module before loading. + --reproducible Create reproducible images + --no-reproducible Do not create reproducible images + --loginstall [DIR] Log all files installed from the host to [DIR] +@@ -360,6 +363,7 @@ rearrange_params() + --long noimageifnotneeded \ + --long early-microcode \ + --long no-early-microcode \ ++ --long check-supported \ + --long reproducible \ + --long no-reproducible \ + --long loginstall: \ +@@ -556,6 +560,7 @@ while :; do + --printsize) printsize="yes";; + --regenerate-all) regenerate_all="yes";; + --noimageifnotneeded) noimageifnotneeded="yes";; ++ --check-supported) check_supported="yes" ;; + --reproducible) reproducible_l="yes";; + --no-reproducible) reproducible_l="no";; + --uefi) uefi="yes";; diff --git a/0059-99suse-Add-SUSE-specific-initrd-parsing.patch b/0059-99suse-Add-SUSE-specific-initrd-parsing.patch new file mode 100644 index 0000000..31f3237 --- /dev/null +++ b/0059-99suse-Add-SUSE-specific-initrd-parsing.patch @@ -0,0 +1,84 @@ +From 1202041ec3f7b2d8dd58999e72a309c9fba9069f Mon Sep 17 00:00:00 2001 +From: Thomas Renninger +Date: Wed, 4 Jun 2014 12:56:50 +0200 +Subject: 99suse: Add SUSE-specific initrd parsing + +Add a module to implement mkinitrd-compatible kernel parameter parsing + +Signed-off-by: Thomas Renninger +--- + modules.d/99suse/module-setup.sh | 8 ++++++ + modules.d/99suse/parse-suse-initrd.sh | 51 +++++++++++++++++++++++++++++++++++ + 2 files changed, 59 insertions(+) + create mode 100755 modules.d/99suse/module-setup.sh + create mode 100755 modules.d/99suse/parse-suse-initrd.sh + +Index: dracut-042/modules.d/99suse/module-setup.sh +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ dracut-042/modules.d/99suse/module-setup.sh 2015-06-24 18:02:09.081356075 +0200 +@@ -0,0 +1,8 @@ ++#!/bin/bash ++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- ++# ex: ts=8 sw=4 sts=4 et filetype=sh ++# module-setup.sh for openSUSE / SLE initrd parameters conversion ++ ++install() { ++ inst_hook cmdline 99 "$moddir/parse-suse-initrd.sh" ++} +Index: dracut-042/modules.d/99suse/parse-suse-initrd.sh +=================================================================== +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ dracut-042/modules.d/99suse/parse-suse-initrd.sh 2015-06-24 18:02:09.081356075 +0200 +@@ -0,0 +1,51 @@ ++#!/bin/sh ++# convert openSUSE / SLE initrd command lines into dracut ones ++# linuxrc=trace shell=1 sysrq=yes sysrq=1-9 journaldev mduuid ++# TargetAddress TargetPort TargetName ++ ++# sysrq ++sysrq=$(getarg sysrq) ++if [ "$sysrq" ] && [ "$sysrq" != "no" ]; then ++ echo 1 > /proc/sys/kernel/sysrq ++ case "$sysrq" in ++ 0|1|2|3|4|5|6|7|8|9) ++ echo $sysrq > /proc/sysrq-trigger ++ ;; ++ esac ++fi ++ ++# debug ++if getarg linuxrc=trace; then ++ echo "rd.debug rd.udev.debug" >> /etc/cmdline.d/99-suse.conf ++ unset CMDLINE ++fi ++ ++# debug shell ++if getargbool 0 shell; then ++ echo "rd.break" >> /etc/cmdline.d/99-suse.conf ++ unset CMDLINE ++fi ++ ++# journaldev ++journaldev=$(getarg journaldev) ++if [ -n "$journaldev" ]; then ++ echo "root.journaldev=$journaldev" >> /etc/cmdline.d/99-suse.conf ++ unset CMDLINE ++fi ++ ++# mduuid ++mduuid=$(getarg mduuid) ++if [ -n "$mduuid" ]; then ++ echo "rd.md.uuid=$mduuid" >> /etc/cmdline.d/99-suse.conf ++ unset CMDLINE ++fi ++ ++# TargetAddress / TargetPort / TargetName ++TargetAddress=$(getarg TargetAddress) ++TargetPort=$(getarg TargetPort) ++TargetName=$(getarg TargetName) ++ ++if [ -n "$TargetAddress" -a -n "$TargetName" ]; then ++ echo "netroot=iscsi:$TargetAddress::$TargetPort::$TargetName" >> /etc/cmdline.d/99-suse.conf ++ unset CMDLINE ++fi diff --git a/0060-45ifcfg-Add-SUSE-specific-write-ifcfg-file.patch b/0060-45ifcfg-Add-SUSE-specific-write-ifcfg-file.patch new file mode 100644 index 0000000..37915b4 --- /dev/null +++ b/0060-45ifcfg-Add-SUSE-specific-write-ifcfg-file.patch @@ -0,0 +1,203 @@ +From 105e96464320c8acae22ee730717e071e156aa0b Mon Sep 17 00:00:00 2001 +From: Pawel Wieczorkiewicz +Date: Wed, 4 Jun 2014 13:00:06 +0200 +Subject: 45ifcfg: Add SUSE-specific write-ifcfg file + +Signed-off-by: Pawel Wieczorkiewicz +--- + modules.d/45ifcfg/write-ifcfg-suse.sh | 183 ++++++++++++++++++++++++++++++++++ + 1 file changed, 183 insertions(+) + create mode 100644 modules.d/45ifcfg/write-ifcfg-suse.sh + +diff --git a/modules.d/45ifcfg/write-ifcfg-suse.sh b/modules.d/45ifcfg/write-ifcfg-suse.sh +new file mode 100644 +index 0000000..4b6350f +--- /dev/null ++++ b/modules.d/45ifcfg/write-ifcfg-suse.sh +@@ -0,0 +1,183 @@ ++#!/bin/sh ++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- ++# ex: ts=8 sw=4 sts=4 et filetype=sh ++ ++# NFS root might have reached here before /tmp/net.ifaces was written ++udevadm settle --timeout=30 ++ ++if [ -e /tmp/bridge.info ]; then ++ . /tmp/bridge.info ++fi ++ ++if [ -e /tmp/vlan.info ]; then ++ . /tmp/vlan.info ++fi ++ ++mkdir -m 0755 -p /tmp/ifcfg/ ++mkdir -m 0755 -p /tmp/ifcfg-leases/ ++ ++get_vid() { ++ case "$1" in ++ vlan*) ++ echo ${1#vlan} ++ ;; ++ *.*) ++ echo ${1##*.} ++ ;; ++ esac ++} ++ ++for netup in /tmp/net.*.did-setup ; do ++ [ -f $netup ] || continue ++ ++ netif=${netup%%.did-setup} ++ netif=${netif##*/net.} ++ [ -e /tmp/ifcfg/ifcfg-$netif ] && continue ++ unset bridge ++ unset bond ++ unset bondslaves ++ unset bondname ++ unset bondoptions ++ unset uuid ++ unset ip ++ unset gw ++ unset mtu ++ unset mask ++ unset macaddr ++ unset slave ++ unset ethname ++ [ -e /tmp/bond.${netif}.info ] && . /tmp/bond.${netif}.info ++ ++ uuid=$(cat /proc/sys/kernel/random/uuid) ++ if [ "$netif" = "$bridgename" ]; then ++ bridge=yes ++ elif [ "$netif" = "$bondname" ]; then ++ # $netif can't be bridge and bond at the same time ++ bond=yes ++ fi ++ if [ "$netif" = "$vlanname" ]; then ++ vlan=yes ++ fi ++ cat /sys/class/net/$netif/address > /tmp/net.$netif.hwaddr ++ { ++ echo "# Generated by dracut initrd" ++ echo "NAME='$netif'" ++ if [ -f /tmp/net.$netif.has_ibft_config ]; then ++ echo "STARTMODE='nfsroot'" ++ else ++ echo "STARTMODE='auto'" ++ fi ++ ++ local bootproto="static" ++ if [ -f /tmp/leaseinfo.${netif}.dhcp.ipv6 ]; then ++ bootproto="dhcp6" ++ fi ++ if [ -f /tmp/leaseinfo.${netif}.dhcp.ipv4 ]; then ++ if [ "$bootproto" = "dhcp6" ]; then ++ bootproto="dhcp" ++ else ++ bootproto="dhcp4" ++ fi ++ fi ++ ++ echo "BOOTPROTO='$bootproto'" ++ ++ if [ "$bootproto" = "static" ]; then ++ # If we've booted with static ip= lines, the override file is there ++ [ -e /tmp/net.$netif.override ] && . /tmp/net.$netif.override ++ echo "IPADDR='$ip'" ++ if [ -n "$mask" ]; then ++ if strstr "$mask" "."; then ++ echo "NETMASK='$mask'" ++ else ++ echo "PREFIXLEN='$mask'" ++ fi ++ fi ++ if [ -n "$gw" ]; then ++ echo "GATEWAY='$gw'" ++ fi ++ fi ++ [ -n "$mtu" ] && echo "MTU='$mtu'" ++ } > /tmp/ifcfg/ifcfg-$netif ++ ++ # bridge needs different things written to ifcfg ++ if [ -z "$bridge" ] && [ -z "$bond" ] && [ -z "$vlan" ]; then ++ # standard interface ++ { ++ if [ -n "$macaddr" ]; then ++ echo "LLADDR='$macaddr'" ++ else ++ echo "LLADDR='$(cat /sys/class/net/$netif/address)'" ++ fi ++ echo "INTERFACETYPE='Ethernet'" ++ } >> /tmp/ifcfg/ifcfg-$netif ++ fi ++ ++ if [ -n "$vlan" ]; then ++ { ++ echo "INTERFACETYPE='Vlan'" ++ echo "VLAN_ID='$(get_vid $vlanname)'" ++ echo "ETHERDEVICE='$phydevice'" ++ } >> /tmp/ifcfg/ifcfg-$netif ++ fi ++ ++ if [ -n "$bond" ] ; then ++ # bond interface ++ { ++ # This variable is an indicator of a bond interface for initscripts ++ echo "BONDING_MASTER='yes'" ++ echo "BONDING_MODULE_OPTS='$bondoptions'" ++ echo "INTERFACETYPE='Bond'" ++ } >> /tmp/ifcfg/ifcfg-$netif ++ ++ local i=0 ++ for slave in $bondslaves ; do ++ echo "BONDING_SLAVE_$i='$slave'" >> /tmp/ifcfg/ifcfg-$netif ++ i=$((i+1)) ++ # write separate ifcfg file for the raw eth interface ++ { ++ echo "# Generated by dracut initrd" ++ echo "NAME='$slave'" ++ echo "INTERFACETYPE='Ethernet'" ++ echo "STARTMODE='hotplug'" ++ echo "BOOTPROTO='none'" ++ echo "# ETHTOOL=''" ++ } >> /tmp/ifcfg/ifcfg-$slave ++ done ++ fi ++ ++ if [ -n "$bridge" ] ; then ++ # bridge ++ { ++ echo "INTERFACETYPE='Bridge'" ++ echo "BRIDGE='yes'" ++ echo "BRIDGE_STP='off'" ++ echo "BRIDGE_FORWARDDELAY='0'" ++ echo -n "BRIDGE_PORTS='" ++ ++ } >> /tmp/ifcfg/ifcfg-$netif ++ ++ if [ "$ethname" = "$bondname" ] ; then ++ { ++ for slave in $bondslaves ; do ++ echo -n "$bondname " ++ done ++ echo "'" ++ } >> /tmp/ifcfg/ifcfg-$netif ++ else ++ echo "$ethname'" >> /tmp/ifcfg/ifcfg-$netif ++ fi ++ fi ++done ++ ++# Pass network opts ++mkdir -m 0755 -p /run/initramfs/state/etc/sysconfig/network ++mkdir -m 0755 -p /run/initramfs/state/var/run/wicked ++echo "files /etc/sysconfig/network" >> /run/initramfs/rwtab ++echo "files /var/run/wicked" >> /run/initramfs/rwtab ++{ ++ cp /tmp/net.* /run/initramfs/ ++ cp /tmp/net.$netif.resolv.conf /run/initramfs/state/etc/resolv.conf ++ copytree /tmp/ifcfg /run/initramfs/state/etc/sysconfig/network ++ cp /tmp/leaseinfo.* /run/initramfs/state/var/run/wicked/ ++} > /dev/null 2>&1 +-- +2.6.6 + diff --git a/0061-45ifcfg-Fixup-error-message-in-write-ifcfg-suse.patch b/0061-45ifcfg-Fixup-error-message-in-write-ifcfg-suse.patch new file mode 100644 index 0000000..6543410 --- /dev/null +++ b/0061-45ifcfg-Fixup-error-message-in-write-ifcfg-suse.patch @@ -0,0 +1,40 @@ +From 7104ea8c873ef89c9aacdd12a542bc71fc738aaa Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 4 Jun 2014 13:12:31 +0200 +Subject: 45ifcfg: Fixup error message in write-ifcfg-suse + +A fix was missing in write-ifcfg-suse.sh, cause dracut to issue +a warning for a non-existent file. + +References: bnc#881286 + +Signed-off-by: Hannes Reinecke +--- + modules.d/45ifcfg/write-ifcfg-suse.sh | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/modules.d/45ifcfg/write-ifcfg-suse.sh b/modules.d/45ifcfg/write-ifcfg-suse.sh +index 4b6350f..e9b4d10 100644 +--- a/modules.d/45ifcfg/write-ifcfg-suse.sh ++++ b/modules.d/45ifcfg/write-ifcfg-suse.sh +@@ -32,6 +32,7 @@ for netup in /tmp/net.*.did-setup ; do + + netif=${netup%%.did-setup} + netif=${netif##*/net.} ++ strglobin "$netif" ":*:*:*:*:" && continue + [ -e /tmp/ifcfg/ifcfg-$netif ] && continue + unset bridge + unset bond +@@ -58,7 +59,8 @@ for netup in /tmp/net.*.did-setup ; do + if [ "$netif" = "$vlanname" ]; then + vlan=yes + fi +- cat /sys/class/net/$netif/address > /tmp/net.$netif.hwaddr ++ [ -e /sys/class/net/$netif/address ] && \ ++ cat /sys/class/net/$netif/address > /tmp/net.$netif.hwaddr + { + echo "# Generated by dracut initrd" + echo "NAME='$netif'" +-- +2.6.6 + diff --git a/0075-95dasd_rules-enable-parsing-of-rd.dasd-commandline-p.patch b/0075-95dasd_rules-enable-parsing-of-rd.dasd-commandline-p.patch new file mode 100644 index 0000000..ec66907 --- /dev/null +++ b/0075-95dasd_rules-enable-parsing-of-rd.dasd-commandline-p.patch @@ -0,0 +1,58 @@ +From 1ab0a485f8e3a3b0ba62ea2f920fd3457039e7f1 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 18 Jun 2014 15:10:46 +0200 +Subject: 95dasd_rules: enable parsing of rd.dasd= commandline parameter + +Dracut documents the 'rd.dasd=' parameter, so we should be +enabling the usage of this parameter, too. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95dasd_rules/parse-dasd.sh | 37 ++++++++++++++++++++++++++++++++++++ + 1 file changed, 37 insertions(+) + +Index: dracut-042/modules.d/95dasd_rules/parse-dasd.sh +=================================================================== +--- dracut-042.orig/modules.d/95dasd_rules/parse-dasd.sh 2015-06-11 17:39:47.000000000 +0200 ++++ dracut-042/modules.d/95dasd_rules/parse-dasd.sh 2015-06-24 18:02:09.969406631 +0200 +@@ -52,3 +52,40 @@ for dasd_arg in $(getargs root=) $(getar + fi + ) + done ++ ++for dasd_arg in $(getargs rd.dasd=); do ++ ( ++ IFS="," ++ set -- $dasd_arg ++ unset IFS ++ while (($# > 0)); do ++ case $1 in ++ autodetect|probeonly) ++ shift ++ ;; ++ *-*) ++ range=$1 ++ IFS="-" ++ set -- $range ++ start=${1#0.0.} ++ shift ++ end=${1#0.0.} ++ shift ++ unset IFS ++ for dev in $(seq $(( 10#$start )) $(( 10#$end )) ) ; do ++ create_udev_rule $(printf "0.0.%04d" "$dev") ++ done ++ ;; ++ *) ++ dev=${1%(ro)} ++ if [ "$dev" != "$1" ] ; then ++ ro=1 ++ fi ++ dev=${dev#0.0.} ++ create_udev_rule $(printf "0.0.%04d" $(( 10#$dev )) ) ++ shift ++ ;; ++ esac ++ done ++ ) ++done diff --git a/0076-Correctly-set-cio_ignore-for-dynamic-s390-rules.patch b/0076-Correctly-set-cio_ignore-for-dynamic-s390-rules.patch new file mode 100644 index 0000000..963699f --- /dev/null +++ b/0076-Correctly-set-cio_ignore-for-dynamic-s390-rules.patch @@ -0,0 +1,43 @@ +From 7a725ea4a1cb606edd3f060f46818250f2a82a1a Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 18 Jun 2014 15:17:21 +0200 +Subject: Correctly set cio_ignore for dynamic s390 rules + +When converting 'rd.zfcp' and 'rd.dasd' into udev rules we +need to make sure the enable those device ids via cio_ignore, +otherwise the rules might never be called. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95dasd_rules/parse-dasd.sh | 3 +++ + modules.d/95zfcp_rules/parse-zfcp.sh | 3 +++ + 2 files changed, 6 insertions(+) + +Index: dracut-042/modules.d/95dasd_rules/parse-dasd.sh +=================================================================== +--- dracut-042.orig/modules.d/95dasd_rules/parse-dasd.sh 2015-06-24 18:02:09.969406631 +0200 ++++ dracut-042/modules.d/95dasd_rules/parse-dasd.sh 2015-06-24 18:02:10.257423027 +0200 +@@ -36,6 +36,9 @@ ACTION=="add", SUBSYSTEM=="ccw", KERNEL= + ACTION=="add", SUBSYSTEM=="drivers", KERNEL=="$_drv", IMPORT{program}="collect $ccw %k ${ccw} $_drv" + ACTION=="add", ENV{COLLECT_$ccw}=="0", ATTR{[ccw/$ccw]online}="1" + EOF ++ if [ -x /sbin/cio_ignore ] && ! cio_ignore -i $ccw > /dev/null ; then ++ cio_ignore -r $ccw ++ fi + } + + for dasd_arg in $(getargs root=) $(getargs resume=); do +Index: dracut-042/modules.d/95zfcp_rules/parse-zfcp.sh +=================================================================== +--- dracut-042.orig/modules.d/95zfcp_rules/parse-zfcp.sh 2015-06-11 17:39:47.000000000 +0200 ++++ dracut-042/modules.d/95zfcp_rules/parse-zfcp.sh 2015-06-24 18:02:10.257423027 +0200 +@@ -35,6 +35,9 @@ EOF + ACTION=="add", KERNEL=="rport-*", ATTR{port_name}=="$wwpn", SUBSYSTEMS=="ccw", KERNELS=="$ccw", ATTR{[ccw/$ccw]$wwpn/unit_add}="$lun" + EOF + fi ++ if [ -x /sbin/cio_ignore ] && ! cio_ignore -i $ccw > /dev/null ; then ++ cio_ignore -r $ccw ++ fi + } + + for zfcp_arg in $(getargs rd.zfcp); do diff --git a/0079-95dasd_rules-fixup-rd.dasd-parsing.patch b/0079-95dasd_rules-fixup-rd.dasd-parsing.patch new file mode 100644 index 0000000..756298a --- /dev/null +++ b/0079-95dasd_rules-fixup-rd.dasd-parsing.patch @@ -0,0 +1,68 @@ +From b302dd2a53864bdd4ff271275fa244f654cb92ca Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 26 Jun 2014 10:49:03 +0200 +Subject: 95dasd_rules: fixup rd.dasd parsing + +There were some errors when rd.dasd parsing, resulting in the +device never to be activated. And we should check for +cio_ignore even if a udev rules has been found. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95dasd_rules/parse-dasd.sh | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +Index: dracut-042/modules.d/95dasd_rules/parse-dasd.sh +=================================================================== +--- dracut-042.orig/modules.d/95dasd_rules/parse-dasd.sh 2015-06-24 18:02:10.257423027 +0200 ++++ dracut-042/modules.d/95dasd_rules/parse-dasd.sh 2015-06-24 18:02:10.589441929 +0200 +@@ -29,6 +29,10 @@ create_udev_rule() { + esac + [ -z "${_drv}" ] && return 0 + ++ if [ -x /sbin/cio_ignore ] && cio_ignore -i $ccw > /dev/null ; then ++ cio_ignore -r $ccw ++ fi ++ + [ -e ${_rule} ] && return 0 + + cat > $_rule < /dev/null ; then +- cio_ignore -r $ccw +- fi + } + + for dasd_arg in $(getargs root=) $(getargs resume=); do +@@ -46,7 +47,7 @@ for dasd_arg in $(getargs root=) $(getar + case $dasd_arg in + /dev/disk/by-path/ccw-*) + ccw_arg=${dasd_arg##*/} +- break; ++ ;; + esac + if [ -n "$ccw_arg" ] ; then + IFS="-" +@@ -75,8 +76,8 @@ for dasd_arg in $(getargs rd.dasd=); do + end=${1#0.0.} + shift + unset IFS +- for dev in $(seq $(( 10#$start )) $(( 10#$end )) ) ; do +- create_udev_rule $(printf "0.0.%04d" "$dev") ++ for dev in $(seq $(( 16#$start )) $(( 16#$end )) ) ; do ++ create_udev_rule $(printf "0.0.%04x" "$dev") + done + ;; + *) +@@ -85,7 +86,7 @@ for dasd_arg in $(getargs rd.dasd=); do + ro=1 + fi + dev=${dev#0.0.} +- create_udev_rule $(printf "0.0.%04d" $(( 10#$dev )) ) ++ create_udev_rule $(printf "0.0.%04x" $(( 16#$dev )) ) + shift + ;; + esac diff --git a/0080-95dasd_rules-print-out-rd.dasd-commandline.patch b/0080-95dasd_rules-print-out-rd.dasd-commandline.patch new file mode 100644 index 0000000..c18b9ec --- /dev/null +++ b/0080-95dasd_rules-print-out-rd.dasd-commandline.patch @@ -0,0 +1,71 @@ +From 3e2e526a74cdad48d40a1ec58dac9f709d8fef0e Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 26 Jun 2014 10:50:43 +0200 +Subject: 95dasd_rules: print out 'rd.dasd' commandline + +When a DASD is found to be required for the rootfs we should +be printing out a 'rd.dasd' commandline parameter. This not +only enables us to correctly enable the device with cio_ignore, +we can also inspect the resulting initrd to figure out which +devices are required to mount the rootfs. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95dasd_rules/module-setup.sh | 33 +++++++++++++++++++++++++++++++++ + 1 file changed, 33 insertions(+) + +Index: dracut-042/modules.d/95dasd_rules/module-setup.sh +=================================================================== +--- dracut-042.orig/modules.d/95dasd_rules/module-setup.sh 2015-06-24 18:02:06.297197575 +0200 ++++ dracut-042/modules.d/95dasd_rules/module-setup.sh 2015-06-24 18:02:10.881458552 +0200 +@@ -1,10 +1,39 @@ + #!/bin/bash + + # called by dracut ++cmdline() { ++ is_dasd() { ++ local _dev=$1 ++ local _devpath=$(cd -P /sys/dev/block/$_dev ; echo $PWD) ++ ++ [ "${_devpath#*/dasd}" == "$_devpath" ] && return 1 ++ _ccw="${_devpath%%/block/*}" ++ echo "rd.dasd=${_ccw##*/}" ++ return 0 ++ } ++ [[ $hostonly ]] || [[ $mount_needs ]] && { ++ for_each_host_dev_and_slaves is_dasd || return 255 ++ } ++} ++ ++# called by dracut + check() { + local _arch=$(uname -m) ++ local found=0 ++ local bdev + [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1 + require_binaries /usr/lib/udev/collect || return 1 ++ ++ [[ $hostonly ]] || [[ $mount_needs ]] && { ++ for bdev in /sys/block/* ; do ++ case "${bdev##*/}" in ++ dasd*) ++ found=$(($found+1)); ++ break; ++ esac ++ done ++ [ $found -eq 0 ] && return 255 ++ } + return 0 + } + +@@ -17,6 +46,10 @@ depends() { + # called by dracut + install() { + inst_hook cmdline 30 "$moddir/parse-dasd.sh" ++ if [[ $hostonly_cmdline == "yes" ]] ; then ++ local _dasd=$(cmdline) ++ [[ $_dasd ]] && printf "%s\n" "$_dasd" >> "${initdir}/etc/cmdline.d/95dasd.conf" ++ fi + if [[ $hostonly ]] ; then + inst_rules_wildcard 51-dasd-*.rules + inst_rules_wildcard 41-s390x-dasd-*.rules diff --git a/0081-95dasd_mod-do-not-set-module-parameters-if-dasd_cio_.patch b/0081-95dasd_mod-do-not-set-module-parameters-if-dasd_cio_.patch new file mode 100644 index 0000000..cb8d38e --- /dev/null +++ b/0081-95dasd_mod-do-not-set-module-parameters-if-dasd_cio_.patch @@ -0,0 +1,27 @@ +From 95dc2742b9304029068a2b320e011bdfcc4087ea Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 26 Jun 2014 10:53:01 +0200 +Subject: 95dasd_mod: do not set module parameters if dasd_cio_free is not + present + +We're now parsing the 'rd.dasd' parameter from 95dasd_rules, so +setting the 'dasd_mod' module parameter should be dropped here. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95dasd_mod/parse-dasd-mod.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: dracut-042/modules.d/95dasd_mod/parse-dasd-mod.sh +=================================================================== +--- dracut-042.orig/modules.d/95dasd_mod/parse-dasd-mod.sh 2015-06-11 17:39:47.000000000 +0200 ++++ dracut-042/modules.d/95dasd_mod/parse-dasd-mod.sh 2015-06-24 18:02:11.169474949 +0200 +@@ -7,7 +7,7 @@ done + + mod_args="${mod_args#*,}" + +-if [ -n "$mod_args" ]; then ++if [ -x /sbin/dasd_cio_free -a -n "$mod_args" ]; then + [ -d /etc/modprobe.d ] || mkdir -m 0755 -p /etc/modprobe.d + echo "options dasd_mod dasd=$mod_args" >> /etc/modprobe.d/dasd_mod.conf + fi diff --git a/0083-95zfcp_rules-Fixup-rd.zfcp-parsing.patch b/0083-95zfcp_rules-Fixup-rd.zfcp-parsing.patch new file mode 100644 index 0000000..be93efd --- /dev/null +++ b/0083-95zfcp_rules-Fixup-rd.zfcp-parsing.patch @@ -0,0 +1,57 @@ +From 90b21dafd469ce4a8ac56944ce825f90c0782b16 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 26 Jun 2014 11:52:29 +0200 +Subject: 95zfcp_rules: Fixup rd.zfcp parsing + +There were some errors when parsing rd.zfcp, causing the device +never to be activated. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95zfcp_rules/parse-zfcp.sh | 11 +++++------ + 1 file changed, 5 insertions(+), 6 deletions(-) + +Index: dracut-042/modules.d/95zfcp_rules/parse-zfcp.sh +=================================================================== +--- dracut-042.orig/modules.d/95zfcp_rules/parse-zfcp.sh 2015-06-24 18:02:10.257423027 +0200 ++++ dracut-042/modules.d/95zfcp_rules/parse-zfcp.sh 2015-06-24 18:02:11.461491574 +0200 +@@ -5,9 +5,7 @@ create_udev_rule() { + local wwpn=$2 + local lun=$3 + local _rule=/etc/udev/rules.d/51-zfcp-${ccw}.rules +- + local _cu_type _dev_type +- local _rule=/etc/udev/rules.d/51-zfcp-${ccw}.rules + + if [ -e /sys/bus/ccw/devices/${ccw} ] ; then + read _cu_type < /sys/bus/ccw/devices/${ccw}/cutype +@@ -20,6 +18,10 @@ create_udev_rule() { + return 0; + fi + ++ if [ -x /sbin/cio_ignore ] && cio_ignore -i $ccw > /dev/null ; then ++ cio_ignore -r $ccw ++ fi ++ + [ -e ${_rule} ] && return 0 + + if [ ! -f "$_rule" ] ; then +@@ -35,9 +37,6 @@ EOF + ACTION=="add", KERNEL=="rport-*", ATTR{port_name}=="$wwpn", SUBSYSTEMS=="ccw", KERNELS=="$ccw", ATTR{[ccw/$ccw]$wwpn/unit_add}="$lun" + EOF + fi +- if [ -x /sbin/cio_ignore ] && ! cio_ignore -i $ccw > /dev/null ; then +- cio_ignore -r $ccw +- fi + } + + for zfcp_arg in $(getargs rd.zfcp); do +@@ -53,7 +52,7 @@ for zfcp_arg in $(getargs root=) $(getar + case $zfcp_arg in + /dev/disk/by-path/ccw-*) + ccw_arg=${zfcp_arg##*/} +- break; ++ ;; + esac + if [ -n "$ccw_arg" ] ; then + IFS="-" diff --git a/0085-95zfcp_rules-print-out-rd.zfcp-commandline-parameter.patch b/0085-95zfcp_rules-print-out-rd.zfcp-commandline-parameter.patch new file mode 100644 index 0000000..d093faf --- /dev/null +++ b/0085-95zfcp_rules-print-out-rd.zfcp-commandline-parameter.patch @@ -0,0 +1,73 @@ +From 3d918eb5be673f243dc75b358a35e1ed307f0ea5 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 26 Jun 2014 13:44:05 +0200 +Subject: 95zfcp_rules: print out rd.zfcp commandline parameter + +When called with '--hostonly-cmdline' the module should print +out the configuration. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95zfcp_rules/module-setup.sh | 39 +++++++++++++++++++++++++++++++++- + 1 file changed, 38 insertions(+), 1 deletion(-) + +Index: dracut-042/modules.d/95zfcp_rules/module-setup.sh +=================================================================== +--- dracut-042.orig/modules.d/95zfcp_rules/module-setup.sh 2015-06-24 18:02:06.297197575 +0200 ++++ dracut-042/modules.d/95zfcp_rules/module-setup.sh 2015-06-24 18:02:11.753508198 +0200 +@@ -1,10 +1,40 @@ + #!/bin/bash + + # called by dracut ++cmdline() { ++ is_zfcp() { ++ local _dev=$1 ++ local _devpath=$(cd -P /sys/dev/block/$_dev ; echo $PWD) ++ local _sdev _lun _wwpn _ccw ++ ++ [ "${_devpath#*/sd}" == "$_devpath" ] && return 1 ++ _sdev="${_devpath%%/block/*}" ++ [ -e ${_sdev}/fcp_lun ] || return 1 ++ _lun=$(cat ${_sdev}/fcp_lun) ++ _wwpn=$(cat ${_sdev}/wwpn) ++ _ccw=$(cat ${_sdev}/hba_id) ++ echo "rd.zfcp=${_ccw},${_wwpn},${_lun}" ++ return 1 ++ } ++ [[ $hostonly ]] || [[ $mount_needs ]] && { ++ for_each_host_dev_and_slaves is_zfcp ++ } ++} ++ ++# called by dracut + check() { + local _arch=$(uname -m) ++ local _ccw + [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1 +- require_binaries zfcp_disk_configure /usr/lib/udev/collect || return 1 ++ require_binaries /usr/lib/udev/collect || return 1 ++ ++ [[ $hostonly ]] || [[ $mount_needs ]] && { ++ for _ccw in /sys/bus/ccw/devices/*/host* ; do ++ [ -d "$_ccw" ] || continue ++ found=$(($found+1)); ++ done ++ [ $found -eq 0 ] && return 255 ++ } + return 0 + } + +@@ -17,6 +47,13 @@ depends() { + install() { + inst_multiple /usr/lib/udev/collect + inst_hook cmdline 30 "$moddir/parse-zfcp.sh" ++ if [[ $hostonly_cmdline == "yes" ]] ; then ++ local _zfcp ++ ++ for _zfcp in $(cmdline) ; do ++ printf "%s\n" "$zfcp" >> "${initdir}/etc/cmdline.d/94zfcp.conf" ++ done ++ fi + if [[ $hostonly ]] ; then + inst_rules_wildcard 51-zfcp-*.rules + inst_rules_wildcard 41-s390x-zfcp-*.rules diff --git a/0086-95zfcp_rules-Auto-generate-udev-rule-for-ipl-device.patch b/0086-95zfcp_rules-Auto-generate-udev-rule-for-ipl-device.patch new file mode 100644 index 0000000..60f0c91 --- /dev/null +++ b/0086-95zfcp_rules-Auto-generate-udev-rule-for-ipl-device.patch @@ -0,0 +1,56 @@ +From 754bda4bcf9698837802b31bd74061702edf6c8c Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 26 Jun 2014 14:01:33 +0200 +Subject: 95zfcp_rules: Auto-generate udev rule for ipl device + +We should auto-generate an udev rule for the ipl device; it'll be +enabled anyway. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95zfcp_rules/parse-zfcp.sh | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +Index: dracut-042/modules.d/95zfcp_rules/parse-zfcp.sh +=================================================================== +--- dracut-042.orig/modules.d/95zfcp_rules/parse-zfcp.sh 2015-06-24 18:02:11.461491574 +0200 ++++ dracut-042/modules.d/95zfcp_rules/parse-zfcp.sh 2015-06-24 18:02:12.041524595 +0200 +@@ -39,6 +39,17 @@ EOF + fi + } + ++if [[ -f /sys/firmware/ipl/ipl_type && ++ $( +Date: Thu, 26 Jun 2014 14:04:19 +0200 +Subject: 95dasd_rules: Auto-generate udev rule for ipl device + +We should be generating a udev rule for the ipl device; it'll +be enabled anyway. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95dasd_rules/parse-dasd.sh | 9 +++++++++ + 1 file changed, 9 insertions(+) + +Index: dracut-042/modules.d/95dasd_rules/parse-dasd.sh +=================================================================== +--- dracut-042.orig/modules.d/95dasd_rules/parse-dasd.sh 2015-06-24 18:02:10.589441929 +0200 ++++ dracut-042/modules.d/95dasd_rules/parse-dasd.sh 2015-06-24 18:02:12.329540991 +0200 +@@ -42,6 +42,15 @@ ACTION=="add", ENV{COLLECT_$ccw}=="0", A + EOF + } + ++if [[ -f /sys/firmware/ipl/ipl_type && ++ $( +Date: Fri, 27 Jun 2014 11:43:28 +0200 +Subject: 91zipl: Add new module to update s390x configuration + +Add new module to update the dracut commandline values +during booting with the values found in the file +dracut-cmdline.conf on the device specified by +rd.zipl. + +Signed-off-by: Hannes Reinecke +--- + dracut.cmdline.7.asc | 14 ++++++++++ + modules.d/91zipl/install_zipl_cmdline.sh | 33 +++++++++++++++++++++++ + modules.d/91zipl/module-setup.sh | 45 ++++++++++++++++++++++++++++++++ + modules.d/91zipl/parse-zipl.sh | 41 +++++++++++++++++++++++++++++ + 4 files changed, 133 insertions(+) + create mode 100644 modules.d/91zipl/install_zipl_cmdline.sh + create mode 100644 modules.d/91zipl/module-setup.sh + create mode 100644 modules.d/91zipl/parse-zipl.sh + +Index: dracut-044/dracut.cmdline.7.asc +=================================================================== +--- dracut-044.orig/dracut.cmdline.7.asc ++++ dracut-044/dracut.cmdline.7.asc +@@ -963,6 +963,20 @@ CIO_IGNORE + rd.cio_accept=0.0.0180,0.0.0800,0.0.0801,0.0.0802 + -- + ++ZIPL ++~~~~ ++**rd.zipl=**____:: ++ Update the dracut commandline with the values found in the ++ _dracut-cmdline.conf_ file on the given device. ++ The values are merged into the existing commandline values ++ and the udev events are regenerated. +++ ++[listing] ++.Example ++-- ++rd.zipl=UUID=0fb28157-99e3-4395-adef-da3f7d44835a ++-- ++ + Plymouth Boot Splash + ~~~~~~~~~~~~~~~~~~~~ + **plymouth.enable=0**:: +Index: dracut-044/modules.d/91zipl/install_zipl_cmdline.sh +=================================================================== +--- /dev/null ++++ dracut-044/modules.d/91zipl/install_zipl_cmdline.sh +@@ -0,0 +1,33 @@ ++#!/bin/bash ++ ++DEV=$1 ++MNT=/boot/zipl ++ ++if [ -z "$DEV" ] ; then ++ echo "No IPL device given" ++ > /tmp/install.zipl.cmdline-done ++ exit 1 ++fi ++ ++[ -d ${MNT} ] || mkdir -p ${MNT} ++ ++mount -o ro ${DEV} ${MNT} ++if [ "$?" != "0" ] ; then ++ echo "Failed to mount ${MNT}" ++ > /tmp/install.zipl.cmdline-done ++ exit 1 ++fi ++ ++if [ -f ${MNT}/dracut-cmdline.conf ] ; then ++ cp ${MNT}/dracut-cmdline.conf /etc/cmdline.d/99zipl.conf ++fi ++ ++umount ${MNT} ++ ++if [ -f /etc/cmdline.d/99zipl.conf ] ; then ++ systemctl restart dracut-cmdline.service ++ systemctl restart systemd-udev-trigger.service ++fi ++> /tmp/install.zipl.cmdline-done ++ ++exit 0 +Index: dracut-044/modules.d/91zipl/module-setup.sh +=================================================================== +--- /dev/null ++++ dracut-044/modules.d/91zipl/module-setup.sh +@@ -0,0 +1,45 @@ ++#!/bin/bash ++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- ++# ex: ts=8 sw=4 sts=4 et filetype=sh ++ ++# called by dracut ++check() { ++ local _arch=$(uname -m) ++ [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1 ++ return 0 ++} ++ ++# called by dracut ++depends() { ++ echo grub2 ++ return 0 ++} ++ ++# called by dracut ++installkernel() { ++ instmods ext2 ++} ++ ++# called by dracut ++cmdline() { ++ local _boot_zipl ++ ++ _boot_zipl=$(sed -n 's/\(.*\)\w*\/boot\/zipl.*/\1/p' /etc/fstab) ++ if [ -n "$_boot_zipl" ] ; then ++ echo "rd.zipl=${_boot_zipl}" ++ fi ++} ++ ++# called by dracut ++install() { ++ inst_multiple mount umount ++ ++ inst_hook cmdline 91 "$moddir/parse-zipl.sh" ++ inst "${moddir}/install_zipl_cmdline.sh" /sbin/install_zipl_cmdline.sh ++ if [[ $hostonly_cmdline == "yes" ]] ; then ++ local _zipl=$(cmdline) ++ ++ [[ $_zipl ]] && printf "%s\n" "$_zipl" ++ fi ++ dracut_need_initqueue ++} +Index: dracut-044/modules.d/91zipl/parse-zipl.sh +=================================================================== +--- /dev/null ++++ dracut-044/modules.d/91zipl/parse-zipl.sh +@@ -0,0 +1,41 @@ ++#!/bin/sh ++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- ++# ex: ts=8 sw=4 sts=4 et filetype=sh ++ ++zipl_arg=$(getarg rd.zipl) ++ ++if [ -n "$zipl_arg" ] ; then ++ case "$zipl_arg" in ++ LABEL=*) \ ++ zipl_env="ENV{ID_FS_LABEL}" ++ zipl_val=${zipl_arg#LABEL=} ++ zipl_arg="/dev/disk/by-label/${zipl_val}" ++ ;; ++ UUID=*) \ ++ zipl_env="ENV{ID_FS_UUID}" ++ zipl_val=${zipl_arg#UUID=} ++ zipl_arg="/dev/disk/by-uuid/${zipl_val}" ++ ;; ++ /dev/mapper/*) \ ++ zipl_env="ENV{DM_NAME}" ++ zipl_val=${zipl_arg#/dev/mapper/} ++ ;; ++ /dev/disk/by-*) \ ++ zipl_env="SYMLINK" ++ zipl_val=${zipl_arg#/dev/} ++ ;; ++ /dev/*) \ ++ zipl_env="KERNEL" ++ zipl_val=${zipl_arg} ++ ;; ++ esac ++ if [ "$zipl_env" ] ; then ++ { ++ printf 'ACTION=="add|change", SUBSYSTEM=="block", %s=="%s", RUN+="/sbin/initqueue --settled --onetime --unique /sbin/install_zipl_cmdline.sh %s"\n' \ ++ ${zipl_env} ${zipl_val} ${zipl_arg} ++ echo "[ -f /tmp/install.zipl.cmdline-done ]" >$hookdir/initqueue/finished/wait-zipl-conf.sh ++ } >> /etc/udev/rules.d/99zipl-conf.rules ++ cat /etc/udev/rules.d/99zipl-conf.rules ++ fi ++ wait_for_dev -n "$zipl_arg" ++fi diff --git a/0089-40network-create-var-lib-wicked-in-ifup.sh.patch b/0089-40network-create-var-lib-wicked-in-ifup.sh.patch new file mode 100644 index 0000000..9175427 --- /dev/null +++ b/0089-40network-create-var-lib-wicked-in-ifup.sh.patch @@ -0,0 +1,31 @@ +From 16a940a8fb1fe6697474dc4abb1ce5b5ee281068 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Tue, 1 Jul 2014 08:15:00 +0200 +Subject: 40network: create /var/lib/wicked in ifup.sh + +wicked requires the /var/lib/wicked directory to be present. +This is just a work-around; it should be fixed in wicked itself. + +References: bnc#885141 + +Signed-off-by: Hannes Reinecke +--- + modules.d/40network/ifup.sh | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh +index 347c7f7..c7279df 100755 +--- a/modules.d/40network/ifup.sh ++++ b/modules.d/40network/ifup.sh +@@ -18,6 +18,8 @@ netif=$1 + use_bridge='false' + use_vlan='false' + ++[ -d /var/lib/wicked ] || mkdir -p /var/lib/wicked ++ + # enslave this interface to bond? + for i in /tmp/bond.*.info; do + [ -e "$i" ] || continue +-- +2.6.6 + diff --git a/0090-dracut-caps-Remove-whole-caps-module.patch b/0090-dracut-caps-Remove-whole-caps-module.patch new file mode 100644 index 0000000..6ba894d --- /dev/null +++ b/0090-dracut-caps-Remove-whole-caps-module.patch @@ -0,0 +1,125 @@ +From dccbc0fc7f1b814ad8a03f380a31bed2c9d86a9b Mon Sep 17 00:00:00 2001 +From: Thomas Renninger +Date: Tue, 1 Jul 2014 13:53:43 +0200 +Subject: dracut: caps: Remove whole caps module + +To get installed it must not have systemd included in initramfs which is +an unsupported scenario for SUSE. +This gets also rid of the error in its check function. + +Signed-off-by: Thomas Renninger +--- + modules.d/02caps/README | 33 --------------------------------- + modules.d/02caps/caps.sh | 36 ------------------------------------ + modules.d/02caps/module-setup.sh | 26 -------------------------- + 3 files changed, 95 deletions(-) + delete mode 100644 modules.d/02caps/README + delete mode 100755 modules.d/02caps/caps.sh + delete mode 100755 modules.d/02caps/module-setup.sh + +Index: dracut-042/modules.d/02caps/README +=================================================================== +--- dracut-042.orig/modules.d/02caps/README 2015-06-11 17:39:47.000000000 +0200 ++++ /dev/null 1970-01-01 00:00:00.000000000 +0000 +@@ -1,33 +0,0 @@ +-This adds the following parameters: +-rd.caps=1 +- turn the caps module on/off +-rd.caps.initdrop=cap_sys_module,cap_sys_rawio +- drop the specified comma separated capabilities +-rd.caps.disablemodules=1 +- turn off module loading +-rd.caps.disablekexec=1 +- turn off the kexec functionality +- +-If module loading is turned off, all modules have to be loaded in the +-initramfs, which are used later on. This can be done with +-"rd.driver.pre=" +-rd.driver.pre=autofs4,sunrpc,ipt_REJECT,nf_conntrack_ipv4,.... +- +-Because the kernel command line would get huge with all those drivers, I +-recommend to make use of $initramfs/etc/cmdline. +- +-So, all rd.caps.* and rd.driver.pre arguments are in caps.conf can be +-copied to $initramfs/etc/cmdline with "-i caps.conf /etc/cmdline". +- +-Also all modules have to be loaded in the initramfs via "--add-drivers". +- +-The resulting initramfs creation would look like this: +- +- --add-drivers "autofs4 sunrpc ipt_REJECT nf_conntrack_ipv4 \ +- nf_defrag_ipv4 iptable_filter ip_tables +- ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 xt_state nf_conntrack +- ip6table_filter ip6_tables dm_mirror dm_region_hash dm_log uinput ppdev +- parport_pc parport ipv6 sg 8139too 8139cp mii i2c_piix4 i2c_core ext3 +- jbd mbcache sd_mod crc_t10dif sr_mod cdrom ata_generic pata_acpi ata_piix +- dm_mod" \ +- /boot/initramfs-caps.img +Index: dracut-042/modules.d/02caps/module-setup.sh +=================================================================== +--- dracut-042.orig/modules.d/02caps/module-setup.sh 2015-06-11 17:39:47.000000000 +0200 ++++ /dev/null 1970-01-01 00:00:00.000000000 +0000 +@@ -1,24 +0,0 @@ +-#!/bin/bash +- +-# called by dracut +-check() { +- require_binaries capsh +-} +- +-# called by dracut +-depends() { +- return 0 +-} +- +-# called by dracut +-install() { +- if ! dracut_module_included "systemd"; then +- inst_hook pre-pivot 00 "$moddir/caps.sh" +- inst $(type -P capsh 2>/dev/null) /usr/sbin/capsh +- # capsh wants bash and we need bash also +- inst /bin/bash +- else +- dwarning "caps: does not work with systemd in the initramfs" +- fi +-} +- +Index: dracut-042/modules.d/02caps/caps.sh +=================================================================== +--- dracut-042.orig/modules.d/02caps/caps.sh 2015-06-11 17:39:47.000000000 +0200 ++++ /dev/null 1970-01-01 00:00:00.000000000 +0000 +@@ -1,34 +0,0 @@ +-#!/bin/bash +- +-capsmode=$(getarg rd.caps) +- +-if [ "$capsmode" = "1" ]; then +- CAPS_INIT_DROP=$(getarg rd.caps.initdrop=) +- CAPS_USERMODEHELPER_BSET=$(capsh --drop="$CAPS_INIT_DROP" -- -c 'while read a b || [ -n "$a" ]; do [ "$a" = "CapBnd:" ] && echo $((0x${b:$((${#b}-8)):8})) $((0x${b:$((${#b}-16)):8})) && break; done < /proc/self/status') +- CAPS_MODULES_DISABLED=$(getarg rd.caps.disablemodules=) +- CAPS_KEXEC_DISABLED=$(getarg rd.caps.disablekexec=) +- +- info "Loading CAPS_MODULES $CAPS_MODULES" +- for i in $CAPS_MODULES;do modprobe $i 2>&1 >/dev/null | vinfo; done +- +- if [ "$CAPS_MODULES_DISABLED" = "1" -a -e /proc/sys/kernel/modules_disabled ]; then +- info "Disabling module loading." +- echo $CAPS_MODULES_DISABLED > /proc/sys/kernel/modules_disabled +- fi +- +- if [ "$CAPS_KEXEC_DISABLED" = "1" -a -e /proc/sys/kernel/kexec_disabled ]; then +- info "Disabling kexec." +- echo $CAPS_KEXEC_DISABLED > /proc/sys/kernel/kexec_disabled +- fi +- +- info "CAPS_USERMODEHELPER_BSET=$CAPS_USERMODEHELPER_BSET" +- if [ -e /proc/sys/kernel/usermodehelper/bset ]; then +- info "Setting usermode helper bounding set." +- echo $CAPS_USERMODEHELPER_BSET > /proc/sys/kernel/usermodehelper/bset +- echo $CAPS_USERMODEHELPER_BSET > /proc/sys/kernel/usermodehelper/inheritable +- fi +- +- echo "CAPS_INIT_DROP=\"$CAPS_INIT_DROP\"" > /etc/capsdrop +- info "Will drop capabilities $CAPS_INIT_DROP from init." +-fi +- diff --git a/0091-dracut-biosdevname-In-SUSE-biosdevname-package-is-in.patch b/0091-dracut-biosdevname-In-SUSE-biosdevname-package-is-in.patch new file mode 100644 index 0000000..3104ac6 --- /dev/null +++ b/0091-dracut-biosdevname-In-SUSE-biosdevname-package-is-in.patch @@ -0,0 +1,28 @@ +From edfae68d9a9af81cd1ff230b72b9c320d4c58e82 Mon Sep 17 00:00:00 2001 +From: Thomas Renninger +Date: Tue, 1 Jul 2014 13:53:57 +0200 +Subject: dracut: biosdevname: In SUSE biosdevname package is installed on + relevant platforms + +all others should not add biosdevname on purpose. Do not complain about it. + + +Signed-off-by: Thomas Renninger +--- + modules.d/97biosdevname/module-setup.sh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +Index: dracut-042/modules.d/97biosdevname/module-setup.sh +=================================================================== +--- dracut-042.orig/modules.d/97biosdevname/module-setup.sh 2015-06-11 17:39:47.000000000 +0200 ++++ dracut-042/modules.d/97biosdevname/module-setup.sh 2015-06-24 18:02:13.557610904 +0200 +@@ -3,7 +3,8 @@ + # called by dracut + check() { + [[ "$mount_needs" ]] && return 1 +- require_binaries biosdevname || return 1 ++ # Include biosdevname if the binary is installed ++ type -P biosdevname >/dev/null || return 1 + return 0 + } + diff --git a/0094-Implement-shortcut-ip-ifname-static-for-static-confi.patch b/0094-Implement-shortcut-ip-ifname-static-for-static-confi.patch new file mode 100644 index 0000000..59d42a8 --- /dev/null +++ b/0094-Implement-shortcut-ip-ifname-static-for-static-confi.patch @@ -0,0 +1,83 @@ +From a345cf3c3d7c15cfca5735c531f825062235c135 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 2 Jul 2014 11:20:22 +0200 +Subject: Implement shortcut 'ip=:static' for static configuration + +To simplify static configurate we should be pulling in the +existing 'ifcfg' files when running in hostonly mode. +With that we can implement the shortcut 'ip=:static' +to use the existing configuration from the ifcfg file. + +Signed-off-by: Hannes Reinecke +--- + modules.d/40network/ifup.sh | 14 +++++++++++++- + modules.d/40network/module-setup.sh | 4 ++++ + modules.d/40network/parse-ip-opts.sh | 8 +++++++- + 3 files changed, 24 insertions(+), 2 deletions(-) + +Index: dracut-044/modules.d/40network/ifup.sh +=================================================================== +--- dracut-044.orig/modules.d/40network/ifup.sh ++++ dracut-044/modules.d/40network/ifup.sh +@@ -421,6 +421,18 @@ for p in $(getargs ip=); do + [ "$use_bridge" != 'true' ] && \ + [ "$use_vlan" != 'true' ] && continue + ++ if [ "$autoconf" = "static" ] && ++ [ -e /etc/sysconfig/network/ifcfg-${netif} ] ; then ++ # Pull in existing static configuration ++ . /etc/sysconfig/network/ifcfg-${netif} ++ ip=${IPADDR} ++ mask=${PREFIXLEN} ++ mtu=${MTU} ++ server=${REMOTE_IPADDR} ++ gw=${GATEWAY} ++ autoconf=${BOOTPROTO} ++ fi ++ + # setup nameserver + for s in "$dns1" "$dns2" $(getargs nameserver); do + [ -n "$s" ] || continue +@@ -434,7 +446,7 @@ for p in $(getargs ip=); do + + for autoopt in $(str_replace "$autoconf" "," " "); do + case $autoopt in +- dhcp|on|any) ++ dhcp4|dhcp|on|any) + do_dhcp -4 ;; + dhcp6) + load_ipv6 +Index: dracut-044/modules.d/40network/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/40network/module-setup.sh ++++ dracut-044/modules.d/40network/module-setup.sh +@@ -58,6 +58,10 @@ install() { + + _arch=$(uname -m) + ++ [[ $hostonly ]] && { ++ inst_multiple /etc/sysconfig/network/ifcfg-* ++ } ++ + inst_libdir_file {"tls/$_arch/",tls/,"$_arch/",}"libnss_dns.so.*" \ + {"tls/$_arch/",tls/,"$_arch/",}"libnss_mdns4_minimal.so.*" + +Index: dracut-044/modules.d/40network/parse-ip-opts.sh +=================================================================== +--- dracut-044.orig/modules.d/40network/parse-ip-opts.sh ++++ dracut-044/modules.d/40network/parse-ip-opts.sh +@@ -69,7 +69,13 @@ for p in $(getargs ip=); do + for autoopt in $(str_replace "$autoconf" "," " "); do + case $autoopt in + error) die "Error parsing option 'ip=$p'";; +- bootp|rarp|both) die "Sorry, ip=$autoopt is currenty unsupported";; ++ bootp|rarp|both) die "Sorry, ip=$autoopt is currently unsupported";; ++ static) ++ if [ ! -e /etc/sysconfig/network/ifcfg-${dev} ] ; then ++ warn "No ifcfg configuration present for interface $dev, skipping" ++ continue ++ fi ++ ;; + none|off) + [ -z "$ip" ] && \ + die "For argument 'ip=$p'\nValue '$autoopt' without static configuration does not make sense" diff --git a/0107-Fixup-typo-firmare-instead-of-firmware.patch b/0107-Fixup-typo-firmare-instead-of-firmware.patch new file mode 100644 index 0000000..a207df9 --- /dev/null +++ b/0107-Fixup-typo-firmare-instead-of-firmware.patch @@ -0,0 +1,37 @@ +From b723f5fabf7ca5396fbd451e8b2d6ee6b82888c8 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 9 Jul 2014 09:34:35 +0200 +Subject: Fixup typo 'firmare' instead of 'firmware' + +Signed-off-by: Hannes Reinecke +--- + modules.d/95dasd_rules/parse-dasd.sh | 2 +- + modules.d/95zfcp_rules/parse-zfcp.sh | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +Index: dracut-042/modules.d/95dasd_rules/parse-dasd.sh +=================================================================== +--- dracut-042.orig/modules.d/95dasd_rules/parse-dasd.sh 2015-06-24 18:02:12.329540991 +0200 ++++ dracut-042/modules.d/95dasd_rules/parse-dasd.sh 2015-06-24 18:02:14.541666926 +0200 +@@ -43,7 +43,7 @@ EOF + } + + if [[ -f /sys/firmware/ipl/ipl_type && +- $( +Date: Thu, 10 Jul 2014 14:55:50 +0200 +Subject: 91zipl: Store commandline correctly + +The 'rd.zipl' command was only printed and never stored in the +initramfs itself. + +Signed-off-by: Hannes Reinecke +--- + modules.d/91zipl/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: dracut-042/modules.d/91zipl/module-setup.sh +=================================================================== +--- dracut-042.orig/modules.d/91zipl/module-setup.sh 2015-06-24 18:02:12.621557615 +0200 ++++ dracut-042/modules.d/91zipl/module-setup.sh 2015-06-24 18:02:14.857684916 +0200 +@@ -39,7 +39,7 @@ install() { + if [[ $hostonly_cmdline == "yes" ]] ; then + local _zipl=$(cmdline) + +- [[ $_zipl ]] && printf "%s\n" "$_zipl" ++ [[ $_zipl ]] && printf "%s\n" "$_zipl" > "${initdir}/etc/cmdline.d/91zipl.conf" + fi + dracut_need_initqueue + } diff --git a/0109-95dasd_rules-Store-all-devices-in-commandline.patch b/0109-95dasd_rules-Store-all-devices-in-commandline.patch new file mode 100644 index 0000000..db831ce --- /dev/null +++ b/0109-95dasd_rules-Store-all-devices-in-commandline.patch @@ -0,0 +1,30 @@ +From 0299c9f31fb0c5794747a6a7f62c32abd9a49754 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 10 Jul 2014 14:56:54 +0200 +Subject: 95dasd_rules: Store all devices in commandline + +'for_each_host_dev_and_slaves' would stop at the first found +device, so the cmdline() call would never list all required +devices. Use 'for_each_host_dev_and_slaves_all' instead and +filter out duplicates. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95dasd_rules/module-setup.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +Index: dracut-042/modules.d/95dasd_rules/module-setup.sh +=================================================================== +--- dracut-042.orig/modules.d/95dasd_rules/module-setup.sh 2015-06-24 18:02:10.881458552 +0200 ++++ dracut-042/modules.d/95dasd_rules/module-setup.sh 2015-06-24 18:02:15.149701540 +0200 +@@ -12,8 +12,8 @@ cmdline() { + return 0 + } + [[ $hostonly ]] || [[ $mount_needs ]] && { +- for_each_host_dev_and_slaves is_dasd || return 255 +- } ++ for_each_host_dev_and_slaves_all is_dasd || return 255 ++ } | sort | uniq + } + + # called by dracut diff --git a/0110-95zfcp_rules-Store-all-devices-in-commandline.patch b/0110-95zfcp_rules-Store-all-devices-in-commandline.patch new file mode 100644 index 0000000..3b31a78 --- /dev/null +++ b/0110-95zfcp_rules-Store-all-devices-in-commandline.patch @@ -0,0 +1,42 @@ +From 0be3d022964d54e8ab769ebed4006ba8b8d65078 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 10 Jul 2014 14:56:54 +0200 +Subject: 95zfcp_rules: Store all devices in commandline + +'for_each_host_dev_and_slaves' would stop at the first found +device, so the cmdline() call would never list all required +devices. Use 'for_each_host_dev_and_slaves_all' instead and +filter out duplicates. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95zfcp_rules/module-setup.sh | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +Index: dracut-042/modules.d/95zfcp_rules/module-setup.sh +=================================================================== +--- dracut-042.orig/modules.d/95zfcp_rules/module-setup.sh 2015-06-24 18:02:11.753508198 +0200 ++++ dracut-042/modules.d/95zfcp_rules/module-setup.sh 2015-06-24 18:02:15.445718391 +0200 +@@ -14,11 +14,11 @@ cmdline() { + _wwpn=$(cat ${_sdev}/wwpn) + _ccw=$(cat ${_sdev}/hba_id) + echo "rd.zfcp=${_ccw},${_wwpn},${_lun}" +- return 1 ++ return 0 + } + [[ $hostonly ]] || [[ $mount_needs ]] && { +- for_each_host_dev_and_slaves is_zfcp +- } ++ for_each_host_dev_and_slaves_all is_zfcp ++ } | sort | uniq + } + + # called by dracut +@@ -29,6 +29,7 @@ check() { + require_binaries /usr/lib/udev/collect || return 1 + + [[ $hostonly ]] || [[ $mount_needs ]] && { ++ found=0 + for _ccw in /sys/bus/ccw/devices/*/host* ; do + [ -d "$_ccw" ] || continue + found=$(($found+1)); diff --git a/0113-91zipl-Install-script-as-executable.patch b/0113-91zipl-Install-script-as-executable.patch new file mode 100644 index 0000000..376d4cf --- /dev/null +++ b/0113-91zipl-Install-script-as-executable.patch @@ -0,0 +1,54 @@ +From 488cf7ad86eee4cd9138d5e58c1baefeeb5e8c98 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 10 Jul 2014 15:58:24 +0200 +Subject: 91zipl: Install script as executable + +initqueue will only work with executable scripts, so we need to +mark it as such. + +Signed-off-by: Hannes Reinecke +--- + modules.d/91zipl/install_zipl_cmdline.sh | 2 +- + modules.d/91zipl/module-setup.sh | 2 +- + modules.d/91zipl/parse-zipl.sh | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + mode change 100644 => 100755 modules.d/91zipl/install_zipl_cmdline.sh + +Index: dracut-042/modules.d/91zipl/install_zipl_cmdline.sh +=================================================================== +--- dracut-042.orig/modules.d/91zipl/install_zipl_cmdline.sh 2015-06-24 18:02:12.621557615 +0200 ++++ dracut-042/modules.d/91zipl/install_zipl_cmdline.sh 2015-06-24 18:02:15.773737066 +0200 +@@ -1,6 +1,6 @@ + #!/bin/bash + +-DEV=$1 ++DEV="$1" + MNT=/boot/zipl + + if [ -z "$DEV" ] ; then +Index: dracut-042/modules.d/91zipl/module-setup.sh +=================================================================== +--- dracut-042.orig/modules.d/91zipl/module-setup.sh 2015-06-24 18:02:14.857684916 +0200 ++++ dracut-042/modules.d/91zipl/module-setup.sh 2015-06-24 18:02:15.773737066 +0200 +@@ -35,7 +35,7 @@ install() { + inst_multiple mount umount + + inst_hook cmdline 91 "$moddir/parse-zipl.sh" +- inst "${moddir}/install_zipl_cmdline.sh" /sbin/install_zipl_cmdline.sh ++ inst_script "${moddir}/install_zipl_cmdline.sh" /sbin/install_zipl_cmdline.sh + if [[ $hostonly_cmdline == "yes" ]] ; then + local _zipl=$(cmdline) + +Index: dracut-042/modules.d/91zipl/parse-zipl.sh +=================================================================== +--- dracut-042.orig/modules.d/91zipl/parse-zipl.sh 2015-06-24 18:02:12.621557615 +0200 ++++ dracut-042/modules.d/91zipl/parse-zipl.sh 2015-06-24 18:02:15.773737066 +0200 +@@ -31,7 +31,7 @@ if [ -n "$zipl_arg" ] ; then + esac + if [ "$zipl_env" ] ; then + { +- printf 'ACTION=="add|change", SUBSYSTEM=="block", %s=="%s", RUN+="/sbin/initqueue --settled --onetime --unique /sbin/install_zipl_cmdline.sh %s"\n' \ ++ printf 'ACTION=="add|change", SUBSYSTEM=="block", %s=="%s", RUN+="/sbin/initqueue --settled --onetime --unique --name install_zipl_cmdline /sbin/install_zipl_cmdline.sh %s"\n' \ + ${zipl_env} ${zipl_val} ${zipl_arg} + echo "[ -f /tmp/install.zipl.cmdline-done ]" >$hookdir/initqueue/finished/wait-zipl-conf.sh + } >> /etc/udev/rules.d/99zipl-conf.rules diff --git a/0114-91zipl-Translate-ext2-3-into-ext4.patch b/0114-91zipl-Translate-ext2-3-into-ext4.patch new file mode 100644 index 0000000..c714543 --- /dev/null +++ b/0114-91zipl-Translate-ext2-3-into-ext4.patch @@ -0,0 +1,42 @@ +From 12131d99811c9829ed1c19e164f2ef22634ba4e5 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Fri, 11 Jul 2014 12:55:55 +0200 +Subject: 91zipl: Translate 'ext2/3' into ext4 + +91zipl tries to read the filesystem for the /boot/zipl device. +On SLE12, however, the ext2 and ext3 filesystems are handled +by the ext4 module. +And due to bug#886839 no error is registered and booting fails. +So implement a band-aid to translate it into ext4. + +Signed-off-by: Hannes Reinecke +--- + modules.d/91zipl/module-setup.sh | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +Index: dracut-042/modules.d/91zipl/module-setup.sh +=================================================================== +--- dracut-042.orig/modules.d/91zipl/module-setup.sh 2015-06-24 18:02:15.773737066 +0200 ++++ dracut-042/modules.d/91zipl/module-setup.sh 2015-06-24 18:02:16.101755740 +0200 +@@ -17,7 +17,20 @@ depends() { + + # called by dracut + installkernel() { +- instmods ext2 ++ local _boot_zipl ++ ++ _boot_zipl=$(sed -n 's/\(.*\)\w*\/boot\/zipl.*/\1/p' /etc/fstab) ++ if [ -n "$_boot_zipl" ] ; then ++ eval $(blkid -s TYPE -o udev ${_boot_zipl}) ++ if [ -n "$ID_FS_TYPE" ] ; then ++ case "$ID_FS_TYPE" in ++ ext?) ++ ID_FS_TYPE=ext4 ++ ;; ++ esac ++ instmods ${ID_FS_TYPE} ++ fi ++ fi + } + + # called by dracut diff --git a/0116-Mark-scripts-as-executable.patch b/0116-Mark-scripts-as-executable.patch new file mode 100644 index 0000000..bce5f39 --- /dev/null +++ b/0116-Mark-scripts-as-executable.patch @@ -0,0 +1,47 @@ +From 941b55f8d9d50b3ba20ba0a2bb64c7509d38ee72 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Sat, 12 Jul 2014 14:55:35 +0200 +Subject: Mark scripts as executable + +All scripts need to be marked as executable, otherwise dracut +won't be running them. + +References: bnc#887010 + +Signed-off-by: Hannes Reinecke +--- + modules.d/81cio_ignore/module-setup.sh | 0 + modules.d/81cio_ignore/parse-cio_accept.sh | 0 + modules.d/91crypt-loop/module-setup.sh | 0 + modules.d/91zipl/module-setup.sh | 0 + modules.d/91zipl/parse-zipl.sh | 0 + modules.d/95fcoe/lldpad.sh | 0 + 6 files changed, 0 insertions(+), 0 deletions(-) + mode change 100644 => 100755 modules.d/81cio_ignore/module-setup.sh + mode change 100644 => 100755 modules.d/81cio_ignore/parse-cio_accept.sh + mode change 100644 => 100755 modules.d/91crypt-loop/module-setup.sh + mode change 100644 => 100755 modules.d/91zipl/module-setup.sh + mode change 100644 => 100755 modules.d/91zipl/parse-zipl.sh + mode change 100644 => 100755 modules.d/95fcoe/lldpad.sh + +diff --git a/modules.d/81cio_ignore/module-setup.sh b/modules.d/81cio_ignore/module-setup.sh +old mode 100644 +new mode 100755 +diff --git a/modules.d/81cio_ignore/parse-cio_accept.sh b/modules.d/81cio_ignore/parse-cio_accept.sh +old mode 100644 +new mode 100755 +diff --git a/modules.d/91crypt-loop/module-setup.sh b/modules.d/91crypt-loop/module-setup.sh +old mode 100644 +new mode 100755 +diff --git a/modules.d/91zipl/module-setup.sh b/modules.d/91zipl/module-setup.sh +old mode 100644 +new mode 100755 +diff --git a/modules.d/91zipl/parse-zipl.sh b/modules.d/91zipl/parse-zipl.sh +old mode 100644 +new mode 100755 +diff --git a/modules.d/95fcoe/lldpad.sh b/modules.d/95fcoe/lldpad.sh +old mode 100644 +new mode 100755 +-- +1.8.4.5 + diff --git a/0117-95dasd_rules-Enable-the-device-before-checking-devic.patch b/0117-95dasd_rules-Enable-the-device-before-checking-devic.patch new file mode 100644 index 0000000..ad1413a --- /dev/null +++ b/0117-95dasd_rules-Enable-the-device-before-checking-devic.patch @@ -0,0 +1,40 @@ +From 22c039c79eb496af10fbc811854e07822b063616 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Mon, 14 Jul 2014 10:13:53 +0200 +Subject: 95dasd_rules: Enable the device before checking device type + +For creating dynamic udev rules parse-dasd.sh look for the device +type in sysfs, which of course does not exist if cio_ignore is +active. So first enable the device before checking. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95dasd_rules/parse-dasd.sh | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +Index: dracut-042/modules.d/95dasd_rules/parse-dasd.sh +=================================================================== +--- dracut-042.orig/modules.d/95dasd_rules/parse-dasd.sh 2015-06-24 18:02:14.541666926 +0200 ++++ dracut-042/modules.d/95dasd_rules/parse-dasd.sh 2015-06-24 18:02:16.761793314 +0200 +@@ -5,6 +5,10 @@ create_udev_rule() { + local _drv _cu_type _dev_type + local _rule=/etc/udev/rules.d/51-dasd-${ccw}.rules + ++ if [ -x /sbin/cio_ignore ] && cio_ignore -i $ccw > /dev/null ; then ++ cio_ignore -r $ccw ++ fi ++ + if [ -e /sys/bus/ccw/devices/${ccw} ] ; then + read _cu_type < /sys/bus/ccw/devices/${ccw}/cutype + read _dev_type < /sys/bus/ccw/devices/${ccw}/devtype +@@ -29,10 +33,6 @@ create_udev_rule() { + esac + [ -z "${_drv}" ] && return 0 + +- if [ -x /sbin/cio_ignore ] && cio_ignore -i $ccw > /dev/null ; then +- cio_ignore -r $ccw +- fi +- + [ -e ${_rule} ] && return 0 + + cat > $_rule < +Date: Mon, 14 Jul 2014 10:17:07 +0200 +Subject: 95zfcp_rules: Enable the device before checking device type + +For creating dynamic udev rules parse-dasd.sh look for the device +type in sysfs, which of course does not exist if cio_ignore is +active. So first enable the device before checking. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95zfcp_rules/parse-zfcp.sh | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +Index: dracut-042/modules.d/95zfcp_rules/parse-zfcp.sh +=================================================================== +--- dracut-042.orig/modules.d/95zfcp_rules/parse-zfcp.sh 2015-06-24 18:02:14.541666926 +0200 ++++ dracut-042/modules.d/95zfcp_rules/parse-zfcp.sh 2015-06-24 18:02:17.057810167 +0200 +@@ -7,6 +7,10 @@ create_udev_rule() { + local _rule=/etc/udev/rules.d/51-zfcp-${ccw}.rules + local _cu_type _dev_type + ++ if [ -x /sbin/cio_ignore ] && cio_ignore -i $ccw > /dev/null ; then ++ cio_ignore -r $ccw ++ fi ++ + if [ -e /sys/bus/ccw/devices/${ccw} ] ; then + read _cu_type < /sys/bus/ccw/devices/${ccw}/cutype + read _dev_type < /sys/bus/ccw/devices/${ccw}/devtype +@@ -18,10 +22,6 @@ create_udev_rule() { + return 0; + fi + +- if [ -x /sbin/cio_ignore ] && cio_ignore -i $ccw > /dev/null ; then +- cio_ignore -r $ccw +- fi +- + [ -e ${_rule} ] && return 0 + + if [ ! -f "$_rule" ] ; then diff --git a/0121-Adjust-initramfs-kernel.img-to-SUSE-default-initrd-k.patch b/0121-Adjust-initramfs-kernel.img-to-SUSE-default-initrd-k.patch new file mode 100644 index 0000000..b0d17d6 --- /dev/null +++ b/0121-Adjust-initramfs-kernel.img-to-SUSE-default-initrd-k.patch @@ -0,0 +1,41 @@ +From 05bee849390ba39a5a441cbcc921634ddc298232 Mon Sep 17 00:00:00 2001 +From: Thomas Renninger +Date: Wed, 16 Jul 2014 16:37:15 +0200 +Subject: Adjust initramfs-$kernel.img to SUSE default: initrd-$kernel + +In lsinitrd and /usr/bin/dracut + +bnc#882306 + +Signed-off-by: Thomas Renninger +--- + dracut.sh | 2 +- + lsinitrd.sh | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +Index: dracut-044/dracut.sh +=================================================================== +--- dracut-044.orig/dracut.sh ++++ dracut-044/dracut.sh +@@ -632,7 +632,7 @@ if ! [[ $outfile ]]; then + 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 + +Index: dracut-044/lsinitrd.sh +=================================================================== +--- dracut-044.orig/lsinitrd.sh ++++ dracut-044/lsinitrd.sh +@@ -89,7 +89,7 @@ else + && [[ -d /boot/${MACHINE_ID} || -L /boot/${MACHINE_ID} ]] ; then + image="/boot/${MACHINE_ID}/${KERNEL_VERSION}/initrd" + else +- image="/boot/initramfs-${KERNEL_VERSION}.img" ++ image="/boot/initrd-${KERNEL_VERSION}" + fi + fi + diff --git a/0123-95zfcp_rules-fix-typo-in-module_setup.patch b/0123-95zfcp_rules-fix-typo-in-module_setup.patch new file mode 100644 index 0000000..eb6a1fb --- /dev/null +++ b/0123-95zfcp_rules-fix-typo-in-module_setup.patch @@ -0,0 +1,28 @@ +From 9e0bf05cd6e0a0ff50502dbce31a8d5031219fe7 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 17 Jul 2014 14:29:24 +0200 +Subject: 95zfcp_rules: fix typo in module_setup + +module_setup.sh has a typo preventing it from saving the correct +dracut commandline. + +References: bnc#887582 + +Signed-off-by: Hannes Reinecke +--- + modules.d/95zfcp_rules/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: dracut-042/modules.d/95zfcp_rules/module-setup.sh +=================================================================== +--- dracut-042.orig/modules.d/95zfcp_rules/module-setup.sh 2015-06-24 18:02:15.445718391 +0200 ++++ dracut-042/modules.d/95zfcp_rules/module-setup.sh 2015-06-24 18:02:22.510120561 +0200 +@@ -52,7 +52,7 @@ install() { + local _zfcp + + for _zfcp in $(cmdline) ; do +- printf "%s\n" "$zfcp" >> "${initdir}/etc/cmdline.d/94zfcp.conf" ++ printf "%s\n" "$_zfcp" >> "${initdir}/etc/cmdline.d/94zfcp.conf" + done + fi + if [[ $hostonly ]] ; then diff --git a/0124-40network-Update-iBFT-scanning-code-to-handle-IPv6.patch b/0124-40network-Update-iBFT-scanning-code-to-handle-IPv6.patch new file mode 100644 index 0000000..e2fefb8 --- /dev/null +++ b/0124-40network-Update-iBFT-scanning-code-to-handle-IPv6.patch @@ -0,0 +1,96 @@ +From de870b8879974927873264010b6294a70b6c7980 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 17 Jul 2014 14:09:28 +0200 +Subject: 40network: Update iBFT scanning code to handle IPv6 + +IPv6 addresses should be specified in brackets so that the +ip= scanning code doesn't get confused. + +References: bnc#887542 + +Signed-off-by: Hannes Reinecke +--- + modules.d/40network/net-lib.sh | 48 +++++++++++++++++++++++++++++++++++++----- + 1 file changed, 43 insertions(+), 5 deletions(-) + +diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh +index 135c378..d41920a 100755 +--- a/modules.d/40network/net-lib.sh ++++ b/modules.d/40network/net-lib.sh +@@ -241,23 +241,54 @@ ibft_to_cmdline() { + + [ -e /tmp/net.${dev}.has_ibft_config ] && continue + ++ [ -e ${iface}/flags ] && flags=$(read a < ${iface}/flags; echo $a) ++ # Skip invalid interfaces ++ (( $flags & 1 )) || continue ++ # Skip interfaces not used for booting ++ (( $flags & 2 )) || continue + [ -e ${iface}/dhcp ] && dhcp=$(read a < ${iface}/dhcp; echo $a) +- +- if [ -n "$dhcp" ]; then +- echo "ip=$dev:dhcp" ++ [ -e ${iface}/origin ] && origin=$(read a < ${iface}/origin; echo $a) ++ [ -e ${iface}/ip-addr ] && ip=$(read a < ${iface}/ip-addr; echo $a) ++ ++ if [ -n "$ip" ] ; then ++ case "$ip" in ++ *.*.*.*) ++ family=ipv4 ++ ;; ++ *:*) ++ family=ipv6 ++ ;; ++ esac ++ fi ++ if [ -n "$dhcp" ] || [ "$origin" -eq 3 ]; then ++ if [ "$family" = "ipv6" ] ; then ++ echo "ip=$dev:dhcp6" ++ else ++ echo "ip=$dev:dhcp" ++ fi + elif [ -e ${iface}/ip-addr ]; then +- [ -e ${iface}/ip-addr ] && ip=$(read a < ${iface}/ip-addr; echo $a) + # skip not assigned ip adresses + [ "$ip" = "0.0.0.0" ] && continue + [ -e ${iface}/gateway ] && gw=$(read a < ${iface}/gateway; echo $a) + [ "$gateway" = "0.0.0.0" ] && unset $gateway + [ -e ${iface}/subnet-mask ] && mask=$(read a < ${iface}/subnet-mask; echo $a) ++ [ -e ${iface}/prefix-len ] && prefix=$(read a < ${iface}/prefix-len; echo $a) + [ -e ${iface}/primary-dns ] && dns1=$(read a < ${iface}/primary-dns; echo $a) + [ "$dns1" = "0.0.0.0" ] && unset $dns1 + [ -e ${iface}/secondary-dns ] && dns2=$(read a < ${iface}/secondary-dns; echo $a) + [ "$dns2" = "0.0.0.0" ] && unset $dns2 + [ -e ${iface}/hostname ] && hostname=$(read a < ${iface}/hostname; echo $a) +- if [ -n "$ip" ] && [ -n "$mask" ]; then ++ if [ "$family" = "ipv6" ] ; then ++ if [ -n "$ip" ] ; then ++ [ -n "$prefix" ] || prefix=64 ++ ip="[${ip}/${prefix}]" ++ mask= ++ fi ++ if [ -n "$gw" ] ; then ++ gw="[${gw}]" ++ fi ++ fi ++ if [ -n "$ip" ] && [ -n "$mask" -o -n "$prefix" ]; then + echo "ip=$ip::$gw:$mask:$hostname:$dev:none${dns1:+:$dns1}${dns2:+:$dns2}" + else + warn "${iface} does not contain a valid iBFT configuration" +@@ -436,6 +467,13 @@ ip_to_var() { + esac + ;; + esac ++ # Extract prefix length from CIDR notation ++ case $ip in ++ */*) ++ mask=${ip##*/} ++ ip=${ip%/*} ++ ;; ++ esac + + # ip= means anaconda-style static config argument cluster: + # ip= gateway= netmask= hostname= mtu= +-- +2.6.6 + diff --git a/0125-40network-separate-mask-and-prefix.patch b/0125-40network-separate-mask-and-prefix.patch new file mode 100644 index 0000000..a2bb380 --- /dev/null +++ b/0125-40network-separate-mask-and-prefix.patch @@ -0,0 +1,175 @@ +From de3ab1c75c5f97a9935db4ce9f0cba332e5ca1ee Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Fri, 18 Jul 2014 10:28:00 +0200 +Subject: 40network: separate 'mask' and 'prefix' + +The 'mask' parameter is used for both, the (IPv4) netmask and +the prefix length. As both are in different format separate them +out into 'mask' for the netmask and 'prefix' for the prefix length. +And also prefer the use of 'prefix' where possible to ease +calculation and better IPv6 support. + +References: bnc#887542 + +Signed-off-by: Hannes Reinecke +--- + modules.d/40network/ifup.sh | 9 ++++---- + modules.d/40network/net-lib.sh | 43 +++++++++++++++++++++++++++++++++--- + modules.d/40network/parse-ip-opts.sh | 2 +- + 3 files changed, 46 insertions(+), 8 deletions(-) + +diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh +index ef8828d..b384dab 100755 +--- a/modules.d/40network/ifup.sh ++++ b/modules.d/40network/ifup.sh +@@ -240,9 +240,10 @@ do_static() { + + [ -n "$macaddr" ] && ip link set address $macaddr dev $netif + [ -n "$mtu" ] && ip link set mtu $mtu dev $netif ++ [ -n "$mask" -a -z "$prefix" ] && prefix=$(mask_to_prefix $mask) + if strglobin $ip '*:*:*'; then + # note no ip addr flush for ipv6 +- ip addr add $ip/$mask ${srv:+peer $srv} dev $netif ++ ip addr add $ip/$prefix ${srv:+peer $srv} dev $netif + wait_for_ipv6_dad $netif + else + if ! arping -f -q -D -c 2 -I $netif $ip; then +@@ -250,7 +251,7 @@ do_static() { + return 1 + fi + ip addr flush dev $netif +- ip addr add $ip/$mask ${srv:+peer $srv} brd + dev $netif ++ ip addr add $ip/$prefix ${srv:+peer $srv} brd + dev $netif + fi + + [ -n "$gw" ] && echo ip route replace default via $gw dev $netif > /tmp/net.$netif.gw +@@ -426,7 +427,7 @@ for p in $(getargs ip=); do + # Pull in existing static configuration + . /etc/sysconfig/network/ifcfg-${netif} + ip=${IPADDR} +- mask=${PREFIXLEN} ++ prefix=${PREFIXLEN} + mtu=${MTU} + server=${REMOTE_IPADDR} + gw=${GATEWAY} +@@ -440,7 +441,7 @@ for p in $(getargs ip=); do + done + + # Store config for later use +- for i in ip srv gw mask hostname macaddr dns1 dns2; do ++ for i in ip srv gw mask prefix hostname macaddr dns1 dns2; do + eval '[ "$'$i'" ] && echo '$i'="$'$i'"' + done > /tmp/net.$netif.override + +diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh +index d41920a..d963029 100755 +--- a/modules.d/40network/net-lib.sh ++++ b/modules.d/40network/net-lib.sh +@@ -20,6 +20,36 @@ get_ip() { + echo $ip + } + ++mask_to_prefix() { ++ local mask="$1" ++ local prefix=0 ++ local OLDIFS="$IFS" ++ ++ IFS=. ++ set -- $mask ++ IFS="$OLDIFS" ++ for mask in $@ ; do ++ if [ "$mask" -eq 255 ] ; then ++ prefix=$(($prefix + 8)) ++ elif [ "$mask" -eq 254 ] ; then ++ prefix=$(($prefix + 7)) ++ elif [ "$mask" -eq 252 ] ; then ++ prefix=$(($prefix + 6)) ++ elif [ "$mask" -eq 248 ] ; then ++ prefix=$(($prefix + 5)) ++ elif [ "$mask" -eq 240 ] ; then ++ prefix=$(($prefix + 4)) ++ elif [ "$mask" -eq 224 ] ; then ++ prefix=$(($prefix + 3)) ++ elif [ "$mask" -eq 192 ] ; then ++ prefix=$(($prefix + 2)) ++ elif [ "$mask" -eq 128 ] ; then ++ prefix=$(($prefix + 1)) ++ fi ++ done ++ echo $prefix ++} ++ + iface_for_remote_addr() { + set -- $(ip -o route get to $1) + echo $5 +@@ -232,7 +262,7 @@ ibft_to_cmdline() { + for iface in /sys/firmware/ibft/ethernet*; do + local mac="" dev="" + local dhcp="" ip="" gw="" mask="" hostname="" +- local dns1 dns2 ++ local dns1 dns2 prefix + + [ -e ${iface}/mac ] || continue + mac=$(read a < ${iface}/mac; echo $a) +@@ -280,6 +310,7 @@ ibft_to_cmdline() { + [ -e ${iface}/hostname ] && hostname=$(read a < ${iface}/hostname; echo $a) + if [ "$family" = "ipv6" ] ; then + if [ -n "$ip" ] ; then ++ # Prefix defaults to 64 for IPv6 + [ -n "$prefix" ] || prefix=64 + ip="[${ip}/${prefix}]" + mask= +@@ -287,6 +318,11 @@ ibft_to_cmdline() { + if [ -n "$gw" ] ; then + gw="[${gw}]" + fi ++ else ++ if [ -n "$prefix" ] ; then ++ ip="$ip/$prefix" ++ mask= ++ fi + fi + if [ -n "$ip" ] && [ -n "$mask" -o -n "$prefix" ]; then + echo "ip=$ip::$gw:$mask:$hostname:$dev:none${dns1:+:$dns1}${dns2:+:$dns2}" +@@ -295,6 +331,7 @@ ibft_to_cmdline() { + warn "ip-addr=$ip" + warn "gateway=$gw" + warn "subnet-mask=$mask" ++ warn "prefix-len=$prefix" + warn "hostname=$hostname" + fi + else +@@ -442,7 +479,7 @@ ip_to_var() { + fi + done + +- unset ip srv gw mask hostname dev autoconf macaddr mtu dns1 dns2 ++ unset ip srv gw mask prefix hostname dev autoconf macaddr mtu dns1 dns2 + case $# in + 0) autoconf="error" ;; + 1) autoconf=$1 ;; +@@ -470,7 +507,7 @@ ip_to_var() { + # Extract prefix length from CIDR notation + case $ip in + */*) +- mask=${ip##*/} ++ prefix=${ip##*/} + ip=${ip%/*} + ;; + esac +diff --git a/modules.d/40network/parse-ip-opts.sh b/modules.d/40network/parse-ip-opts.sh +index a3a3a3f..099a21c 100755 +--- a/modules.d/40network/parse-ip-opts.sh ++++ b/modules.d/40network/parse-ip-opts.sh +@@ -79,7 +79,7 @@ for p in $(getargs ip=); do + none|off) + [ -z "$ip" ] && \ + die "For argument 'ip=$p'\nValue '$autoopt' without static configuration does not make sense" +- [ -z "$mask" ] && \ ++ [ -z "$mask" -a -z "$prefix" ] && \ + die "Sorry, automatic calculation of netmask is not yet supported" + ;; + auto6);; +-- +2.6.6 + diff --git a/0126-01fips-Add-drbg-module-to-force-loaded-modules.patch b/0126-01fips-Add-drbg-module-to-force-loaded-modules.patch new file mode 100644 index 0000000..d8956d1 --- /dev/null +++ b/0126-01fips-Add-drbg-module-to-force-loaded-modules.patch @@ -0,0 +1,28 @@ +From 58f937144d9f206c06052791456599e48c37c417 Mon Sep 17 00:00:00 2001 +From: Marcus Meissner +Date: Fri, 18 Jul 2014 15:53:22 +0200 +Subject: 01fips: Add drbg module to force loaded modules + +References: bnc#875855 + +Signed-off-by: Marcus Meissner +--- + modules.d/01fips/module-setup.sh | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/modules.d/01fips/module-setup.sh b/modules.d/01fips/module-setup.sh +index 0e90246..04d5113 100755 +--- a/modules.d/01fips/module-setup.sh ++++ b/modules.d/01fips/module-setup.sh +@@ -22,6 +22,8 @@ installkernel() { + _fipsmodules+="sha512-ssse3 sha1-ssse3 sha256-ssse3 " + _fipsmodules+="ghash-clmulni-intel " + ++ _fipsmodules+="drbg" ++ + mkdir -m 0755 -p "${initdir}/etc/modprobe.d" + + for _mod in $_fipsmodules; do +-- +2.6.6 + diff --git a/0128-90lvm-Install-dm-snapshot-module.patch b/0128-90lvm-Install-dm-snapshot-module.patch new file mode 100644 index 0000000..0590769 --- /dev/null +++ b/0128-90lvm-Install-dm-snapshot-module.patch @@ -0,0 +1,26 @@ +From 68b8183fc65c2ff1c7d178e782ea5bff7be74d70 Mon Sep 17 00:00:00 2001 +From: Thomas Renninger +Date: Wed, 4 May 2016 13:32:56 +0200 +Subject: 90lvm: Install dm-snapshot module + +Signed-off-by: Thomas Renninger +--- + 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 c4db779..6ca4ee4 100755 +--- a/modules.d/90lvm/module-setup.sh ++++ b/modules.d/90lvm/module-setup.sh +@@ -43,7 +43,7 @@ cmdline() { + } + + installkernel() { +- instmods dm-snapshot ++ hostonly='' instmods dm-snapshot + } + + # called by dracut +-- +2.6.6 + diff --git a/0130-nfs-Always-add-all-kernel-modules-for-kdump.patch b/0130-nfs-Always-add-all-kernel-modules-for-kdump.patch new file mode 100644 index 0000000..7cbaac0 --- /dev/null +++ b/0130-nfs-Always-add-all-kernel-modules-for-kdump.patch @@ -0,0 +1,25 @@ +From 520f0e9185774956e5739841ce87474fcee52594 Mon Sep 17 00:00:00 2001 +From: Thomas Renninger +Date: Mon, 28 Jul 2014 17:53:10 +0200 +Subject: nfs: Always add all kernel modules for kdump + +bnc#887906 + +Signed-off-by: Thomas Renninger +--- + modules.d/95nfs/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: dracut-042/modules.d/95nfs/module-setup.sh +=================================================================== +--- dracut-042.orig/modules.d/95nfs/module-setup.sh 2015-06-11 17:39:47.000000000 +0200 ++++ dracut-042/modules.d/95nfs/module-setup.sh 2015-06-24 18:02:23.718189334 +0200 +@@ -25,7 +25,7 @@ depends() { + + # called by dracut + installkernel() { +- instmods nfs sunrpc ipv6 nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files ++ hostonly='' instmods nfs sunrpc ipv6 nfsv2 nfsv3 nfsv4 nfs_acl nfs_layout_nfsv41_files lockd rpcsec_gss_krb5 auth_rpcgss + } + + cmdline() { diff --git a/0131-40network-handle-prefixed-IP-addresses-correctly.patch b/0131-40network-handle-prefixed-IP-addresses-correctly.patch new file mode 100644 index 0000000..125fdad --- /dev/null +++ b/0131-40network-handle-prefixed-IP-addresses-correctly.patch @@ -0,0 +1,44 @@ +From fc03504435d8bf5d0a31b8c566c2e783fbb96ec6 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 30 Jul 2014 10:28:27 +0200 +Subject: 40network: handle prefixed IP addresses correctly + +If an IP address is given with prefix length ifup should be +parsing that correctly. And we should assume a prefix length +of /64 for IPv6 resp /24 for IPv4 if none were given. + +References: bnc#880108 + +Signed-off-by: Hannes Reinecke +--- + modules.d/40network/ifup.sh | 8 ++++++++ + 1 file changed, 8 insertions(+) + +Index: dracut-044/modules.d/40network/ifup.sh +=================================================================== +--- dracut-044.orig/modules.d/40network/ifup.sh ++++ dracut-044/modules.d/40network/ifup.sh +@@ -241,7 +241,13 @@ do_static() { + [ -n "$macaddr" ] && ip link set address $macaddr dev $netif + [ -n "$mtu" ] && ip link set mtu $mtu dev $netif + [ -n "$mask" -a -z "$prefix" ] && prefix=$(mask_to_prefix $mask) +- if strglobin $ip '*:*:*'; then ++ if [ "${ip##*/}" != "${ip}" ] ; then ++ prefix="${ip##*/}" ++ ip="${ip%/*}" ++ fi ++if strglobin $ip '*:*:*'; then ++ # Always assume /64 prefix for IPv6 ++ [ -z "$prefix" ] && prefix=64 + # note no ip addr flush for ipv6 + ip addr add $ip/$prefix ${srv:+peer $srv} dev $netif + wait_for_ipv6_dad $netif +@@ -250,6 +256,8 @@ do_static() { + warn "Duplicate address detected for $ip for interface $netif." + return 1 + fi ++ # Assume /24 prefix for IPv4 ++ [ -z "$prefix" ] && prefix=24 + ip addr flush dev $netif + ip addr add $ip/$prefix ${srv:+peer $srv} brd + dev $netif + fi diff --git a/0132-40network-fixup-static-network-configuration.patch b/0132-40network-fixup-static-network-configuration.patch new file mode 100644 index 0000000..b24b70b --- /dev/null +++ b/0132-40network-fixup-static-network-configuration.patch @@ -0,0 +1,57 @@ +From 6fd2c01a1cd2dcbd7d2fc3bbe6e62c7d8336bf24 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 31 Jul 2014 09:21:14 +0200 +Subject: 40network: fixup static network configuration + +The static network configuration was broken; the 'gateway' was +written as the complete 'ip' command line, but simply sourced +later on. + +The patch fixes the gateway registration that the '.gw' file +holds entire 'ip route' command lines, which just needs to +be evaluated later on. + +Signed-off-by: Hannes Reinecke +--- + modules.d/40network/ifup.sh | 13 +++++++++++++ + modules.d/40network/module-setup.sh | 2 ++ + modules.d/40network/net-lib.sh | 6 +++++- + 3 files changed, 20 insertions(+), 1 deletion(-) + +Index: dracut-044/modules.d/40network/ifup.sh +=================================================================== +--- dracut-044.orig/modules.d/40network/ifup.sh ++++ dracut-044/modules.d/40network/ifup.sh +@@ -263,6 +263,19 @@ if strglobin $ip '*:*:*'; then + fi + + [ -n "$gw" ] && echo ip route replace default via $gw dev $netif > /tmp/net.$netif.gw ++ ++ for ifroute in /etc/sysconfig/network/ifroute-${netif} /etc/sysconfig/netwrk/routes ; do ++ [ -e ${ifroute} ] || continue ++ # Pull in existing routing configuration ++ read ifr_dest ifr_gw ifr_mask ifr_if < ${ifroute} ++ [ -z "$ifr_dest" -o -z "$ifr_gw" ] && continue ++ if [ "$ifr_if" = "-" ] ; then ++ echo ip route add $ifr_dest via $ifr_gw >> /tmp/net.$netif.gw ++ else ++ echo ip route add $ifr_dest via $ifr_gw dev $ifr_if >> /tmp/net.$netif.gw ++ fi ++ done ++ + [ -n "$hostname" ] && echo "echo $hostname > /proc/sys/kernel/hostname" > /tmp/net.$netif.hostname + + return 0 +Index: dracut-044/modules.d/40network/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/40network/module-setup.sh ++++ dracut-044/modules.d/40network/module-setup.sh +@@ -60,6 +60,8 @@ install() { + + [[ $hostonly ]] && { + inst_multiple /etc/sysconfig/network/ifcfg-* ++ inst_multiple /etc/sysconfig/network/ifroute-* ++ inst_simple /etc/sysconfig/network/routes + } + + inst_libdir_file {"tls/$_arch/",tls/,"$_arch/",}"libnss_dns.so.*" \ diff --git a/0133-Allow-multiple-configurations-per-network-interface-.patch b/0133-Allow-multiple-configurations-per-network-interface-.patch new file mode 100644 index 0000000..407222a --- /dev/null +++ b/0133-Allow-multiple-configurations-per-network-interface-.patch @@ -0,0 +1,273 @@ +From 114aadff326cb6ac63d2b3926fafe944b1670a62 Mon Sep 17 00:00:00 2001 +From: Julian Wolf +Date: Thu, 31 Jul 2014 17:11:16 +0200 +Subject: Allow multiple configurations per network interface bnc#887906 + +Signed-off-by: Julian Wolf +--- + modules.d/40network/ifup.sh | 90 +++++++++++++++++++++++------------- + modules.d/40network/net-genrules.sh | 2 +- + modules.d/40network/net-lib.sh | 4 +- + modules.d/40network/parse-ip-opts.sh | 14 +++--- + 4 files changed, 66 insertions(+), 44 deletions(-) + +diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh +index 1b71a3c..1cd1677 100755 +--- a/modules.d/40network/ifup.sh ++++ b/modules.d/40network/ifup.sh +@@ -90,6 +90,7 @@ else + fi + + dhcp_apply() { ++ unset IPADDR INTERFACE BROADCAST NETWORK PREFIXLEN ROUTES GATEWAYS HOSTNAME DNSDOMAIN DNSSEARCH DNSSERVERS + if [ -f /tmp/leaseinfo.${netif}.dhcp.ipv${1:1:1} ]; then + . /tmp/leaseinfo.${netif}.dhcp.ipv${1:1:1} + else +@@ -131,23 +132,36 @@ dhcp_apply() { + [ -n "${HOSTNAME}" ] && hostname "$HOSTNAME" + + # If nameserver= has not been specified, use what dhcp provides +- if [ ! -s /tmp/net.$netif.resolv.conf ]; then ++ if [ ! -s /tmp/net.$netif.resolv.conf.ipv${1:1:1} ]; then + if [ -n "${DNSDOMAIN}" ]; then + echo domain "${DNSDOMAIN}" +- fi >> /tmp/net.$netif.resolv.conf ++ fi >> /tmp/net.$netif.resolv.conf.ipv${1:1:1} + + if [ -n "${DNSSEARCH}" ]; then + echo search "${DNSSEARCH}" +- fi >> /tmp/net.$netif.resolv.conf ++ fi >> /tmp/net.$netif.resolv.conf.ipv${1:1:1} + + if [ -n "${DNSSERVERS}" ] ; then + for s in ${DNSSERVERS}; do + echo nameserver "$s" + done +- fi >> /tmp/net.$netif.resolv.conf ++ fi >> /tmp/net.$netif.resolv.conf.ipv${1:1:1} ++ fi ++ # copy resolv.conf if it doesn't exist yet, modify otherwise ++ if [ -e /tmp/net.$netif.resolv.conf.ipv${1:1:1} ] && [ ! -e /etc/resolv.conf ]; then ++ cp -f /tmp/net.$netif.resolv.conf.ipv${1:1:1} /etc/resolv.conf ++ else ++ if [ -n "$(sed -n '/^search .*$/p' /etc/resolv.conf)" ]; then ++ sed -i "s/\(^search .*\)$/\1 ${DNSSEARCH}/" /etc/resolv.conf ++ else ++ echo search ${DNSSEARCH} >> /etc/resolv.conf ++ fi ++ if [ -n "${DNSSERVERS}" ] ; then ++ for s in ${DNSSERVERS}; do ++ echo nameserver "$s" ++ done ++ fi >> /etc/resolv.conf + fi +- [ -e /tmp/net.$netif.resolv.conf ] && \ +- cp -f /tmp/net.$netif.resolv.conf /etc/resolv.conf + + info "DHCP is finished successfully" + return 0 +@@ -175,9 +189,6 @@ do_dhcp() { + dhclient="wickedd-dhcp6" + fi + +- # Address changed +- ip $1 addr flush dev "$netif" +- + if ! iface_has_link $netif; then + warn "No carrier detected" + warn "Trying to set $netif up..." +@@ -191,7 +202,6 @@ do_dhcp() { + $dhclient --test $netif > /tmp/leaseinfo.${netif}.dhcp.ipv${1:1:1} + dhcp_apply $1 || return $? + +- echo $netif > /tmp/net.${netif}.did-setup + echo $netif > /tmp/setup_net_${netif}.ok + return 0 + } +@@ -222,6 +232,31 @@ do_ipv6auto() { + + # Handle static ip configuration + do_static() { ++ if [ "$autoconf" = "static" ] && ++ [ -e /etc/sysconfig/network/ifcfg-${netif} ] ; then ++ # Pull in existing static configuration ++ . /etc/sysconfig/network/ifcfg-${netif} ++ ++ # loop over all configurations in ifcfg-$netif (IPADDR*) and apply ++ for conf in ${!IPADDR@}; do ++ ip=${!conf} ++ [ -z "$ip" ] && continue ++ ext=${conf#IPADDR} ++ concat="PREFIXLEN$ext" && [ -n "${!concat}" ] && mtu=${!concat} ++ concat="MTU$ext" && [ -n "${!concat}" ] && mtu=${!concat} ++ concat="REMOTE_IPADDR$ext" && [ -n "${!concat}" ] && server=${!concat} ++ concat="GATEWAY$ext" && [ -n "${!concat}" ] && gw=${!concat} ++ concat="BOOTPROTO$ext" && [ -n "${!concat}" ] && autoconf=${!concat} ++ do_static_setup ++ done ++ else ++ do_static_setup ++ fi ++ ++ return 0 ++} ++ ++do_static_setup() { + strglobin $ip '*:*:*' && load_ipv6 + + if ! linkup $netif; then +@@ -258,7 +293,6 @@ if strglobin $ip '*:*:*'; then + fi + # Assume /24 prefix for IPv4 + [ -z "$prefix" ] && prefix=24 +- ip addr flush dev $netif + ip addr add $ip/$prefix ${srv:+peer $srv} brd + dev $netif + fi + +@@ -277,8 +311,6 @@ if strglobin $ip '*:*:*'; then + done + + [ -n "$hostname" ] && echo "echo $hostname > /proc/sys/kernel/hostname" > /tmp/net.$netif.hostname +- +- return 0 + } + + # loopback is always handled the same way +@@ -427,6 +459,14 @@ for p in $(getargs ip=); do + # skip ibft + [ "$autoconf" = "ibft" ] && continue + ++ # skip if same configuration appears twice ++ while read line ++ do ++ [ "$line" = "$p" ] && continue 2 ++ done < /tmp/net.${netif}.conf ++ ++ echo $p >> /tmp/net.${netif}.conf ++ + case "$dev" in + ??:??:??:??:??:??) # MAC address + _dev=$(iface_for_mac $dev) +@@ -443,29 +483,12 @@ for p in $(getargs ip=); do + [ "$use_bridge" != 'true' ] && \ + [ "$use_vlan" != 'true' ] && continue + +- if [ "$autoconf" = "static" ] && +- [ -e /etc/sysconfig/network/ifcfg-${netif} ] ; then +- # Pull in existing static configuration +- . /etc/sysconfig/network/ifcfg-${netif} +- ip=${IPADDR} +- prefix=${PREFIXLEN} +- mtu=${MTU} +- server=${REMOTE_IPADDR} +- gw=${GATEWAY} +- autoconf=${BOOTPROTO} +- fi +- + # setup nameserver + for s in "$dns1" "$dns2" $(getargs nameserver); do + [ -n "$s" ] || continue + echo nameserver $s >> /tmp/net.$netif.resolv.conf + done + +- # Store config for later use +- for i in ip srv gw mask prefix hostname macaddr dns1 dns2; do +- eval '[ "$'$i'" ] && echo '$i'="$'$i'"' +- done > /tmp/net.$netif.override +- + for autoopt in $(str_replace "$autoconf" "," " "); do + case $autoopt in + dhcp4|dhcp|on|any) +@@ -493,8 +516,6 @@ for p in $(getargs ip=); do + /sbin/netroot $netif + fi + fi +- +- exit 0 + done + + # netif isn't the top stack? Then we should exit here. +@@ -523,4 +544,9 @@ if [ ! -e /tmp/net.${netif}.up ]; then + fi + fi + ++if [ -e /tmp/net.${netif}.up ]; then ++ > /tmp/net.$netif.did-setup ++ [ -e /sys/class/net/$netif/address ] && \ ++ > /tmp/net.$(cat /sys/class/net/$netif/address).did-setup ++fi + exit 0 +diff --git a/modules.d/40network/net-genrules.sh b/modules.d/40network/net-genrules.sh +index 559b325..843bd98 100755 +--- a/modules.d/40network/net-genrules.sh ++++ b/modules.d/40network/net-genrules.sh +@@ -96,7 +96,7 @@ command -v fix_bootif >/dev/null || . /lib/net-lib.sh + # if you change the name of "91-default-net.rules", also change modules.d/80cms/cmssetup.sh + if [ "$NEEDNET" = "1" ]; then + echo "$cond, $runcmd" > /etc/udev/rules.d/91-default-net.rules +- echo "[ -f /tmp/net.*.did-setup ]" >$hookdir/initqueue/finished/wait-network.sh ++ echo "ls -1 /tmp/net.*.did-setup >/dev/null 2>&1" >$hookdir/initqueue/finished/wait-network.sh + fi + fi + +diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh +index d963029..5aa1468 100755 +--- a/modules.d/40network/net-lib.sh ++++ b/modules.d/40network/net-lib.sh +@@ -131,6 +131,7 @@ ifdown() { + ip addr flush dev $netif + echo "#empty" > /etc/resolv.conf + rm -f -- /tmp/net.$netif.did-setup ++ rm -f -- /tmp/net.$netif.conf + [ -e /sys/class/net/$netif/address ] && \ + rm -f -- /tmp/net.$(cat /sys/class/net/$netif/address).did-setup + # TODO: send "offline" uevent? +@@ -203,9 +204,6 @@ setup_net() { + fi + unset layer2 + +- > /tmp/net.$netif.did-setup +- [ -e /sys/class/net/$netif/address ] && \ +- > /tmp/net.$(cat /sys/class/net/$netif/address).did-setup + } + + save_netinfo() { +diff --git a/modules.d/40network/parse-ip-opts.sh b/modules.d/40network/parse-ip-opts.sh +index 099a21c..7926b6b 100755 +--- a/modules.d/40network/parse-ip-opts.sh ++++ b/modules.d/40network/parse-ip-opts.sh +@@ -83,25 +83,23 @@ for p in $(getargs ip=); do + die "Sorry, automatic calculation of netmask is not yet supported" + ;; + auto6);; +- dhcp|dhcp6|on|any) \ +- [ -n "$NEEDBOOTDEV" ] && [ -z "$dev" ] && \ +- die "Sorry, 'ip=$p' does not make sense for multiple interface configurations" +- [ -n "$ip" ] && \ +- die "For argument 'ip=$p'\nSorry, setting client-ip does not make sense for '$autoopt'" +- ;; ++ dhcp|dhcp6|on|any);; + *) die "For argument 'ip=$p'\nSorry, unknown value '$autoopt'";; + esac + done + ++ dup=0 + if [ -n "$dev" ] ; then + # We don't like duplicate device configs + if [ -n "$IFACES" ] ; then + for i in $IFACES ; do +- [ "$dev" = "$i" ] && die "For argument 'ip=$p'\nDuplication configurations for '$dev'" ++ [ "$dev" = "$i" ] && dup=1 && break + done + fi + # IFACES list for later use +- IFACES="$IFACES $dev" ++ if [ $dup -eq 0 ]; then ++ IFACES="$IFACES $dev" ++ fi + fi + + # Do we need to check for specific options? +-- +2.6.6 + diff --git a/0137-Switch-from-Mozilla-NSS-sha256hmac-checking-to-fipsc.patch b/0137-Switch-from-Mozilla-NSS-sha256hmac-checking-to-fipsc.patch new file mode 100644 index 0000000..54a68bc --- /dev/null +++ b/0137-Switch-from-Mozilla-NSS-sha256hmac-checking-to-fipsc.patch @@ -0,0 +1,62 @@ +From 6a85f188d671723ad76bb729307c12e89199b7bd Mon Sep 17 00:00:00 2001 +From: Marcus Meissner +Date: Thu, 14 Aug 2014 16:13:55 +0200 +Subject: Switch from Mozilla NSS sha256hmac checking to fipscheck as + recommended + +Signed-off-by: Thomas Renninger +--- + modules.d/01fips/fips.sh | 6 ++---- + modules.d/01fips/module-setup.sh | 13 +++++++------ + 2 files changed, 9 insertions(+), 10 deletions(-) + +Index: dracut-042/modules.d/01fips/fips.sh +=================================================================== +--- dracut-042.orig/modules.d/01fips/fips.sh 2015-06-24 18:02:07.817284113 +0200 ++++ dracut-042/modules.d/01fips/fips.sh 2015-06-24 18:02:28.266448262 +0200 +@@ -59,9 +59,7 @@ do_rhevh_check() + kpath=${1} + + # If we're on RHEV-H, the kernel is in /run/initramfs/live/vmlinuz0 +- HMAC_SUM_ORIG=$(cat $NEWROOT/boot/.vmlinuz-${KERNEL}.hmac | while read a b || [ -n "$a" ]; do printf "%s\n" $a; done) +- HMAC_SUM_CALC=$(sha512hmac $kpath | while read a b || [ -n "$a" ]; do printf "%s\n" $a; done || return 1) +- if [ -z "$HMAC_SUM_ORIG" ] || [ -z "$HMAC_SUM_CALC" ] || [ "${HMAC_SUM_ORIG}" != "${HMAC_SUM_CALC}" ]; then ++ if fipscheck $NEWROOT/boot/vmlinuz-${KERNEL} ; then + warn "HMAC sum mismatch" + return 1 + fi +@@ -126,7 +124,7 @@ do_fips() + elif [ -e "/run/initramfs/live/isolinux/vmlinuz0" ]; then + do_rhevh_check /run/initramfs/live/isolinux/vmlinuz0 || return 1 + else +- sha512hmac -c "/boot/.vmlinuz-${KERNEL}.hmac" || return 1 ++ fipscheck "/boot/vmlinuz-${KERNEL}" || return 1 + fi + + info "All initrd crypto checks done" +Index: dracut-042/modules.d/01fips/module-setup.sh +=================================================================== +--- dracut-042.orig/modules.d/01fips/module-setup.sh 2015-06-24 18:02:23.422172483 +0200 ++++ dracut-042/modules.d/01fips/module-setup.sh 2015-06-24 18:02:28.266448262 +0200 +@@ -41,15 +41,16 @@ install() { + inst_hook pre-pivot 01 "$moddir/fips-noboot.sh" + inst_script "$moddir/fips.sh" /sbin/fips.sh + +- inst_multiple sha512hmac rmmod insmod mount uname umount fipscheck ++ inst_multiple rmmod insmod mount uname umount fipscheck + +- inst_libdir_file libsoftokn3.so libsoftokn3.so \ +- libsoftokn3.chk libfreebl3.so libfreebl3.chk \ +- libssl.so 'hmaccalc/sha512hmac.hmac' libssl.so.10 \ ++ inst_libdir_file \ ++ fipscheck .fipscheck.hmac \ ++ libfipscheck.so.1 \ ++ .libfipscheck.so.1.hmac .libfipscheck.so.1.1.0.hmac \ ++ libcrypto.so.1.0.0 libssl.so.1.0.0 \ + .libcrypto.so.1.0.0.hmac .libssl.so.1.0.0.hmac \ + .libcryptsetup.so.4.5.0.hmac .libcryptsetup.so.4.hmac \ + .libgcrypt.so.20.hmac \ +- .libfipscheck.so.1.hmac .libfipscheck.so.1.1.0.hmac + libfreeblpriv3.so libfreeblpriv3.chk + + # we do not use prelink at SUSE diff --git a/0138-fips_add_aesni-intel.patch b/0138-fips_add_aesni-intel.patch new file mode 100644 index 0000000..b19ebf8 --- /dev/null +++ b/0138-fips_add_aesni-intel.patch @@ -0,0 +1,28 @@ +From d74cd280562cc316cbf94db71cb30fd935d26b8b Mon Sep 17 00:00:00 2001 +From: Marcus Meissner +Date: Wed, 4 May 2016 13:02:50 +0200 +Subject: 01fips: Put aesni-intel into the initrd for FIPS usage + +References: bsc#914126 + +Signed-off-by: Marcus Meissner +--- + modules.d/01fips/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/01fips/module-setup.sh b/modules.d/01fips/module-setup.sh +index 7e20b21..2aa9f4f 100755 +--- a/modules.d/01fips/module-setup.sh ++++ b/modules.d/01fips/module-setup.sh +@@ -20,7 +20,7 @@ installkernel() { + _fipsmodules+="sha384 sha512 sha512_generic tcrypt tea tnepres twofish wp256 wp384 wp512 xeta xtea xts zlib" + _fipsmodules+="aes_s390 des_s390 prng sha256_s390 sha_common des_check_key ghash_s390 sha1_s390 sha512_s390" + _fipsmodules+="sha512-ssse3 sha1-ssse3 sha256-ssse3 " +- _fipsmodules+="ghash-clmulni-intel " ++ _fipsmodules+="ghash-clmulni-intel aesni-intel" + + _fipsmodules+="drbg" + +-- +2.6.6 + diff --git a/0139-fips-kernel-4.4-fixes.patch b/0139-fips-kernel-4.4-fixes.patch new file mode 100644 index 0000000..2225ab6 --- /dev/null +++ b/0139-fips-kernel-4.4-fixes.patch @@ -0,0 +1,62 @@ +From 2477f53068b4a59af89b2ad89dd2fa174eab7db3 Mon Sep 17 00:00:00 2001 +From: Marcus Meissner +Date: Tue, 23 Aug 2016 12:26:00 +0200 +Subject: 01fips: Adjust kernel module list for SLES12 SP2 + +Adjust the kernel module list to match the SLES12 SP2 kernel. + +References: bsc#976577 + +Signed-off-by: Marcus Meissner +--- + modules.d/01fips/fips.sh | 1 + + modules.d/01fips/module-setup.sh | 21 +++++++++++---------- + 2 files changed, 12 insertions(+), 10 deletions(-) + +diff --git a/modules.d/01fips/fips.sh b/modules.d/01fips/fips.sh +index 1cd9852..f33481a 100755 +--- a/modules.d/01fips/fips.sh ++++ b/modules.d/01fips/fips.sh +@@ -103,6 +103,7 @@ do_fips() + -o "$_module" != "${_module%-ssse3}" \ + -o "$_module" != "${_module%-x86_64}" \ + -o "$_module" != "${_module%z90}" \ ++ -o "$_module" != "${_module%s390}" \ + ]; then + _found=1 + fi +diff --git a/modules.d/01fips/module-setup.sh b/modules.d/01fips/module-setup.sh +index 2aa9f4f..0bca7a1 100755 +--- a/modules.d/01fips/module-setup.sh ++++ b/modules.d/01fips/module-setup.sh +@@ -13,16 +13,17 @@ depends() { + # called by dracut + installkernel() { + local _fipsmodules _mod +- _fipsmodules="aead aes_generic aes-x86_64 ansi_cprng arc4 authenc authencesn blowfish camellia cast6 cbc ccm " +- _fipsmodules+="chainiv crc32c crct10dif_generic cryptomgr crypto_null ctr cts deflate des des3_ede dm-crypt dm-mod drbg " +- _fipsmodules+="ecb eseqiv fcrypt gcm ghash_generic hmac khazad lzo md4 md5 michael_mic rmd128 " +- _fipsmodules+="rmd160 rmd256 rmd320 rot13 salsa20 seed seqiv serpent sha1 sha224 sha256 sha256_generic " +- _fipsmodules+="sha384 sha512 sha512_generic tcrypt tea tnepres twofish wp256 wp384 wp512 xeta xtea xts zlib" +- _fipsmodules+="aes_s390 des_s390 prng sha256_s390 sha_common des_check_key ghash_s390 sha1_s390 sha512_s390" +- _fipsmodules+="sha512-ssse3 sha1-ssse3 sha256-ssse3 " +- _fipsmodules+="ghash-clmulni-intel aesni-intel" +- +- _fipsmodules+="drbg" ++ _fipsmodules="ansi_cprng arc4 authenc ccm " ++ _fipsmodules+="ctr cts deflate drbg " ++ _fipsmodules+="ecb fcrypt gcm ghash_generic khazad md4 michael_mic rmd128 " ++ _fipsmodules+="rmd160 rmd256 rmd320 seed " ++ _fipsmodules+="sha512_generic tcrypt tea wp512 xts zlib " ++ _fipsmodules+="aes_s390 des_s390 sha256_s390 ghash_s390 sha1_s390 sha512_s390 " ++ _fipsmodules+="gf128mul " ++ _fipsmodules+="cmac vmac xcbc salsa20_generic salsa20_x86_64 camellia_generic camellia_x86_64 pcbc tgr192 anubis " ++ _fipsmodules+="cast6_generic cast5_generic cast_common sha512_ssse3 serpent_sse2_x86_64 serpent_generic twofish_generic " ++ _fipsmodules+="ablk_helper cryptd twofish_x86_64_3way lrw glue_helper twofish_x86_64 twofish_common blowfish_generic " ++ _fipsmodules+="blowfish_x86_64 blowfish_common des_generic " + + mkdir -m 0755 -p "${initdir}/etc/modprobe.d" + +-- +2.6.6 + diff --git a/0142-40network-Don-t-report-error-for-etc-sysconfig-netwo.patch b/0142-40network-Don-t-report-error-for-etc-sysconfig-netwo.patch new file mode 100644 index 0000000..b74f8ea --- /dev/null +++ b/0142-40network-Don-t-report-error-for-etc-sysconfig-netwo.patch @@ -0,0 +1,24 @@ +From fac3fb787b0a74cf8d9d32939dd6d6831342a25d Mon Sep 17 00:00:00 2001 +From: Julian Wolf +Date: Tue, 19 Aug 2014 12:39:18 +0200 +Subject: 40network: Don't report error for /etc/sysconfig/network/ifroute-* + during module setup + +Signed-off-by: Julian Wolf +--- + modules.d/40network/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: dracut-044/modules.d/40network/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/40network/module-setup.sh ++++ dracut-044/modules.d/40network/module-setup.sh +@@ -60,7 +60,7 @@ install() { + + [[ $hostonly ]] && { + inst_multiple /etc/sysconfig/network/ifcfg-* +- inst_multiple /etc/sysconfig/network/ifroute-* ++ inst_multiple -o /etc/sysconfig/network/ifroute-* + inst_simple /etc/sysconfig/network/routes + } + diff --git a/0144-90crypt-Fixed-crypttab_contains-to-also-work-with-de.patch b/0144-90crypt-Fixed-crypttab_contains-to-also-work-with-de.patch new file mode 100644 index 0000000..96a1ad1 --- /dev/null +++ b/0144-90crypt-Fixed-crypttab_contains-to-also-work-with-de.patch @@ -0,0 +1,69 @@ +From 7f4dea242398cc369ff3fecd599faa00d81a522c Mon Sep 17 00:00:00 2001 +From: Julian Wolf +Date: Tue, 19 Aug 2014 16:23:59 +0200 +Subject: 90crypt: Fixed crypttab_contains() to also work with device path in + /etc/crypttab + +blkid is not available when this function is called, so block_uuid.map is put into +the initrd, mapping block devices from /etc/crypttab to UUIDs. + +This fixes a bug where udev rules were created by mistake as crypttab_contains() +returned false for devices specified by path in /etc/crypttab which resulted in +error messages during boot. + +Signed-off-by: Julian Wolf +--- + modules.d/90crypt/crypt-lib.sh | 9 +++++++++ + modules.d/90crypt/module-setup.sh | 4 ++++ + 2 files changed, 13 insertions(+) + +Index: dracut-044/modules.d/90crypt/crypt-lib.sh +=================================================================== +--- dracut-044.orig/modules.d/90crypt/crypt-lib.sh ++++ dracut-044/modules.d/90crypt/crypt-lib.sh +@@ -16,6 +16,14 @@ crypttab_contains() { + [ "$dev" -ef "$_dev" ] && return 0 + done + fi ++ if [ -e /usr/lib/dracut/modules.d/90crypt/block_uuid.map ]; then ++ # search for line starting with $d ++ _line=$(sed -n "\,^$d .*$,{p}" /usr/lib/dracut/modules.d/90crypt/block_uuid.map) ++ [ -z "$_line" ] && continue ++ # get second column with uuid ++ _uuid="$(echo $_line | sed 's,^.* \(.*$\),\1,')" ++ strstr "$_uuid" "${luks##luks-}" && return 0 ++ fi + done < /etc/crypttab + fi + return 1 +Index: dracut-044/modules.d/90crypt/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/90crypt/module-setup.sh ++++ dracut-044/modules.d/90crypt/module-setup.sh +@@ -64,6 +64,8 @@ install() { + inst_hook cleanup 30 "$moddir/crypt-cleanup.sh" + fi + ++ # Have to use exit here, return value gets ignored in dracut.sh... ++ uuid_map_file=$(mktemp /tmp/dracut.XXXXXXXXXX) || exit 1 + if [[ $hostonly ]] && [[ -f /etc/crypttab ]]; then + # filter /etc/crypttab for the devices we need + while read _mapper _dev _rest || [ -n "$_mapper" ]; do +@@ -73,6 +75,8 @@ install() { + [[ $_dev == UUID=* ]] && \ + _dev="/dev/disk/by-uuid/${_dev#UUID=}" + ++ echo "$_dev $(blkid $_dev -s UUID -o value)" >> $uuid_map_file ++ + for _hdev in "${!host_fs_types[@]}"; do + [[ ${host_fs_types[$_hdev]} == "crypto_LUKS" ]] || continue + if [[ $_hdev -ef $_dev ]] || [[ /dev/block/$_hdev -ef $_dev ]]; then +@@ -85,6 +89,8 @@ install() { + fi + + inst_simple "$moddir/crypt-lib.sh" "/lib/dracut-crypt-lib.sh" ++ inst_simple $uuid_map_file "/usr/lib/dracut/modules.d/90crypt/block_uuid.map" ++ rm -f $uuid_map_file + + if dracut_module_included "systemd"; then + inst_multiple -o \ diff --git a/0145-40network-handle-ip-ifname-static-correctly.patch b/0145-40network-handle-ip-ifname-static-correctly.patch new file mode 100644 index 0000000..0cafb18 --- /dev/null +++ b/0145-40network-handle-ip-ifname-static-correctly.patch @@ -0,0 +1,105 @@ +From 4b0e5841ce7dbeca5186e0d47f8835b00007cd6e Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 21 Aug 2014 12:46:45 +0200 +Subject: 40network: handle 'ip=ifname:static' correctly + +'static' configuration means 'apply the settings from the ifcfg file'. +Which might be either static or dhcp. +And for multiple configurations the first configuration can be +either dhcp or static; only the following configurations must +be static. + +References: bnc#892801 + +Signed-off-by: Hannes Reinecke +--- + modules.d/40network/ifup.sh | 40 ++++++++++++++++++++++++++++++---------- + 1 file changed, 30 insertions(+), 10 deletions(-) + +Index: dracut-044/modules.d/40network/ifup.sh +=================================================================== +--- dracut-044.orig/modules.d/40network/ifup.sh ++++ dracut-044/modules.d/40network/ifup.sh +@@ -182,11 +182,13 @@ do_dhcp() { + + info "Preparation for DHCP transaction" + ++ [ -d /var/lib/wicked ] || mkdir -p /var/lib/wicked ++ + local dhclient='' +- if [ "$1" = "-4" ] ; then +- dhclient="wickedd-dhcp4" +- elif [ "$1" = "-6" ] ; then ++ if [ "$1" = "-6" ] ; then + dhclient="wickedd-dhcp6" ++ else ++ dhclient="wickedd-dhcp4" + fi + + if ! iface_has_link $netif; then +@@ -230,33 +232,49 @@ do_ipv6auto() { + return 0 + } + +-# Handle static ip configuration +-do_static() { ++# Handle ip configuration via ifcfg files ++do_ifcfg() { + if [ "$autoconf" = "static" ] && + [ -e /etc/sysconfig/network/ifcfg-${netif} ] ; then + # Pull in existing static configuration + . /etc/sysconfig/network/ifcfg-${netif} + ++ # The first configuration can be anything ++ [ -n "$PREFIXLEN" ] && prefix=${PREFIXLEN} ++ [ -n "$MTU" ] && mtu=${MTU} ++ [ -n "$REMOTE_IPADDR" ] && server=${REMOTE_IPADDR} ++ [ -n "$GATEWAY" ] && gw=${GATEWAY} ++ [ -n "$BOOTPROTO" ] && autoconf=${BOOTPROTO} ++ case "$autoconf" in ++ dhcp6) ++ load_ipv6 ++ do_dhcp -6 ;; ++ dhcp*) ++ do_dhcp -4 ;; ++ *) ++ do_static ;; ++ esac + # loop over all configurations in ifcfg-$netif (IPADDR*) and apply + for conf in ${!IPADDR@}; do + ip=${!conf} + [ -z "$ip" ] && continue + ext=${conf#IPADDR} +- concat="PREFIXLEN$ext" && [ -n "${!concat}" ] && mtu=${!concat} ++ concat="PREFIXLEN$ext" && [ -n "${!concat}" ] && prefix=${!concat} + concat="MTU$ext" && [ -n "${!concat}" ] && mtu=${!concat} + concat="REMOTE_IPADDR$ext" && [ -n "${!concat}" ] && server=${!concat} + concat="GATEWAY$ext" && [ -n "${!concat}" ] && gw=${!concat} +- concat="BOOTPROTO$ext" && [ -n "${!concat}" ] && autoconf=${!concat} +- do_static_setup ++ # Additional configurations must be static ++ do_static + done + else +- do_static_setup ++ do_static + fi + + return 0 + } + +-do_static_setup() { ++# Handle static ip configuration ++do_static() { + strglobin $ip '*:*:*' && load_ipv6 + + if ! linkup $netif; then +@@ -498,6 +516,8 @@ for p in $(getargs ip=); do + do_dhcp -6 ;; + auto6) + do_ipv6auto ;; ++ static) ++ do_ifcfg ;; + *) + do_static ;; + esac diff --git a/0150-Find-kernel-modules-in-extra-and-weak-updates-path-a.patch b/0150-Find-kernel-modules-in-extra-and-weak-updates-path-a.patch new file mode 100644 index 0000000..321b133 --- /dev/null +++ b/0150-Find-kernel-modules-in-extra-and-weak-updates-path-a.patch @@ -0,0 +1,23 @@ +From b5a5fb4486dee09287df825ecd1d2f8b76a98682 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Fri, 29 Aug 2014 15:42:51 +0200 +Subject: Find kernel modules in extra and weak-updates path also + +Signed-off-by: Thomas Renninger +--- + dracut-init.sh | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +Index: dracut-044/dracut-init.sh +=================================================================== +--- dracut-044.orig/dracut-init.sh ++++ dracut-044/dracut-init.sh +@@ -1058,7 +1058,7 @@ find_kernel_modules_by_path () { + _OLDIFS=$IFS + IFS=: + while read a rest || [ -n "$a" ]; do +- [[ $a = */$1/* ]] || [[ $a = updates/* ]] || continue ++ [[ $a = */$1/* ]] || [[ $a = updates/* ]] || [[ $a = extra/* ]] || [[ $a = weak-updates/* ]] || continue + printf "%s\n" "$srcmods/$a" + done < "$srcmods/modules.dep" + IFS=$_OLDIFS diff --git a/0157-Add-boot-zipl-to-host-devs-if-it-is-a-mount-point.patch b/0157-Add-boot-zipl-to-host-devs-if-it-is-a-mount-point.patch new file mode 100644 index 0000000..cca5b38 --- /dev/null +++ b/0157-Add-boot-zipl-to-host-devs-if-it-is-a-mount-point.patch @@ -0,0 +1,24 @@ +From 7067073ca16b10749edd6a508e3c4b1c38c3c7c2 Mon Sep 17 00:00:00 2001 +From: Thomas Renninger +Date: Thu, 11 Sep 2014 15:17:10 +0200 +Subject: Add /boot/zipl to host devs if it is a mount point + +bnc#892187 + +Signed-off-by: Thomas Renninger +--- + dracut.sh | 1 + + 1 files changed, 1 insertions(+), 0 deletions(-) + +Index: dracut-044/dracut.sh +=================================================================== +--- dracut-044.orig/dracut.sh ++++ dracut-044/dracut.sh +@@ -1121,6 +1121,7 @@ if [[ $hostonly ]]; then + "/usr/lib64" \ + "/boot" \ + "/boot/efi" \ ++ "/boot/zipl" \ + ; + do + mp=$(readlink -f "$mp") diff --git a/0158-Add-SUSE-kernel-module-dependencies-in-etc-modprobe.patch b/0158-Add-SUSE-kernel-module-dependencies-in-etc-modprobe.patch new file mode 100644 index 0000000..2aec7b3 --- /dev/null +++ b/0158-Add-SUSE-kernel-module-dependencies-in-etc-modprobe.patch @@ -0,0 +1,70 @@ +From 75faba5ea84fe53df7d3ca3e4f4b6cf390c824bb Mon Sep 17 00:00:00 2001 +From: Jan Loeser +Date: Thu, 11 Sep 2014 15:20:23 +0200 +Subject: Add SUSE kernel module dependencies (in /etc/modprobe.d/*) + +bnc#895331 + +Fixed-by: Fabian Vogt +--- + dracut-init.sh | 6 +++++- + dracut.sh | 12 ++++++++++++ + 2 files changed, 17 insertions(+), 1 deletions(-) + +Index: dracut-044/dracut-init.sh +=================================================================== +--- dracut-044.orig/dracut-init.sh ++++ dracut-044/dracut-init.sh +@@ -944,6 +944,13 @@ for_each_kmod_dep() { + $_func ${_modpath} || exit $? + done + ) ++ ++ for suse_mod_dep in ${suse_mod_deps["${_kmod%.ko*}"]}; do ++ _modpath=$(modinfo -k "$kernel" -F filename "$suse_mod_dep" 2> /dev/null) ++ [ -n "$_modpath" ] || continue ++ for_each_kmod_dep "$_func" "$_modpath" "$@" ++ $_func ${_modpath} || exit $? ++ done + } + + dracut_kernel_post() { +@@ -1141,8 +1148,14 @@ instmods() { + --set-version $kernel ${_moddirname} $_mpargs + ((_ret+=$?)) + else +- [[ $DRACUT_KERNEL_LAZY_HASHDIR ]] && \ ++ if [[ $DRACUT_KERNEL_LAZY_HASHDIR ]] \ ++ && [ -n "${_mod%.ko*}" ]; then + echo ${_mod%.ko*} >> "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist" ++ for suse_mod_dep in ${suse_mod_deps["${_mod%.ko*}"]}; do ++ echo $suse_mod_dep >> "$DRACUT_KERNEL_LAZY_HASHDIR/lazylist" ++ done ++ fi ++ + fi + ;; + esac +Index: dracut-044/dracut.sh +=================================================================== +--- dracut-044.orig/dracut.sh ++++ dracut-044/dracut.sh +@@ -767,6 +767,18 @@ if [[ -n "$logfile" ]];then + fi + fi + ++# parse SUSE kernel module dependencies ++# Kernel modules using "load_module" function may not show up in modprobe ++# depencies. While this is the case there is a workaround in SUSE which adds: ++# # SUSE_INITRD: module_name REQUIRES module1 module2 ... ++# to /etc/modprobe.d/*.conf ++declare -A suse_mod_deps ++while read -r line; do ++ _suse_mod="${line##*SUSE INITRD: }" ++ _suse_mod="${_suse_mod%% REQUIRES*}" ++ suse_mod_deps["$_suse_mod"]="${suse_mod_deps["$_suse_mod"]} ${line##*REQUIRES }" ++done <<< "$(grep -h "^# SUSE INITRD: " /etc/modprobe.d/[0-9][0-9]*.conf)" ++ + # handle compression options. + if [[ $_no_compress_l = "cat" ]]; then + compress="cat" diff --git a/0159-network-Try-to-load-xennet.patch b/0159-network-Try-to-load-xennet.patch new file mode 100644 index 0000000..fa4991a --- /dev/null +++ b/0159-network-Try-to-load-xennet.patch @@ -0,0 +1,25 @@ +From 2a73a8c956bd3b34f19cadd17b44303d8c104a53 Mon Sep 17 00:00:00 2001 +From: Thomas Renninger +Date: Fri, 19 Sep 2014 15:34:54 +0200 +Subject: network: Try to load xennet + +bnc#896464, bnc#896259 + +Signed-off-by: Thomas Renninger +--- + modules.d/40network/module-setup.sh | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +Index: dracut-044/modules.d/90kernel-network-modules/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/90kernel-network-modules/module-setup.sh ++++ dracut-044/modules.d/90kernel-network-modules/module-setup.sh +@@ -61,7 +61,7 @@ installkernel() { + =drivers/net/phy \ + =drivers/net/team \ + =drivers/net/ethernet \ +- ecb arc4 bridge stp llc ipv6 bonding 8021q af_packet virtio_net ++ ecb arc4 bridge stp llc ipv6 bonding 8021q af_packet virtio_net xennet + hostonly="" instmods iscsi_ibft crc32c iscsi_boot_sysfs + } + diff --git a/0160-s390-update_active_devices_initrd.patch b/0160-s390-update_active_devices_initrd.patch new file mode 100644 index 0000000..bc37ebd --- /dev/null +++ b/0160-s390-update_active_devices_initrd.patch @@ -0,0 +1,25 @@ +From: Thomas Blume +Subject: 91zipl: Update active_devices.txt from /boot/zipl device + +References: bsc#939101 + +Signed-off-by: Thomas Blume + +Index: dracut-044/modules.d/91zipl/install_zipl_cmdline.sh +=================================================================== +--- dracut-044.orig/modules.d/91zipl/install_zipl_cmdline.sh 2016-04-12 15:48:34.620382686 +0200 ++++ dracut-044/modules.d/91zipl/install_zipl_cmdline.sh 2016-04-12 15:48:35.140412123 +0200 +@@ -22,6 +22,13 @@ if [ -f ${MNT}/dracut-cmdline.conf ] ; t + cp ${MNT}/dracut-cmdline.conf /etc/cmdline.d/99zipl.conf + fi + ++if [ -f ${MNT}/active_devices.txt ] ; then ++ while read dev etc ; do ++ [ "$dev" = "#" -o "$dev" = "" ] && continue; ++ cio_ignore -r $dev ++ done < ${MNT}/active_devices.txt ++fi ++ + umount ${MNT} + + if [ -f /etc/cmdline.d/99zipl.conf ] ; then diff --git a/0161-95zfcp_rules-simplified-rd.zfcp-commandline-for-NPIV.patch b/0161-95zfcp_rules-simplified-rd.zfcp-commandline-for-NPIV.patch new file mode 100644 index 0000000..9cc6833 --- /dev/null +++ b/0161-95zfcp_rules-simplified-rd.zfcp-commandline-for-NPIV.patch @@ -0,0 +1,94 @@ +From 61d345654fbdd895a406a5a7517f01a7c984a7ed Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 10 Mar 2016 15:45:43 +0100 +Subject: [PATCH] 95zfcp_rules: simplified rd.zfcp commandline for NPIV + +When NPIV is enabled and the allow_lun_scan parameter is set to 'Y' +the HBA will initiate a LUN scan automatically, so there is no need +to specify the WWPN and LUN number manually. + +References: bsc#964456 + +Signed-off-by: Hannes Reinecke +--- + dracut.cmdline.7.asc | 9 ++++++++- + modules.d/95zfcp_rules/module-setup.sh | 23 +++++++++++++++++++---- + modules.d/95zfcp_rules/parse-zfcp.sh | 1 + + 3 files changed, 28 insertions(+), 5 deletions(-) + +Index: dracut-044/dracut.cmdline.7.asc +=================================================================== +--- dracut-044.orig/dracut.cmdline.7.asc 2016-04-12 15:48:42.072804543 +0200 ++++ dracut-044/dracut.cmdline.7.asc 2016-04-12 15:48:46.869076048 +0200 +@@ -771,12 +771,19 @@ DASD + ZFCP + ~~~~ + **rd.zfcp=**____,____,____:: +- rd.zfcp can be specified multiple times on the kernel command line. ++ rd.zfcp can be specified multiple times on the kernel command ++ line. ++ ++**rd.zfcp=**____:: ++ If NPIV is enabled and the 'allow_lun_scan' parameter to the zfcp ++ module is set to 'Y' then the zfcp adaptor will be initiating a ++ scan internally and the and parameters can be omitted. + + + [listing] + .Example + -- + rd.zfcp=0.0.4000,0x5005076300C213e9,0x5022000000000000 ++rd.zfcp=0.0.4000 + -- + + **rd.zfcp.conf=0**:: +Index: dracut-044/modules.d/95zfcp_rules/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/95zfcp_rules/module-setup.sh 2016-04-12 15:48:42.072804543 +0200 ++++ dracut-044/modules.d/95zfcp_rules/module-setup.sh 2016-04-12 15:48:46.869076048 +0200 +@@ -5,15 +5,30 @@ cmdline() { + is_zfcp() { + local _dev=$1 + local _devpath=$(cd -P /sys/dev/block/$_dev ; echo $PWD) +- local _sdev _lun _wwpn _ccw ++ local _sdev _scsiid _hostno _lun _wwpn _ccw _port_type ++ local _allow_lun_scan _is_npiv + ++ _allow_lun_scan=$(cat /sys/module/zfcp/parameters/allow_lun_scan) + [ "${_devpath#*/sd}" == "$_devpath" ] && return 1 + _sdev="${_devpath%%/block/*}" + [ -e ${_sdev}/fcp_lun ] || return 1 +- _lun=$(cat ${_sdev}/fcp_lun) +- _wwpn=$(cat ${_sdev}/wwpn) ++ _scsiid="${_sdev##*/}" ++ _hostno="${_scsiid%%:*}" ++ [ -d /sys/class/fc_host/host${_hostno} ] || return 1 ++ _port_type=$(cat /sys/class/fc_host/host${_hostno}/port_type) ++ case "$_port_type" in ++ NPIV*) ++ _is_npiv=1 ++ ;; ++ esac + _ccw=$(cat ${_sdev}/hba_id) +- echo "rd.zfcp=${_ccw},${_wwpn},${_lun}" ++ if [ "$_is_npiv" ] && [ "$_allow_lun_scan" = "Y" ] ; then ++ echo "rd.zfcp=${_ccw}" ++ else ++ _lun=$(cat ${_sdev}/fcp_lun) ++ _wwpn=$(cat ${_sdev}/wwpn) ++ echo "rd.zfcp=${_ccw},${_wwpn},${_lun}" ++ fi + return 0 + } + [[ $hostonly ]] || [[ $mount_needs ]] && { +Index: dracut-044/modules.d/95zfcp_rules/parse-zfcp.sh +=================================================================== +--- dracut-044.orig/modules.d/95zfcp_rules/parse-zfcp.sh 2016-04-12 15:48:42.072804543 +0200 ++++ dracut-044/modules.d/95zfcp_rules/parse-zfcp.sh 2016-04-12 15:48:46.869076048 +0200 +@@ -31,6 +31,7 @@ ACTION=="add", SUBSYSTEM=="drivers", KER + ACTION=="add", ENV{COLLECT_$ccw}=="0", ATTR{[ccw/$ccw]online}="1" + EOF + fi ++ [ -z "$wwpn" -o -z "$lun" ] && return + m=$(sed -n "/.*${wwpn}.*${lun}.*/p" $_rule) + if [ -z "$m" ] ; then + cat >> $_rule < +Date: Wed, 24 Sep 2014 18:14:37 +0200 +Subject: network: Request DHCP lease instead of getting/applying the offer + +- Request ipv6 lease in proper mode: auto when auto6+dhcp6 requested + otherwise managed mode +- wait for DAD results in case of ipv6 + +Signed-off-by: Pawel Wieczorkiewicz +--- + modules.d/40network/ifup.sh | 20 ++++++++++++++++---- + 1 files changed, 16 insertions(+), 4 deletions(-) + +Index: dracut-044/modules.d/40network/ifup.sh +=================================================================== +--- dracut-044.orig/modules.d/40network/ifup.sh ++++ dracut-044/modules.d/40network/ifup.sh +@@ -186,9 +186,15 @@ do_dhcp() { + + local dhclient='' + if [ "$1" = "-6" ] ; then +- dhclient="wickedd-dhcp6" ++ local ipv6_mode='' ++ if [ -f /tmp/net.$netif.auto6 ] ; then ++ ipv6_mode="auto" ++ else ++ ipv6_mode="managed" ++ fi ++ dhclient="wickedd-dhcp6 --test --test-mode $ipv6_mode" + else +- dhclient="wickedd-dhcp4" ++ dhclient="wickedd-dhcp4 --test" + fi + + if ! iface_has_link $netif; then +@@ -201,10 +207,14 @@ do_dhcp() { + fi + fi + +- $dhclient --test $netif > /tmp/leaseinfo.${netif}.dhcp.ipv${1:1:1} ++ $dhclient --test-format leaseinfo --test-output /tmp/leaseinfo.${netif}.dhcp.ipv${1:1:1} --test-request - $netif << EOF ++ ++EOF + dhcp_apply $1 || return $? + ++ if [ "$1" = "-6" ] ; then ++ wait_for_ipv6_dad $netif ++ fi +- echo $netif > /tmp/setup_net_${netif}.ok + return 0 + } + +@@ -224,6 +234,7 @@ do_ipv6auto() { + echo 0 > /proc/sys/net/ipv6/conf/$netif/forwarding + echo 1 > /proc/sys/net/ipv6/conf/$netif/accept_ra + echo 1 > /proc/sys/net/ipv6/conf/$netif/accept_redirects ++ echo 1 > /proc/sys/net/ipv6/conf/$netif/autoconf + linkup $netif + wait_for_ipv6_auto $netif + +@@ -515,6 +526,7 @@ for p in $(getargs ip=); do + load_ipv6 + do_dhcp -6 ;; + auto6) ++ echo $netif > /tmp/net.$netif.auto6 + do_ipv6auto ;; + static) + do_ifcfg ;; diff --git a/0163-Install-etc-sysconfig-console-to-see-specific-fonts.patch b/0163-Install-etc-sysconfig-console-to-see-specific-fonts.patch new file mode 100644 index 0000000..c9bb00a --- /dev/null +++ b/0163-Install-etc-sysconfig-console-to-see-specific-fonts.patch @@ -0,0 +1,28 @@ +From 4ef054c0510f24e8652726674461833a33643b26 Mon Sep 17 00:00:00 2001 +From: Thomas Renninger +Date: Tue, 30 Sep 2014 16:58:05 +0200 +Subject: Install /etc/sysconfig/console to see specific fonts + +bnc#897972 + +Author: Werner Fink +Signed-off-by: Thomas Renninger +--- + modules.d/10i18n/module-setup.sh | 4 ++++ + 1 file changed, 4 insertions(+) + +Index: dracut-042/modules.d/10i18n/module-setup.sh +=================================================================== +--- dracut-042.orig/modules.d/10i18n/module-setup.sh 2015-06-11 17:39:47.000000000 +0200 ++++ dracut-042/modules.d/10i18n/module-setup.sh 2015-06-24 18:02:33.938771180 +0200 +@@ -219,6 +219,10 @@ install() { + print_vars KEYMAP EXT_KEYMAPS UNICODE FONT FONT_MAP FONT_UNIMAP >> ${initdir}${VCONFIG_CONF} + fi + ++ if dracut_module_included "systemd" && [[ -f /etc/sysconfig/console ]]; then ++ inst_simple /etc/sysconfig/console ++ fi ++ + return 0 + } + diff --git a/0164-Fix-initramfs-ver.img-vs-initrd-ver-in-dracut-initra.patch b/0164-Fix-initramfs-ver.img-vs-initrd-ver-in-dracut-initra.patch new file mode 100644 index 0000000..1bfdca1 --- /dev/null +++ b/0164-Fix-initramfs-ver.img-vs-initrd-ver-in-dracut-initra.patch @@ -0,0 +1,25 @@ +From 76396977ee19d97697226bda13de007030433854 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= +Date: Wed, 15 Oct 2014 17:50:36 +0200 +Subject: Fix initramfs-$ver.img vs initrd-$ver in dracut-initramfs-restore.sh + +dracut-shutdown.service invokes dracut-initramfs-restore script which +will never work in openSUSE because initrd images are named initrd not +initramfs. +--- + dracut-initramfs-restore.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: dracut-042/dracut-initramfs-restore.sh +=================================================================== +--- dracut-042.orig/dracut-initramfs-restore.sh 2015-06-11 17:39:47.000000000 +0200 ++++ dracut-042/dracut-initramfs-restore.sh 2015-06-24 18:02:34.238788260 +0200 +@@ -19,7 +19,7 @@ mount -o ro /boot &>/dev/null + if [[ $MACHINE_ID ]] && [[ -d /boot/${MACHINE_ID} || -L /boot/${MACHINE_ID} ]] ; then + IMG="/boot/${MACHINE_ID}/${KERNEL_VERSION}/initrd" + fi +-[[ -f $IMG ]] || IMG="/boot/initramfs-${KERNEL_VERSION}.img" ++[[ -f $IMG ]] || IMG="/boot/initrd-${KERNEL_VERSION}" + + cd /run/initramfs + diff --git a/0168-remove_plymouth_logo_file.patch b/0168-remove_plymouth_logo_file.patch new file mode 100644 index 0000000..7931dd0 --- /dev/null +++ b/0168-remove_plymouth_logo_file.patch @@ -0,0 +1,32 @@ +From 280d52085fe2876bc08ce1dcdbf1522f8861801c Mon Sep 17 00:00:00 2001 +From: Shawn W Dunn +Date: Tue, 23 Aug 2016 13:16:20 +0200 +Subject: 50plymouth: remove PLYMOUTH_LOGO_FILE + +Remove PLYMOUTH_LOGO_FILE from plymouth-populate-initrd.sh + +References: bnc#910952 + +Signed-off-by: Shawn W Dunn +--- + modules.d/50plymouth/plymouth-populate-initrd.sh | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/modules.d/50plymouth/plymouth-populate-initrd.sh b/modules.d/50plymouth/plymouth-populate-initrd.sh +index 6c184ac..3294878 100755 +--- a/modules.d/50plymouth/plymouth-populate-initrd.sh ++++ b/modules.d/50plymouth/plymouth-populate-initrd.sh +@@ -1,10 +1,8 @@ + #!/bin/bash + +-PLYMOUTH_LOGO_FILE="/usr/share/pixmaps/system-logo-white.png" + PLYMOUTH_THEME=$(plymouth-set-default-theme) + + inst_multiple plymouthd plymouth \ +- "${PLYMOUTH_LOGO_FILE}" \ + /etc/system-release + + mkdir -m 0755 -p "${initdir}/usr/share/plymouth" +-- +2.6.6 + diff --git a/0169-network_set_mtu_macaddr_for_dhcp.patch b/0169-network_set_mtu_macaddr_for_dhcp.patch new file mode 100644 index 0000000..cd9f1e8 --- /dev/null +++ b/0169-network_set_mtu_macaddr_for_dhcp.patch @@ -0,0 +1,106 @@ +From b27ca9cfcb5df2066e87f673cb5c060bcf4016fa Mon Sep 17 00:00:00 2001 +From: Pawel Wieczorkiewicz +Date: Tue, 23 Aug 2016 12:29:03 +0200 +Subject: Set MTU and LLADDR for DHCP if specified + +References: boo#959803 + +Signed-off-by: Pawel Wieczorkiewicz +--- + modules.d/40network/ifup.sh | 52 ++++++++++++++++++++++++++++----------------- + 1 file changed, 32 insertions(+), 20 deletions(-) + +diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh +index 0aaea72..3b92854 100755 +--- a/modules.d/40network/ifup.sh ++++ b/modules.d/40network/ifup.sh +@@ -90,7 +90,7 @@ else + fi + + dhcp_apply() { +- unset IPADDR INTERFACE BROADCAST NETWORK PREFIXLEN ROUTES GATEWAYS HOSTNAME DNSDOMAIN DNSSEARCH DNSSERVERS ++ unset IPADDR INTERFACE BROADCAST NETWORK PREFIXLEN ROUTES GATEWAYS MTU HOSTNAME DNSDOMAIN DNSSEARCH DNSSERVERS + if [ -f /tmp/leaseinfo.${netif}.dhcp.ipv${1:1:1} ]; then + . /tmp/leaseinfo.${netif}.dhcp.ipv${1:1:1} + else +@@ -128,6 +128,9 @@ dhcp_apply() { + done + fi + ++ # Set MTU ++ [ -n "${MTU}" ] && ip $1 link set mtu "$MTU" dev "$INTERFACE" ++ + # Setup hostname + [ -n "${HOSTNAME}" ] && hostname "$HOSTNAME" + +@@ -167,6 +170,25 @@ dhcp_apply() { + return 0 + } + ++read_ifcfg() { ++ unset PREFIXLEN LLADDR MTU REMOTE_IPADDR GATEWAY BOOTPROTO ++ ++ if [ -e /etc/sysconfig/network/ifcfg-${netif} ] ; then ++ # Pull in existing configuration ++ . /etc/sysconfig/network/ifcfg-${netif} ++ ++ # The first configuration can be anything ++ [ -n "$PREFIXLEN" ] && prefix=${PREFIXLEN} ++ [ -n "$LLADDR" ] && macaddr=${LLADDR} ++ [ -n "$MTU" ] && mtu=${MTU} ++ [ -n "$REMOTE_IPADDR" ] && server=${REMOTE_IPADDR} ++ [ -n "$GATEWAY" ] && gw=${GATEWAY} ++ [ -n "$BOOTPROTO" ] && autoconf=${BOOTPROTO} ++ return 0 ++ fi ++ return 1 ++} ++ + # Run dhclient + do_dhcp() { + # dhclient-script will mark the netif up and generate the online +@@ -197,14 +219,14 @@ do_dhcp() { + dhclient="wickedd-dhcp4 --test" + fi + +- if ! iface_has_link $netif; then +- warn "No carrier detected" +- warn "Trying to set $netif up..." +- ip $1 link set dev "$netif" up +- if ! iface_has_link $netif; then +- warn "Failed..." +- return 1 +- fi ++ if ! linkup $netif; then ++ warn "Could not bring interface $netif up!" ++ return 1 ++ fi ++ ++ if read_ifcfg ; then ++ [ -n "$macaddr" ] && ip $1 link set address $macaddr dev $netif ++ [ -n "$mtu" ] && ip $1 link set mtu $mtu dev $netif + fi + + $dhclient --test-format leaseinfo --test-output /tmp/leaseinfo.${netif}.dhcp.ipv${1:1:1} --test-request - $netif << EOF +@@ -245,17 +267,7 @@ do_ipv6auto() { + + # Handle ip configuration via ifcfg files + do_ifcfg() { +- if [ "$autoconf" = "static" ] && +- [ -e /etc/sysconfig/network/ifcfg-${netif} ] ; then +- # Pull in existing static configuration +- . /etc/sysconfig/network/ifcfg-${netif} +- +- # The first configuration can be anything +- [ -n "$PREFIXLEN" ] && prefix=${PREFIXLEN} +- [ -n "$MTU" ] && mtu=${MTU} +- [ -n "$REMOTE_IPADDR" ] && server=${REMOTE_IPADDR} +- [ -n "$GATEWAY" ] && gw=${GATEWAY} +- [ -n "$BOOTPROTO" ] && autoconf=${BOOTPROTO} ++ if [ "$autoconf" = "static" ] && read_ifcfg; then + case "$autoconf" in + dhcp6) + load_ipv6 +-- +2.6.6 + diff --git a/0170-iscsi-skip-ibft-invalid-dhcp.patch b/0170-iscsi-skip-ibft-invalid-dhcp.patch new file mode 100644 index 0000000..93f07e5 --- /dev/null +++ b/0170-iscsi-skip-ibft-invalid-dhcp.patch @@ -0,0 +1,28 @@ +From e5d14a8adbfc875517e5d873bea18bf9d997b91f Mon Sep 17 00:00:00 2001 +From: Thomas Renninger +Date: Tue, 23 Aug 2016 12:30:21 +0200 +Subject: 40network: fixup invalid DHCP setting for iBFT + +References: bsc#953361 + +Signed-off-by: Thomas Renninger +--- + modules.d/40network/net-lib.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh +index 5aa1468..0a77d4b 100755 +--- a/modules.d/40network/net-lib.sh ++++ b/modules.d/40network/net-lib.sh +@@ -288,7 +288,7 @@ ibft_to_cmdline() { + ;; + esac + fi +- if [ -n "$dhcp" ] || [ "$origin" -eq 3 ]; then ++ if [ -n "$dhcp" -a "$dhcp" != "0.0.0.0" ] || [ -z "$dhcp" -a "$origin" -eq 3 ]; then + if [ "$family" = "ipv6" ] ; then + echo "ip=$dev:dhcp6" + else +-- +2.6.6 + diff --git a/0180-i18n_add_correct_fontmaps.patch b/0180-i18n_add_correct_fontmaps.patch new file mode 100644 index 0000000..b9de2be --- /dev/null +++ b/0180-i18n_add_correct_fontmaps.patch @@ -0,0 +1,32 @@ +From 5f56e6a34ddbc27eee6f7fbe5776bd23629b2e4d Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Wed, 4 May 2016 13:08:19 +0200 +Subject: 10i18n: Add correct fontmaps + +References: bsc#943312, bsc#932981 + +Signed-off-by: Fabian Vogt +--- + modules.d/10i18n/module-setup.sh | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/modules.d/10i18n/module-setup.sh b/modules.d/10i18n/module-setup.sh +index 398d02b..4fd0b26 100755 +--- a/modules.d/10i18n/module-setup.sh ++++ b/modules.d/10i18n/module-setup.sh +@@ -196,7 +196,11 @@ install() { + if [[ ${FONT_MAP} ]] + then + FONT_MAP=${FONT_MAP%.trans} +- inst_simple ${kbddir}/consoletrans/${FONT_MAP}.trans ++ # There are three different formats that setfont supports ++ inst_simple ${kbddir}/consoletrans/${FONT_MAP} \ ++ || inst_simple ${kbddir}/consoletrans/${FONT_MAP}.trans \ ++ || inst_simple ${kbddir}/consoletrans/${FONT_MAP}_to_uni.trans \ ++ || dwarn "Could not find FONT_MAP ${FONT_MAP}!" + fi + + if [[ ${FONT_UNIMAP} ]] +-- +2.6.6 + diff --git a/0182-fix-include-parsing.patch b/0182-fix-include-parsing.patch new file mode 100644 index 0000000..35a0622 --- /dev/null +++ b/0182-fix-include-parsing.patch @@ -0,0 +1,41 @@ +From 11d6560d7bbd8a4c4610a39c0985e50d728920fb Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Mon, 21 Sep 2015 15:15:07 +0200 +Subject: [PATCH] Fix parsing of "-i" and "--include" + +- dracut replaced every instance of "-i" in the cmdline, + even if it was part of a kernel image name, e.g. "vmlinuz-i" +- Fixes boo#908452 + +Signed-off-by: Fabian Vogt +--- + dracut.sh | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +Index: dracut-044/dracut.sh +=================================================================== +--- dracut-044.orig/dracut.sh ++++ dracut-044/dracut.sh +@@ -279,11 +279,17 @@ dropindirs_sort() + rearrange_params() + { + # Workaround -i, --include taking 2 arguments +- set -- "${@/--include/++include}" +- +- # This prevents any long argument ending with "-i" +- # -i, like --opt-i but I think we can just prevent that +- set -- "${@/%-i/++include}" ++ newat=() ++ for i in "$@"; do ++ if [[ $i =~ ^-i(.*) ]]; then ++ newat+=("++include" "${BASH_REMATCH[1]}") # Replace -i by ++include ++ elif [[ $i == "--include" ]]; then ++ newat+=("++include") # Replace --include by ++include ++ else ++ newat+=("$i") ++ fi ++ done ++ set -- "${newat[@]}" # Set new $@ + + TEMP=$(unset POSIXLY_CORRECT; getopt \ + -o "a:m:o:d:I:k:c:L:fvqlHhMN" \ diff --git a/0183-fix_add_drivers_hang.patch b/0183-fix_add_drivers_hang.patch new file mode 100644 index 0000000..3e46caa --- /dev/null +++ b/0183-fix_add_drivers_hang.patch @@ -0,0 +1,25 @@ +From d774a6f49771b9f55de2956c3c0038a7655b6e94 Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Wed, 23 Sep 2015 12:12:08 +0200 +Subject: [PATCH] Fix possible hang in dracut + +- Caused by add_drivers+=" " in dracut.conf (bsc#923116) + +Signed-off-by: Fabian Vogt +--- + dracut.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: dracut-044/dracut.sh +=================================================================== +--- dracut-044.orig/dracut.sh ++++ dracut-044/dracut.sh +@@ -1441,7 +1441,7 @@ if [[ $no_kernel != yes ]]; then + hostonly='' instmods $drivers + fi + +- if [[ $add_drivers ]]; then ++ if [[ -n "${add_drivers// }" ]]; then + hostonly='' instmods -c $add_drivers + fi + if [[ $force_drivers ]]; then diff --git a/0188-95dasd_rules-Install-collect-udev-helper-binary.patch b/0188-95dasd_rules-Install-collect-udev-helper-binary.patch new file mode 100644 index 0000000..3fb05d3 --- /dev/null +++ b/0188-95dasd_rules-Install-collect-udev-helper-binary.patch @@ -0,0 +1,25 @@ +From: Thomas Renninger +Date: Mon, 3 Aug 2015 14:07:59 +0200 +Subject: 95dasd_rules: Install 'collect' udev helper binary + +Install the 'collect' udev helper binary for s390-specific rules. + +References: bsc#938867 + +Signed-off-by: Thomas Renninger +--- + modules.d/95dasd_rules/module-setup.sh | 1 + + 1 file changed, 1 insertion(+) + +Index: dracut-044/modules.d/95dasd_rules/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/95dasd_rules/module-setup.sh 2016-04-25 15:02:50.532329644 +0200 ++++ dracut-044/modules.d/95dasd_rules/module-setup.sh 2016-04-25 15:02:52.384434310 +0200 +@@ -45,6 +45,7 @@ depends() { + + # called by dracut + install() { ++ inst_multiple /usr/lib/udev/collect + inst_hook cmdline 30 "$moddir/parse-dasd.sh" + if [[ $hostonly_cmdline == "yes" ]] ; then + local _dasd=$(cmdline) diff --git a/0190-replace-iscsistart-with-systemd-service-files.patch b/0190-replace-iscsistart-with-systemd-service-files.patch new file mode 100644 index 0000000..3747dbe --- /dev/null +++ b/0190-replace-iscsistart-with-systemd-service-files.patch @@ -0,0 +1,182 @@ +From c426dc773fe654aed309375e20e398e9299ca34e Mon Sep 17 00:00:00 2001 +From: Thomas Blume +Date: Mon, 19 Oct 2015 09:14:53 +0200 +Subject: Replace iscsistart with iscsiadm +References: FATE#319024 + +iscsistart allows for a single connection only, and offers no means +or terminating or re-establishing another one. +So replace iscsistart with iscsiadm to allow several connection for +multipath booting and also to ease maintenance in case of error. + +Signed-off-by: Thomas Blume +--- + modules.d/95iscsi/iscsiroot.sh | 48 ++++++++++++++++++++++++------------ + modules.d/95iscsi/module-setup.sh | 19 ++++++++++++-- + modules.d/95iscsi/parse-iscsiroot.sh | 2 +- + 3 files changed, 50 insertions(+), 19 deletions(-) + +Index: dracut-044/modules.d/95iscsi/iscsiroot.sh +=================================================================== +--- dracut-044.orig/modules.d/95iscsi/iscsiroot.sh 2016-04-18 17:43:51.198589298 +0200 ++++ dracut-044/modules.d/95iscsi/iscsiroot.sh 2016-04-18 17:53:11.962323970 +0200 +@@ -43,17 +43,13 @@ fi + + handle_firmware() + { +- if ! iscsistart -f; then +- warn "iscistart: Could not get list of targets from firmware." ++ if ! iscsiadm -m fw; then ++ warn "iscsiadm: Could not get list of targets from firmware." + return 1 + fi + +- for p in $(getargs rd.iscsi.param -d iscsi_param); do +- iscsi_param="$iscsi_param --param $p" +- done +- +- if ! iscsistart -b $iscsi_param; then +- warn "'iscsistart -b $iscsi_param' failed with return code $?" ++ if ! iscsiadm -m fw -l; then ++ warn "iscsiadm: Log-in to iscsi target failed" + fi + + echo 'started' > "/tmp/iscsistarted-iscsi:" +@@ -77,7 +73,7 @@ handle_netroot() + # override conf settings by command line options + arg=$(getarg rd.iscsi.initiator -d iscsi_initiator=) + [ -n "$arg" ] && iscsi_initiator=$arg +- arg=$(getarg rd.iscsi.target.name -d iscsi_target_name=) ++ arg=$(getargs rd.iscsi.target.name -d iscsi_target_name=) + [ -n "$arg" ] && iscsi_target_name=$arg + arg=$(getarg rd.iscsi.target.ip -d iscsi_target_ip) + [ -n "$arg" ] && iscsi_target_ip=$arg +@@ -94,7 +90,7 @@ handle_netroot() + arg=$(getarg rd.iscsi.in.password -d iscsi_in_password=) + [ -n "$arg" ] && iscsi_in_password=$arg + for p in $(getargs rd.iscsi.param -d iscsi_param); do +- iscsi_param="$iscsi_param --param $p" ++ iscsi_param="$iscsi_param $p" + done + + parse_iscsi_root "$1" || return 1 +@@ -182,45 +178,37 @@ handle_netroot() + echo "iscsi_lun=$iscsi_lun . /bin/mount-lun.sh " > $hookdir/mount/01-$$-iscsi.sh + fi + +- if [ -n "$DRACUT_SYSTEMD" ] && command -v systemd-run >/dev/null 2>&1; then +- netroot_enc=$(systemd-escape "iscsistart_${1}") +- status=$(systemctl is-active "$netroot_enc" 2>/dev/null) +- is_active=$? +- if [ $is_active -ne 0 ]; then +- if [ "$status" != "activating" ] && ! systemctl is-failed "$netroot_enc" >/dev/null 2>&1; then +- systemd-run --no-block --service-type=oneshot --remain-after-exit --quiet \ +- --description="Login iSCSI Target $iscsi_target_name" \ +- --unit="$netroot_enc" -- \ +- $(command -v iscsistart) \ +- -i "$iscsi_initiator" -t "$iscsi_target_name" \ +- -g "$iscsi_target_group" -a "$iscsi_target_ip" \ +- -p "$iscsi_target_port" \ +- ${iscsi_username:+-u "$iscsi_username"} \ +- ${iscsi_password:+-w "$iscsi_password"} \ +- ${iscsi_in_username:+-U "$iscsi_in_username"} \ +- ${iscsi_in_password:+-W "$iscsi_in_password"} \ +- ${iscsi_iface_name:+--param "iface.iscsi_ifacename=$iscsi_iface_name"} \ +- ${iscsi_netdev_name:+--param "iface.net_ifacename=$iscsi_netdev_name"} \ +- ${iscsi_param} >/dev/null 2>&1 \ +- && { > $hookdir/initqueue/work ; } ++ ### ToDo: Upstream calls systemd-run - Shall we, do we have to port this? ++ ++ if iscsiadm -m node; then ++ targets=$(iscsiadm -m node | sed 's/^.*iqn/iqn/') ++ else ++ targets=$(iscsiadm -m discovery -t st -p $iscsi_target_ip:${iscsi_target_port:+$iscsi_target_port} | sed 's/^.*iqn/iqn/') ++ [ -z "$targets" ] && echo "Target discovery to $iscsi_target_ip:${iscsi_target_port:+$iscsi_target_port} failed with status $?" && exit 1 ++ fi ++ ++ for target in $iscsi_target_name; do ++ if [[ "$targets" =~ "$target" ]]; then ++ if [ -n "$iscsi_iface_name" ]; then ++ $(iscsiadm -m iface -I $iscsi_iface_name --op=new) ++ [ -n "$iscsi_initiator" ] && $(iscsiadm -m iface -I $iscsi_iface_name --op=update --name=iface.initiatorname --value=$iscsi_initiator) ++ [ -n "$iscsi_netdev_name" ] && $(iscsiadm -m iface -I $iscsi_iface_name --op=update --name=iface.net_ifacename --value=$iscsi_netdev_name) ++ COMMAND="iscsiadm -m node -T $target -p $iscsi_target_ip${iscsi_target_port:+:$iscsi_target_port} -I $iscsi_iface_name --op=update" + else +- systemctl --no-block restart "$netroot_enc" >/dev/null 2>&1 \ +- && { > $hookdir/initqueue/work ; } ++ COMMAND="iscsiadm -m node -T $target -p $iscsi_target_ip${iscsi_target_port:+:$iscsi_target_port} --op=update" + fi ++ $($COMMAND --name=node.startup --value=onboot) ++ [ -n "$iscsi_username" ] && $($COMMAND --name=node.session.auth.username --value=$iscsi_username) ++ [ -n "$iscsi_password" ] && $($COMMAND --name=node.session.auth.password --value=$iscsi_password) ++ [ -n "$iscsi_in_username" ] && $($COMMAND --name=node.session.auth.username_in --value=$iscsi_in_username) ++ [ -n "$iscsi_in_password" ] && $($COMMAND --name=node.session.auth.password_in --value=$iscsi_in_password) ++ [ -n "$iscsi_param" ] && $($COMMAND --name=${iscsi_param%=*} --value=${iscsi_param#*=} + fi +- else +- iscsistart -i "$iscsi_initiator" -t "$iscsi_target_name" \ +- -g "$iscsi_target_group" -a "$iscsi_target_ip" \ +- -p "$iscsi_target_port" \ +- ${iscsi_username:+-u "$iscsi_username"} \ +- ${iscsi_password:+-w "$iscsi_password"} \ +- ${iscsi_in_username:+-U "$iscsi_in_username"} \ +- ${iscsi_in_password:+-W "$iscsi_in_password"} \ +- ${iscsi_iface_name:+--param "iface.iscsi_ifacename=$iscsi_iface_name"} \ +- ${iscsi_netdev_name:+--param "iface.net_ifacename=$iscsi_netdev_name"} \ +- ${iscsi_param} \ +- && { > $hookdir/initqueue/work ; } +- fi ++ done ++ ++ iscsiadm -m node -L onboot || : ++ > $hookdir/initqueue/work ++ + netroot_enc=$(str_replace "$1" '/' '\2f') + echo 'started' > "/tmp/iscsistarted-iscsi:${netroot_enc}" + return 0 +Index: dracut-044/modules.d/95iscsi/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/95iscsi/module-setup.sh 2016-04-18 17:43:51.198589298 +0200 ++++ dracut-044/modules.d/95iscsi/module-setup.sh 2016-04-18 17:53:11.962323970 +0200 +@@ -4,7 +4,7 @@ + check() { + local _rootdev + # If our prerequisites are not met, fail anyways. +- require_binaries iscsistart hostname iscsi-iname || return 1 ++ require_binaries hostname iscsi-iname iscsiadm iscsid || return 1 + + # If hostonly was requested, fail the check if we are not actually + # booting from root. +@@ -211,9 +211,22 @@ cmdline() { + + # called by dracut + install() { +- inst_multiple umount iscsistart hostname iscsi-iname + inst_multiple -o iscsiuio + inst_libdir_file 'libgcc_s.so*' ++ inst_multiple umount hostname iscsi-iname iscsiadm iscsid ++ ++ ln -sf $systemdsystemunitdir/iscsid.socket $systemdsystemunitdir/sockets.target.wants/iscsid.socket ++ ln -sf $systemdsystemunitdir/iscsiuio.socket $systemdsystemunitdir/sockets.target.wants/iscsiuio.socket ++ ++ inst_multiple -o \ ++ $systemdsystemunitdir/iscsid.socket \ ++ $systemdsystemunitdir/iscsid.service \ ++ $systemdsystemunitdir/iscsiuio.service \ ++ $systemdsystemunitdir/iscsiuio.socket \ ++ $systemdsystemunitdir/sockets.target.wants/iscsid.socket \ ++ $systemdsystemunitdir/sockets.target.wants/iscsiuio.socket ++ ++ [[ -d /etc/iscsi ]] && inst_dir $(/usr/bin/find /etc/iscsi) + + # Detect iBFT and perform mandatory steps + if [[ $hostonly_cmdline == "yes" ]] ; then +@@ -221,6 +234,8 @@ install() { + [[ $_iscsiconf ]] && printf "%s\n" "$_iscsiconf" >> "${initdir}/etc/cmdline.d/95iscsi.conf" + fi + ++ echo 'rd.neednet=1' >> "${initdir}/etc/cmdline.d/95iscsi.conf" ++ + inst_hook cmdline 90 "$moddir/parse-iscsiroot.sh" + inst_hook cleanup 90 "$moddir/cleanup-iscsi.sh" + inst "$moddir/iscsiroot.sh" "/sbin/iscsiroot" diff --git a/0191-static_network_setup_return_zero.patch b/0191-static_network_setup_return_zero.patch new file mode 100644 index 0000000..1e63215 --- /dev/null +++ b/0191-static_network_setup_return_zero.patch @@ -0,0 +1,40 @@ +From: Thomas Blume +Subject: Unset gateway variable if emtpy + +If the gateway variable is empty (ie '::' for IPv6 or '0.0.0.0' for IPv4) +it should be unset. + +References: bsc#919179 + +Signed-off-by: Thomas Blume + +Index: dracut-044/modules.d/40network/ifup.sh +=================================================================== +--- dracut-044.orig/modules.d/40network/ifup.sh 2016-04-11 17:41:48.628218989 +0200 ++++ dracut-044/modules.d/40network/ifup.sh 2016-04-11 17:43:45.250819391 +0200 +@@ -327,6 +327,7 @@ if strglobin $ip '*:*:*'; then + # note no ip addr flush for ipv6 + ip addr add $ip/$prefix ${srv:+peer $srv} dev $netif + wait_for_ipv6_dad $netif ++ [ "$gw" = "::" ] && gw="" + else + if ! arping -f -q -D -c 2 -I $netif $ip; then + warn "Duplicate address detected for $ip for interface $netif." +@@ -335,6 +336,7 @@ if strglobin $ip '*:*:*'; then + # Assume /24 prefix for IPv4 + [ -z "$prefix" ] && prefix=24 + ip addr add $ip/$prefix ${srv:+peer $srv} brd + dev $netif ++ [ "$gw" = "0.0.0.0" ] && gw="" + fi + + [ -n "$gw" ] && echo ip route replace default via $gw dev $netif > /tmp/net.$netif.gw +@@ -352,6 +354,9 @@ if strglobin $ip '*:*:*'; then + done + + [ -n "$hostname" ] && echo "echo $hostname > /proc/sys/kernel/hostname" > /tmp/net.$netif.hostname ++ ++ [ $? -ne 0 ] && info "Static network setup returned $?" ++ return 0 + } + + # loopback is always handled the same way diff --git a/0192-iscsi_set_boot_protocol_from_ifcfg.patch b/0192-iscsi_set_boot_protocol_from_ifcfg.patch new file mode 100644 index 0000000..85e97cf --- /dev/null +++ b/0192-iscsi_set_boot_protocol_from_ifcfg.patch @@ -0,0 +1,27 @@ +From: Thomas Blume +Subject: set boot protocol for iscsi from ifcfg file + +References: bsc#919179 + +Signed-off-by: Thomas Blume + +Index: dracut-044/modules.d/95iscsi/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/95iscsi/module-setup.sh 2016-04-14 14:12:39.693392427 +0200 ++++ dracut-044/modules.d/95iscsi/module-setup.sh 2016-04-14 14:53:00.630227712 +0200 +@@ -104,7 +104,14 @@ install_iscsiroot() { + [ -z "$iscsi_address" ] && return + local_address=$(ip -o route get to $iscsi_address | sed -n 's/.*src \([0-9a-f.:]*\).*/\1/p') + ifname=$(ip -o route get to $iscsi_address | sed -n 's/.*dev \([^ ]*\).*/\1/p') +- printf 'ip=%s:static ' ${ifname} ++ ++ #follow ifcfg settings for boot protocol ++ bootproto=$(sed -n "/BOOTPROTO/s/BOOTPROTO='\([[:alpha:]]*6\?\)4\?'/\1/p" /etc/sysconfig/network/ifcfg-$ifname) ++ if [ $bootproto ]; then ++ printf 'ip=%s:%s ' ${ifname} ${bootproto} ++ else ++ printf 'ip=%s:static ' ${ifname} ++ fi + + if [ -e /sys/class/net/$ifname/address ] ; then + ifmac=$(cat /sys/class/net/$ifname/address) diff --git a/0193-95iscsi-Set-number-of-login-retries.patch b/0193-95iscsi-Set-number-of-login-retries.patch new file mode 100644 index 0000000..7d93261 --- /dev/null +++ b/0193-95iscsi-Set-number-of-login-retries.patch @@ -0,0 +1,66 @@ +From: Thomas Blume +Date: Mon, 19 Oct 2015 09:39:41 +0200 +Subject: Set number of login retries + +Allow to set the number of login retries from the kernel commandline. + +References: bsc#919179 + +Signed-off-by: Thomas Blume +--- + modules.d/95iscsi/iscsiroot.sh | 25 +++++++++++++++++++++---- + 1 file changed, 21 insertions(+), 4 deletions(-) + +Index: dracut-044/modules.d/95iscsi/iscsiroot.sh +=================================================================== +--- dracut-044.orig/modules.d/95iscsi/iscsiroot.sh 2016-04-14 14:52:44.685325362 +0200 ++++ dracut-044/modules.d/95iscsi/iscsiroot.sh 2016-04-14 14:57:07.628188324 +0200 +@@ -41,6 +41,14 @@ if [ -z "${DRACUT_SYSTEMD}" ] && [ -e /s + > /tmp/iscsiuio-started + fi + ++#set value for initial login retry ++set_login_retries() { ++ local default retries ++ default=2 ++ retries=$(getarg rd.iscsilogin.retries) ++ return ${retries:-$default} ++} ++ + handle_firmware() + { + if ! iscsiadm -m fw; then +@@ -67,7 +75,7 @@ handle_netroot() + local iscsi_username iscsi_password + local iscsi_in_username iscsi_in_password + local iscsi_iface_name iscsi_netdev_name +- local iscsi_param ++ local iscsi_param param + local p + + # override conf settings by command line options +@@ -100,6 +108,15 @@ handle_netroot() + ip route get "$iscsi_target_ip" >/dev/null 2>&1 || return 0 + fi + ++ #limit iscsistart login retries ++ if [[ ! "$iscsi_param" =~ "node.session.initial_login_retry_max" ]]; then ++ set_login_retries ++ retries=$? ++ if [ $retries -gt 0 ]; then ++ iscsi_param="${iscsi_param% } node.session.initial_login_retry_max=$retries" ++ fi ++ fi ++ + # XXX is this needed? + getarg ro && iscsirw=ro + getarg rw && iscsirw=rw +@@ -202,7 +219,7 @@ handle_netroot() + [ -n "$iscsi_password" ] && $($COMMAND --name=node.session.auth.password --value=$iscsi_password) + [ -n "$iscsi_in_username" ] && $($COMMAND --name=node.session.auth.username_in --value=$iscsi_in_username) + [ -n "$iscsi_in_password" ] && $($COMMAND --name=node.session.auth.password_in --value=$iscsi_in_password) +- [ -n "$iscsi_param" ] && $($COMMAND --name=${iscsi_param%=*} --value=${iscsi_param#*=} ++ [ -n "$iscsi_param" ] && for param in $iscsi_param; do $($COMMAND --name=${param%=*} --value=${param#*=}); done + fi + done + diff --git a/0196-ibft-wait-for-session-on-all-paths.patch b/0196-ibft-wait-for-session-on-all-paths.patch new file mode 100644 index 0000000..12acf86 --- /dev/null +++ b/0196-ibft-wait-for-session-on-all-paths.patch @@ -0,0 +1,43 @@ +From 3944cdfd4d99c3d7cd8e801f786e75ed6d254e51 Mon Sep 17 00:00:00 2001 +From: Thomas Renninger +Date: Tue, 23 Aug 2016 12:33:34 +0200 +Subject: 95iscsi: Wait for session on all paths + +References: bsc#951003 + +Signed-off-by: Thomas Renninger +--- + modules.d/95iscsi/iscsiroot.sh | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh +index 4412188..6ef6276 100755 +--- a/modules.d/95iscsi/iscsiroot.sh ++++ b/modules.d/95iscsi/iscsiroot.sh +@@ -51,11 +51,23 @@ set_login_retries() { + + handle_firmware() + { ++ local ifaces retry ++ + if ! iscsiadm -m fw; then + warn "iscsiadm: Could not get list of targets from firmware." + return 1 + fi + ++ ifaces=( $(echo /sys/firmware/ibft/ethernet*) ) ++ [ -f /tmp/session-retry ] || echo 1 > /tmp/session-retry ++ retry=$(cat /tmp/session-retry) ++ ++ if [ $retry -lt ${#ifaces[*]} ]; then ++ let retry++ ++ echo $retry > /tmp/session-retry ++ return 1 ++ fi ++ + if ! iscsiadm -m fw -l; then + warn "iscsiadm: Log-in to iscsi target failed" + fi +-- +2.6.6 + diff --git a/0197-95iscsi-Do-not-require-network-for-qla4xxx-flash-ses.patch b/0197-95iscsi-Do-not-require-network-for-qla4xxx-flash-ses.patch new file mode 100644 index 0000000..00bdd6d --- /dev/null +++ b/0197-95iscsi-Do-not-require-network-for-qla4xxx-flash-ses.patch @@ -0,0 +1,70 @@ +From 4287dca195e2435c7ab20265db6225f97b576fd3 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Mon, 19 Oct 2015 14:02:19 +0200 +Subject: 95iscsi: Do not require network for qla4xxx flash sessions + +qla4xxx can store boot sessions in flash, which will then +not show up with iBFT. These boot sesssions will be maintained +by the driver; no specific network configuration is required +here. So suppress network setup for these cases. + +References: bsc#935320 + +Signed-off-by: Hannes Reinecke +--- + modules.d/95iscsi/module-setup.sh | 18 +++++++++++++++--- + 1 file changed, 15 insertions(+), 3 deletions(-) + +diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh +index 6dca212..797d4e1 100755 +--- a/modules.d/95iscsi/module-setup.sh ++++ b/modules.d/95iscsi/module-setup.sh +@@ -70,7 +70,7 @@ install_ibft() { + + install_iscsiroot() { + local devpath=$1 +- local scsi_path iscsi_lun session c d conn ++ local scsi_path iscsi_lun session c d conn host flash + local iscsi_session iscsi_address iscsi_port iscsi_targetname iscsi_tpgt + + scsi_path=${devpath%%/block*} +@@ -81,6 +81,19 @@ install_iscsiroot() { + [ "$session" = "$devpath" ] && return 1 + iscsi_session=${session##*/} + [ "$iscsi_session" = "$session" ] && return 1 ++ host=${session%%/session*} ++ [ "$host" = "$session" ] && return 1 ++ iscsi_host=${host##*/} ++ ++ for flash in ${host}/flashnode_sess-* ; do ++ is_boot=$(cat $flash/is_boot_target) ++ if [ $is_boot -eq 1 ] ; then ++ # qla4xxx flashnode session; skip iBFT discovery ++ iscsi_initiator=$(cat /sys/class/iscsi_host/${iscsi_host}/initiatorname) ++ echo "rd.iscsi.initiator=${iscsi_initiator}" ++ return; ++ fi ++ done + + for d in ${session}/* ; do + case $d in +@@ -135,6 +148,7 @@ install_iscsiroot() { + # can sort out rd.iscsi.initiator= duplicates + echo "rd.iscsi.initiator=${iscsi_initiator}" + echo "netroot=iscsi:${iscsi_address}::${iscsi_port}:${iscsi_lun}:${iscsi_targetname}" ++ echo "rd.neednet=1" + fi + return 0 + } +@@ -241,8 +255,6 @@ install() { + [[ $_iscsiconf ]] && printf "%s\n" "$_iscsiconf" >> "${initdir}/etc/cmdline.d/95iscsi.conf" + fi + +- echo 'rd.neednet=1' >> "${initdir}/etc/cmdline.d/95iscsi.conf" +- + inst_hook cmdline 90 "$moddir/parse-iscsiroot.sh" + inst_hook cleanup 90 "$moddir/cleanup-iscsi.sh" + inst "$moddir/iscsiroot.sh" "/sbin/iscsiroot" +-- +2.6.6 + diff --git a/0198-95iscsi-set-rd.iscsi.firmware-for-qla4xxx-sessions.patch b/0198-95iscsi-set-rd.iscsi.firmware-for-qla4xxx-sessions.patch new file mode 100644 index 0000000..93445c1 --- /dev/null +++ b/0198-95iscsi-set-rd.iscsi.firmware-for-qla4xxx-sessions.patch @@ -0,0 +1,82 @@ +From c56c855754914283bb930ef1a2b2dd5e8d5a6f25 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Tue, 20 Oct 2015 07:59:43 +0200 +Subject: 95iscsi: set 'rd.iscsi.firmware' for qla4xxx sessions + +The qla4xxx driver can run with or without open-iscsi support, +depending on the setting of the 'ql4xdisablesysfsboot' module +parameter. +When the parameter is set to '0', dracut needs to call +'iscsiadm -m fw' to trigger iSCSI login, so we need to set +the 'rd.iscsi.firmware' dracut variable. But this will then +fail if the parameter is set to '1', as in these cases the +list of firmware targets is empty. +To cover both scenarios this patch reshuffles 'handle_firmware' +in iscsiroot.sh to continue if iscsiadm -m fw fails but iscsi +sessions are present. + +References: bsc#951003 + +Signed-off-by: Hannes Reinecke +--- + modules.d/95iscsi/iscsiroot.sh | 37 +++++++++++++++++++++---------------- + 1 file changed, 21 insertions(+), 16 deletions(-) + +diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh +index 6ef6276..77755fb 100755 +--- a/modules.d/95iscsi/iscsiroot.sh ++++ b/modules.d/95iscsi/iscsiroot.sh +@@ -53,29 +53,34 @@ handle_firmware() + { + local ifaces retry + ++ # Depending on the 'ql4xdisablesysfsboot' qla4xxx ++ # will be autostarting sessions without presenting ++ # them via the firmware interface. ++ # In these cases 'iscsiadm -m fw' will fail, but ++ # the iSCSI sessions will still be present. + if ! iscsiadm -m fw; then + warn "iscsiadm: Could not get list of targets from firmware." +- return 1 +- fi +- +- ifaces=( $(echo /sys/firmware/ibft/ethernet*) ) +- [ -f /tmp/session-retry ] || echo 1 > /tmp/session-retry +- retry=$(cat /tmp/session-retry) +- +- if [ $retry -lt ${#ifaces[*]} ]; then +- let retry++ +- echo $retry > /tmp/session-retry +- return 1 +- fi ++ else ++ ifaces=( $(echo /sys/firmware/ibft/ethernet*) ) ++ [ -f /tmp/session-retry ] || echo 1 > /tmp/session-retry ++ retry=$(cat /tmp/session-retry) ++ ++ if [ $retry -lt ${#ifaces[*]} ]; then ++ let retry++ ++ echo $retry > /tmp/session-retry ++ return 1 ++ fi + +- if ! iscsiadm -m fw -l; then +- warn "iscsiadm: Log-in to iscsi target failed" ++ if ! iscsiadm -m fw -l; then ++ warn "iscsiadm: Log-in to iscsi target failed" ++ else ++ need_shutdown ++ fi + fi +- ++ [ -d /sys/class/iscsi_session ] || return 1 + echo 'started' > "/tmp/iscsistarted-iscsi:" + echo 'started' > "/tmp/iscsistarted-firmware" + +- need_shutdown + return 0 + } + +-- +2.6.6 + diff --git a/0199-rd-iscsi-waitnet-default-false.patch b/0199-rd-iscsi-waitnet-default-false.patch new file mode 100644 index 0000000..dc2346c --- /dev/null +++ b/0199-rd-iscsi-waitnet-default-false.patch @@ -0,0 +1,55 @@ +From fbd1ae50f37d4d904dc69844de869ff2daf02ded Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Tue, 27 Sep 2016 12:38:21 +0200 +Subject: 95iscsi: wait for network devices when starting iscsi + +rd.iscsi.waitnet should default to false in order for dracut to +wait for any network devices to come up. + +References: bsc#997598 + +Signed-off-by: Thomas Blume +--- + modules.d/95iscsi/iscsiroot.sh | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh +index 77755fb..6f0a15d 100755 +--- a/modules.d/95iscsi/iscsiroot.sh ++++ b/modules.d/95iscsi/iscsiroot.sh +@@ -62,13 +62,14 @@ handle_firmware() + warn "iscsiadm: Could not get list of targets from firmware." + else + ifaces=( $(echo /sys/firmware/ibft/ethernet*) ) +- [ -f /tmp/session-retry ] || echo 1 > /tmp/session-retry + retry=$(cat /tmp/session-retry) + + if [ $retry -lt ${#ifaces[*]} ]; then + let retry++ + echo $retry > /tmp/session-retry + return 1 ++ else ++ rm /tmp/session-retry + fi + + if ! iscsiadm -m fw -l; then +@@ -250,7 +251,7 @@ handle_netroot() + + ret=0 + +-if [ "$netif" != "timeout" ] && getargbool 1 rd.iscsi.waitnet; then ++if [ "$netif" != "timeout" ] && getargbool 0 rd.iscsi.waitnet; then + all_ifaces_setup || exit 0 + fi + +@@ -264,6 +265,7 @@ fi + + if getargbool 0 rd.iscsi.firmware -d -y iscsi_firmware ; then + if [ "$netif" = "timeout" ] || [ "$netif" = "online" ]; then ++ [ -f /tmp/session-retry ] || echo 1 > /tmp/session-retry + handle_firmware + ret=$? + fi +-- +2.6.6 + diff --git a/0200-dracut_fix_multipath_without_config.patch b/0200-dracut_fix_multipath_without_config.patch new file mode 100644 index 0000000..31b331c --- /dev/null +++ b/0200-dracut_fix_multipath_without_config.patch @@ -0,0 +1,38 @@ +From 796000a6afd2fa20dc40eae053ee71480b16b49c Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Tue, 27 Sep 2016 12:40:22 +0200 +Subject: 90multipath: do not fail startup on missing configuration + +References: bsc#930019 + +If rootfs is on multipath, but platform does not have an /etc/multipath.conf +file which is not urgently needed, they system will not boot, due to: + +multipathd is not started and rootfs and swap are not found: +systemctl status multipathd.service +* multipathd.service - Device-Mapper Multipath Device Controller + Loaded: loaded (/usr/lib/systemd/system/multipathd.service; disabled; vendor preset: enabled) + Active: inactive (dead) +Condition: start condition failed at Thu 2015-05-07 11:49:11 CEST; 7min ago + ConditionPathExists=/etc/multipath.conf was not met + +and exit to dracut shell. +--- + modules.d/90multipath/multipathd.service | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/modules.d/90multipath/multipathd.service b/modules.d/90multipath/multipathd.service +index b64b02c..f7bc65f 100644 +--- a/modules.d/90multipath/multipathd.service ++++ b/modules.d/90multipath/multipathd.service +@@ -6,7 +6,6 @@ Conflicts=shutdown.target + ConditionKernelCommandLine=!nompath + ConditionKernelCommandLine=!rd.multipath=0 + ConditionKernelCommandLine=!rd_NO_MULTIPATH +-ConditionPathExists=/etc/multipath.conf + + [Service] + Type=simple +-- +2.6.6 + diff --git a/0201-fix_nfs_with_ip_instead_of_hostname.patch b/0201-fix_nfs_with_ip_instead_of_hostname.patch new file mode 100644 index 0000000..3bae4c2 --- /dev/null +++ b/0201-fix_nfs_with_ip_instead_of_hostname.patch @@ -0,0 +1,29 @@ +From 7b4b832aded41e25cebbb8807b8e60bf58fd122e Mon Sep 17 00:00:00 2001 +From: Thomas Renninger +Date: Wed, 4 May 2016 13:33:43 +0200 +Subject: 95nfs: Fix mount if IPv4 address is used in /etc/fstab + +Signed-off-by: Thomas Renninger +--- + modules.d/95nfs/module-setup.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/modules.d/95nfs/module-setup.sh b/modules.d/95nfs/module-setup.sh +index dc97aba..6644c07 100755 +--- a/modules.d/95nfs/module-setup.sh ++++ b/modules.d/95nfs/module-setup.sh +@@ -51,9 +51,9 @@ cmdline() { + + ### ip= ### + if [[ $nfs_device = [0-9]*\.[0-9]*\.[0-9]*.[0-9]* ]] || [[ $nfs_device = \[.*\] ]]; then +- nfs_address="$nfs_device" ++ nfs_address="${nfs_device%%:*}" + else +- lookup=$(host $(echo ${nfs_device%%:*})| head -n1) ++ lookup=$(host "${nfs_device%%:*}"| head -n1) + nfs_address=${lookup##* } + fi + ifname=$(ip -o route get to $nfs_address | sed -n 's/.*dev \([^ ]*\).*/\1/p') +-- +2.6.6 + diff --git a/0202-dracut_dmraid_use_udev.patch b/0202-dracut_dmraid_use_udev.patch new file mode 100644 index 0000000..ccc14dc --- /dev/null +++ b/0202-dracut_dmraid_use_udev.patch @@ -0,0 +1,36 @@ +From: Hannes Reinecke + +Use udev rules to create dmraid /dev/mapper/ devices + +https://bugzilla.opensuse.org/show_bug.cgi?id=905746 + +--- + modules.d/90dmraid/dmraid.sh | 3 --- + modules.d/90dmraid/module-setup.sh | 2 +- + 2 files changed, 1 insertion(+), 4 deletions(-) +Index: dracut-044/modules.d/90dmraid/dmraid.sh +=================================================================== +--- dracut-044.orig/modules.d/90dmraid/dmraid.sh ++++ dracut-044/modules.d/90dmraid/dmraid.sh +@@ -33,8 +33,6 @@ if [ -n "$DM_RAIDS" ] || getargbool 0 rd + if [ "${s##$r}" != "$s" ]; then + info "Activating $s" + dmraid -ay -i -p --rm_partitions "$s" 2>&1 | vinfo +- [ -e "/dev/mapper/$s" ] && kpartx -a "/dev/mapper/$s" 2>&1 | vinfo +- udevsettle + fi + done + done +Index: dracut-044/modules.d/90dmraid/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/90dmraid/module-setup.sh ++++ dracut-044/modules.d/90dmraid/module-setup.sh +@@ -74,6 +74,8 @@ install() { + + inst "$moddir/dmraid.sh" /sbin/dmraid_scan + ++ inst_rules 66-kpartx.rules 67-kpartx-compat.rules ++ + inst_libdir_file "libdmraid-events*.so*" + + inst_rules "$moddir/61-dmraid-imsm.rules" diff --git a/0203-no-fail-builtin-module.patch b/0203-no-fail-builtin-module.patch new file mode 100644 index 0000000..a5564cf --- /dev/null +++ b/0203-no-fail-builtin-module.patch @@ -0,0 +1,28 @@ +From a7996e5e33c0456c96764dfb1ab35c0a59134ccc Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Tue, 3 Nov 2015 16:29:21 +0100 +Subject: [PATCH] Don't let inst1mod fail if module is built-in + +- Fixes bsc#935563 + +Signed-off-by: Fabian Vogt +--- + dracut-init.sh | 5 +++++ + 1 file changed, 5 insertions(+) + +Index: dracut-044/dracut-init.sh +=================================================================== +--- dracut-044.orig/dracut-init.sh 2016-04-14 14:12:39.421377052 +0200 ++++ dracut-044/dracut-init.sh 2016-04-14 14:58:46.285764636 +0200 +@@ -1129,6 +1129,11 @@ instmods() { + return 0 + fi + ++ if grep -q "/${_mod}.ko" /lib/modules/$kernel/modules.builtin; then ++ # Module is built-in ++ return 0 ++ fi ++ + # If we are building a host-specific initramfs and this + # module is not already loaded, move on to the next one. + [[ $hostonly ]] \ diff --git a/0204-mkinitrd-fix-monster.patch b/0204-mkinitrd-fix-monster.patch new file mode 100644 index 0000000..3d6aa33 --- /dev/null +++ b/0204-mkinitrd-fix-monster.patch @@ -0,0 +1,25 @@ +From: Fabian Vogt +Subject: Implement functionality of -A option +References: boo#935993 + +- Without this patch, -A sets host_only=0, + but host_only wasn't used +- Translates into --no-host-only now + +--- + mkinitrd-suse.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: dracut-043/mkinitrd-suse.sh +=================================================================== +--- dracut-043.orig/mkinitrd-suse.sh ++++ dracut-043/mkinitrd-suse.sh +@@ -263,7 +263,7 @@ while (($# > 0)); do + ;; + -M) read_arg map_file "$@" || shift $? + ;; +- -A) host_only=0;; ++ -A) dracut_args="${dracut_args} --no-host-only";; + -B) skip_update_bootloader=1;; + -v|--verbose) dracut_args="${dracut_args} -v";; + -L) logfile=;; diff --git a/0205-mdraid_ignore_hostonly.patch b/0205-mdraid_ignore_hostonly.patch new file mode 100644 index 0000000..4410c75 --- /dev/null +++ b/0205-mdraid_ignore_hostonly.patch @@ -0,0 +1,24 @@ +From: Fabian Vogt +Subject: [PATCH] Always install mdraid modules +References: boo#935993 + +- Even if not currently loaded +- hostonly logic seems to be broken + +--- + modules.d/90mdraid/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: dracut-043/modules.d/90mdraid/module-setup.sh +=================================================================== +--- dracut-043.orig/modules.d/90mdraid/module-setup.sh ++++ dracut-043/modules.d/90mdraid/module-setup.sh +@@ -33,7 +33,7 @@ depends() { + + # called by dracut + installkernel() { +- instmods =drivers/md ++ hostonly='' instmods =drivers/md + } + + # called by dracut diff --git a/0206-nfs_dns_alias.patch b/0206-nfs_dns_alias.patch new file mode 100644 index 0000000..4e69b60 --- /dev/null +++ b/0206-nfs_dns_alias.patch @@ -0,0 +1,27 @@ +From: Fabian Vogt +Subject: NFS: Support host being a DNS ALIAS + +The "host" command may also print something else than +"asdf.local.lan has address 1.2.3.4", like: +"rootserver.local.net is an alias for rainbow.local.net.". +So "head -n1" is not enough. + +Fixes boo#955592 + +--- + modules.d/95nfs/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: dracut-043/modules.d/95nfs/module-setup.sh +=================================================================== +--- dracut-043.orig/modules.d/95nfs/module-setup.sh ++++ dracut-043/modules.d/95nfs/module-setup.sh +@@ -53,7 +53,7 @@ cmdline() { + if [[ $nfs_device = [0-9]*\.[0-9]*\.[0-9]*.[0-9]* ]] || [[ $nfs_device = \[.*\] ]]; then + nfs_address="${nfs_device%%:*}" + else +- lookup=$(host "${nfs_device%%:*}"| head -n1) ++ lookup=$(host "${nfs_device%%:*}"| grep " address " | head -n1) + nfs_address=${lookup##* } + fi + ifname=$(ip -o route get to $nfs_address | sed -n 's/.*dev \([^ ]*\).*/\1/p') diff --git a/0207-handle_module_aliases.patch b/0207-handle_module_aliases.patch new file mode 100644 index 0000000..cf4a2c4 --- /dev/null +++ b/0207-handle_module_aliases.patch @@ -0,0 +1,44 @@ +From: Fabian Vogt +Date: Thu, 21 Jan 2016 12:38:05 +0100 +Subject: [PATCH] Correctly handle module aliases + +Handle module aliases correctly to not generate unbootable +initrds with different kernel versions. Fix for boo#962694 +See the diff for a detailed explanation. + +--- + dracut.sh | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +Index: dracut-044/dracut.sh +=================================================================== +--- dracut-044.orig/dracut.sh ++++ dracut-044/dracut.sh +@@ -1214,6 +1214,27 @@ if [[ $hostonly ]]; then + while read m rest || [ -n "$m" ]; do + host_modules["$m"]=1 + done = 4.4, mpt2sas isn't loaded, ++ # so it's not included. ++ # Both ways result in an unbootable initrd. ++ ++ # also add aliases of loaded modules ++ for mod in "${!host_modules[@]}"; do ++ aliases=$(modinfo -F alias "$mod" 2>&1) ++ for alias in $aliases; do ++ host_modules["$alias"]=1 ++ done ++ # mod might be an alias in the target kernel, find the real module ++ mod_filename=$(modinfo -k "$kernel" "$mod" -F filename) ++ [ $? -ne 0 ] && continue ++ host_modules["$(basename -s .ko "$mod_filename")"]=1 ++ done + fi + + unset m diff --git a/0208-no_forced_virtnet.patch b/0208-no_forced_virtnet.patch new file mode 100644 index 0000000..f3e5c59 --- /dev/null +++ b/0208-no_forced_virtnet.patch @@ -0,0 +1,87 @@ +From: Fabian Vogt +Subject: Don't include qemu network modules without reason + +virtio-net without other network tools does not make sense +and causes various bugs, like bsc#960669. +This patch merges 90qemu-net into 90-kernel-network-modules. + +--- + modules.d/90kernel-network-modules/module-setup.sh | 24 ++++++++++++++++++++- + modules.d/90qemu-net/module-setup.sh | 1 + 2 files changed, 24 insertions(+), 1 deletion(-) + +Index: dracut-044/modules.d/90kernel-network-modules/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/90kernel-network-modules/module-setup.sh ++++ dracut-044/modules.d/90kernel-network-modules/module-setup.sh +@@ -10,6 +10,25 @@ depends() { + return 0 + } + ++running_in_qemu() { ++ if type -P systemd-detect-virt >/dev/null 2>&1; then ++ vm=$(systemd-detect-virt --vm 2>&1) ++ (($? != 0)) && return 255 ++ [[ $vm = "qemu" ]] && return 0 ++ [[ $vm = "kvm" ]] && return 0 ++ [[ $vm = "bochs" ]] && return 0 ++ fi ++ ++ for i in /sys/class/dmi/id/*_vendor; do ++ [[ -f $i ]] || continue ++ read vendor < $i ++ [[ "$vendor" == "QEMU" ]] && return 0 ++ [[ "$vendor" == "Bochs" ]] && return 0 ++ done ++ ++ return 255 ++} ++ + # called by dracut + installkernel() { + # Include wired net drivers, excluding wireless +@@ -63,6 +82,12 @@ installkernel() { + =drivers/net/ethernet \ + ecb arc4 bridge stp llc ipv6 bonding 8021q af_packet virtio_net xennet + hostonly="" instmods iscsi_ibft crc32c iscsi_boot_sysfs ++ ++ if running_in_qemu; then ++ hostonly='' instmods virtio_net e1000 8139cp pcnet32 e100 ne2k_pci ++ else ++ return 0 ++ fi + } + + # called by dracut +Index: dracut-044/modules.d/90qemu-net/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/90qemu-net/module-setup.sh ++++ /dev/null +@@ -1,27 +0,0 @@ +-#!/bin/bash +- +-# called by dracut +-check() { +- if type -P systemd-detect-virt >/dev/null 2>&1; then +- vm=$(systemd-detect-virt --vm >/dev/null 2>&1) +- (($? != 0)) && return 255 +- [[ $vm = "qemu" ]] && return 0 +- [[ $vm = "kvm" ]] && return 0 +- [[ $vm = "bochs" ]] && return 0 +- fi +- +- for i in /sys/class/dmi/id/*_vendor; do +- [[ -f $i ]] || continue +- read vendor < $i +- [[ "$vendor" == "QEMU" ]] && return 0 +- [[ "$vendor" == "Bochs" ]] && return 0 +- done +- +- return 255 +-} +- +-# called by dracut +-installkernel() { +- # qemu specific modules +- hostonly='' instmods virtio_net e1000 8139cp pcnet32 e100 ne2k_pci +-} diff --git a/0209-fix_modules_load_d_hostonly.patch b/0209-fix_modules_load_d_hostonly.patch new file mode 100644 index 0000000..4b9e5bc --- /dev/null +++ b/0209-fix_modules_load_d_hostonly.patch @@ -0,0 +1,34 @@ +From: Fabian Vogt +Subject: Fix loading of modules in modules-load.d + +With hostonly enabled, only modules that are currently +loaded are included in the initrd. Modules which are +explicitly listed in modules-load.d do not need to +be filtered that way. Fix for boo#962224. + +--- + modules.d/00systemd/module-setup.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +Index: dracut-044/modules.d/00systemd/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/00systemd/module-setup.sh ++++ dracut-044/modules.d/00systemd/module-setup.sh +@@ -154,7 +154,7 @@ install() { + } + + _mods=$(modules_load_get /usr/lib/modules-load.d) +- [[ $_mods ]] && instmods $_mods ++ [[ $_mods ]] && hostonly='' instmods $_mods + + if [[ $hostonly ]]; then + inst_multiple -H -o \ +@@ -169,7 +169,7 @@ install() { + /etc/sysctl.conf + + _mods=$(modules_load_get /etc/modules-load.d) +- [[ $_mods ]] && instmods $_mods ++ [[ $_mods ]] && hostonly='' instmods $_mods + fi + + if ! [[ -e "$initdir/etc/machine-id" ]]; then diff --git a/0210-add_fcoe_uefi_check.patch b/0210-add_fcoe_uefi_check.patch new file mode 100644 index 0000000..6ff7836 --- /dev/null +++ b/0210-add_fcoe_uefi_check.patch @@ -0,0 +1,34 @@ +From c5fd4748ecff45dfaf707af30b649153ae88ea20 Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Tue, 27 Sep 2016 12:41:17 +0200 +Subject: fcoe-uefi: Add check for usage + +References: boo#965477 + +fcoe-uefi gets included by default on EFI systems, +as it does not do the same check that fcoe does, +therefore needlessly pulling in network modules. +This patch copies the check from fcoe to fcoe-uefi. +--- + modules.d/95fcoe-uefi/module-setup.sh | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/modules.d/95fcoe-uefi/module-setup.sh b/modules.d/95fcoe-uefi/module-setup.sh +index 5d8477c..66af804 100755 +--- a/modules.d/95fcoe-uefi/module-setup.sh ++++ b/modules.d/95fcoe-uefi/module-setup.sh +@@ -4,6 +4,11 @@ + check() { + [[ $hostonly ]] || [[ $mount_needs ]] && { + [ -d /sys/firmware/efi ] || return 255 ++ for c in /sys/bus/fcoe/devices/ctlr_* ; do ++ [ -L $c ] || continue ++ fcoe_ctlr=$c ++ done ++ [ -z "$fcoe_ctlr" ] && return 255 + } + require_binaries dcbtool fipvlan lldpad ip readlink || return 1 + return 0 +-- +2.6.6 + diff --git a/0212-fcoe_reorder_init_path.patch b/0212-fcoe_reorder_init_path.patch new file mode 100644 index 0000000..07422cf --- /dev/null +++ b/0212-fcoe_reorder_init_path.patch @@ -0,0 +1,58 @@ +From 77b3a15c6673dfce2dbd76cceffb7d5d4819c694 Mon Sep 17 00:00:00 2001 +From: Johannes Thumshirn +Date: Tue, 27 Sep 2016 12:41:22 +0200 +Subject: 95fcoe: Reorder initialisation for bnx2x + +References: bsc#982588 + +Signed-off-by: Johannes Thumshirn +--- + modules.d/95fcoe/fcoe-up.sh | 22 ++++++++++++---------- + 1 file changed, 12 insertions(+), 10 deletions(-) + +diff --git a/modules.d/95fcoe/fcoe-up.sh b/modules.d/95fcoe/fcoe-up.sh +index fb3b4c4..a525ade 100755 +--- a/modules.d/95fcoe/fcoe-up.sh ++++ b/modules.d/95fcoe/fcoe-up.sh +@@ -45,7 +45,16 @@ write_fcoemon_cfg() { + echo MODE=\"fabric\" >> /etc/fcoe/cfg-$netif + } + +-if [ "$dcb" = "dcb" ]; then ++if [ "$netdriver" = "bnx2x" ]; then ++ # If driver is bnx2x, do not use /sys/module/fcoe/parameters/create but fipvlan ++ modprobe 8021q ++ udevadm settle --timeout=30 ++ # Sleep for 3 s to allow dcb negotiation ++ sleep 3 ++ write_fcoemon_cfg ++ fcoemon --syslog=yes ++ fipvlan -c -s "$netif" ++elif [ "$dcb" = "dcb" ]; then + # wait for lldpad to be ready + i=0 + while [ $i -lt 60 ]; do +@@ -79,18 +88,11 @@ if [ "$dcb" = "dcb" ]; then + sleep 1 + + write_fcoemon_cfg +- fcoemon --syslog +-elif [ "$netdriver" = "bnx2x" ]; then +- # If driver is bnx2x, do not use /sys/module/fcoe/parameters/create but fipvlan +- modprobe 8021q +- udevadm settle --timeout=30 +- # Sleep for 3 s to allow dcb negotiation +- sleep 3 +- fipvlan "$netif" -c -s ++ fcoemon --syslog=yes + else + vlan="no" + write_fcoemon_cfg +- fcoemon --syslog ++ fcoemon --syslog=yes + fi + + need_shutdown +-- +2.6.6 + diff --git a/0213-Fix-wrong-keymap-inclusion.patch b/0213-Fix-wrong-keymap-inclusion.patch new file mode 100644 index 0000000..afa75ad --- /dev/null +++ b/0213-Fix-wrong-keymap-inclusion.patch @@ -0,0 +1,30 @@ +From 234283235ba52a50b84b396b85ff8cf6e16d80a0 Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Fri, 26 Aug 2016 09:44:05 +0200 +Subject: [PATCH] Fix wrong keymap inclusion + +For MAP=lt, dracut would choose lt.std.map instead of lt.map. + +References: bsc#942896 +--- + modules.d/10i18n/module-setup.sh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/modules.d/10i18n/module-setup.sh b/modules.d/10i18n/module-setup.sh +index 4fd0b26..e5bf5eb 100755 +--- a/modules.d/10i18n/module-setup.sh ++++ b/modules.d/10i18n/module-setup.sh +@@ -30,8 +30,9 @@ install() { + # This is from 10redhat-i18n. + findkeymap () { + local MAP=$1 ++ local MAPNAME=${1%.map*} + [[ ! -f $MAP ]] && \ +- MAP=$(find ${kbddir}/keymaps -type f -name $MAP -o -name $MAP.\* | head -n1) ++ MAP=$(find ${kbddir}/keymaps -type f -name ${MAPNAME} -o -name ${MAPNAME}.map -o -name ${MAPNAME}.map.\* | head -n1) + [[ " $KEYMAPS " = *" $MAP "* ]] && return + KEYMAPS="$KEYMAPS $MAP" + case $MAP in +-- +2.6.6 + diff --git a/0214-95fcoe-Do-not-overwrite-FCoE-configuration.patch b/0214-95fcoe-Do-not-overwrite-FCoE-configuration.patch new file mode 100644 index 0000000..de1361f --- /dev/null +++ b/0214-95fcoe-Do-not-overwrite-FCoE-configuration.patch @@ -0,0 +1,45 @@ +From 581b48e2e171f1afb01b89a9a4089400d9b20829 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Tue, 16 Aug 2016 13:26:07 +0200 +Subject: [PATCH] 95fcoe: Do not overwrite FCoE configuration + +If the installation already has a FCoE configuration we should +not attempt to overwrite it but rather use the pre-defined +configuration. + +References: bsc#993861 + +Signed-off-by: Hannes Reinecke +--- + modules.d/95fcoe/fcoe-up.sh | 1 + + modules.d/95fcoe/module-setup.sh | 2 ++ + 2 files changed, 3 insertions(+) + +diff --git a/modules.d/95fcoe/fcoe-up.sh b/modules.d/95fcoe/fcoe-up.sh +index a525ade..662b21a 100755 +--- a/modules.d/95fcoe/fcoe-up.sh ++++ b/modules.d/95fcoe/fcoe-up.sh +@@ -31,6 +31,7 @@ netdriver=$(readlink -f /sys/class/net/$netif/device/driver) + netdriver=${netdriver##*/} + + write_fcoemon_cfg() { ++ [ -f /etc/fcoe/cfg-$netif ] && return + echo FCOE_ENABLE=\"yes\" > /etc/fcoe/cfg-$netif + if [ "$dcb" = "dcb" ]; then + echo DCB_REQUIRED=\"yes\" >> /etc/fcoe/cfg-$netif +diff --git a/modules.d/95fcoe/module-setup.sh b/modules.d/95fcoe/module-setup.sh +index 059bfde..a78516d 100755 +--- a/modules.d/95fcoe/module-setup.sh ++++ b/modules.d/95fcoe/module-setup.sh +@@ -77,6 +77,8 @@ install() { + local _fcoeconf=$(cmdline) + [[ $_fcoeconf ]] && printf "%s\n" "$_fcoeconf" >> "${initdir}/etc/cmdline.d/95fcoe.conf" + fi ++ inst_multiple /etc/fcoe/cfg-* ++ + inst "$moddir/fcoe-up.sh" "/sbin/fcoe-up" + inst "$moddir/fcoe-edd.sh" "/sbin/fcoe-edd" + inst "$moddir/fcoe-genrules.sh" "/sbin/fcoe-genrules.sh" +-- +2.6.6 + diff --git a/0215-95fcoe-Do-not-complain-about-missing-etc-hba.conf.patch b/0215-95fcoe-Do-not-complain-about-missing-etc-hba.conf.patch new file mode 100644 index 0000000..df117c9 --- /dev/null +++ b/0215-95fcoe-Do-not-complain-about-missing-etc-hba.conf.patch @@ -0,0 +1,35 @@ +From 46736da0be28e579b53ac3c0dd982f3765d48f4a Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Tue, 23 Aug 2016 14:09:12 +0200 +Subject: [PATCH] 95fcoe: Do not complain about missing /etc/hba.conf + +The file '/etc/hba.conf' got dropped by an updated fcoe-utils +package, so do not complain if it doesn't exist. + +References: bsc#980539 + +Signed-off-by: Hannes Reinecke +--- + modules.d/95fcoe/module-setup.sh | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/modules.d/95fcoe/module-setup.sh b/modules.d/95fcoe/module-setup.sh +index a78516d..d08e917 100755 +--- a/modules.d/95fcoe/module-setup.sh ++++ b/modules.d/95fcoe/module-setup.sh +@@ -67,8 +67,10 @@ cmdline() { + # called by dracut + install() { + inst_multiple ip dcbtool fipvlan lldpad readlink lldptool fcoemon fcoeadm +- inst_libdir_file 'libhbalinux.so*' +- inst "/etc/hba.conf" "/etc/hba.conf" ++ if [ -f "/etc/hba.conf" ] ; then ++ inst_libdir_file 'libhbalinux.so*' ++ inst "/etc/hba.conf" "/etc/hba.conf" ++ fi + + mkdir -m 0755 -p "$initdir/var/lib/lldpad" + mkdir -m 0755 -p "$initdir/etc/fcoe" +-- +2.6.6 + diff --git a/0216-95fcoe-silence-lldpad-warnings.patch b/0216-95fcoe-silence-lldpad-warnings.patch new file mode 100644 index 0000000..b36c56c --- /dev/null +++ b/0216-95fcoe-silence-lldpad-warnings.patch @@ -0,0 +1,35 @@ +From 4d9ec023b6c4a20cc7ffc6ea4ccf86b008a3cbcf Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Tue, 23 Aug 2016 14:35:04 +0200 +Subject: [PATCH] 95fcoe: silence lldpad warnings + +When lldpad is not running, any calls to 'dcbtool' will be printing +out a warning. As it perfectly legit to have FCoE running without +DCB we should not be printing out the error. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95fcoe/module-setup.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/modules.d/95fcoe/module-setup.sh b/modules.d/95fcoe/module-setup.sh +index d08e917..18c00b3 100755 +--- a/modules.d/95fcoe/module-setup.sh ++++ b/modules.d/95fcoe/module-setup.sh +@@ -48,11 +48,11 @@ cmdline() { + d=$(cd -P $c; echo $PWD) + i=${d%/*} + read mac < ${i}/address +- s=$(dcbtool gc ${i##*/} dcb | sed -n 's/^DCB State:\t*\(.*\)/\1/p') ++ s=$(dcbtool gc ${i##*/} dcb 2>/dev/null | sed -n 's/^DCB State:\t*\(.*\)/\1/p') + if [ -z "$s" ] ; then + p=$(get_vlan_parent ${i}) + if [ "$p" ] ; then +- s=$(dcbtool gc ${p} dcb | sed -n 's/^DCB State:\t*\(.*\)/\1/p') ++ s=$(dcbtool gc ${p} dcb 2>/dev/null | sed -n 's/^DCB State:\t*\(.*\)/\1/p') + fi + fi + if [ "$s" = "on" ] ; then +-- +2.6.6 + diff --git a/0217-95fcoe-Allow-to-specify-the-FCoE-mode-via-the-fcoe-p.patch b/0217-95fcoe-Allow-to-specify-the-FCoE-mode-via-the-fcoe-p.patch new file mode 100644 index 0000000..1c3ea5a --- /dev/null +++ b/0217-95fcoe-Allow-to-specify-the-FCoE-mode-via-the-fcoe-p.patch @@ -0,0 +1,169 @@ +From 77a524b3659529b14abfdb574094b92216b59af5 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 24 Aug 2016 08:32:04 +0200 +Subject: [PATCH] 95fcoe: Allow to specify the FCoE mode via the fcoe= + parameter + +FCoE can run in Fabric (ie FCF) or VN2VN mode, so we should allowing +to set this parameter from the commandline, too. + +Signed-off-by: Hannes Reinecke +--- + dracut.cmdline.7.asc | 8 +++++--- + modules.d/95fcoe/fcoe-genrules.sh | 4 ++-- + modules.d/95fcoe/fcoe-up.sh | 9 +++++++-- + modules.d/95fcoe/module-setup.sh | 8 +++++++- + modules.d/95fcoe/parse-fcoe.sh | 22 ++++++++++++++++++---- + 5 files changed, 39 insertions(+), 12 deletions(-) + +diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc +index 7368aa1..b885946 100644 +--- a/dracut.cmdline.7.asc ++++ b/dracut.cmdline.7.asc +@@ -746,10 +746,12 @@ iscsistart -b --param node.session.timeo.replacement_timeout=30 + + FCoE + ~~~~ +-**fcoe=**____:__{dcb|nodcb}__:: ++**fcoe=**____:__{dcb|nodcb}__:__{fabric|vn2vn}__:: + Try to connect to a FCoE SAN through the NIC specified by __ or +- __ or EDD settings. For the second argument, currently only nodcb is +- supported. This parameter can be specified multiple times. ++ __ or EDD settings. The second argument specifies if DCB ++ should be used. The optional third argument specifies whether ++ fabric or VN2VN mode should be used. ++ This parameter can be specified multiple times. + + + NOTE: letters in the MAC-address must be lowercase! + +diff --git a/modules.d/95fcoe/fcoe-genrules.sh b/modules.d/95fcoe/fcoe-genrules.sh +index eb58601..af15a58 100755 +--- a/modules.d/95fcoe/fcoe-genrules.sh ++++ b/modules.d/95fcoe/fcoe-genrules.sh +@@ -7,8 +7,8 @@ + # Write udev rules + { + if [ -n "$fcoe_mac" ] ; then +- printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", RUN+="/sbin/initqueue --onetime --unique --name fcoe-up-$env{INTERFACE} /sbin/fcoe-up $env{INTERFACE} %s"\n' "$fcoe_mac" "$fcoe_dcb" ++ printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", RUN+="/sbin/initqueue --onetime --unique --name fcoe-up-$env{INTERFACE} /sbin/fcoe-up $env{INTERFACE} %s"\n' "$fcoe_mac" "$fcoe_dcb" "$fcoe_mode" + else +- printf 'ACTION=="add", SUBSYSTEM=="net", NAME=="%s", RUN+="/sbin/initqueue --onetime --unique --name fcoe-up-$env{INTERFACE} /sbin/fcoe-up $env{INTERFACE} %s"\n' "$fcoe_interface" "$fcoe_dcb" ++ printf 'ACTION=="add", SUBSYSTEM=="net", NAME=="%s", RUN+="/sbin/initqueue --onetime --unique --name fcoe-up-$env{INTERFACE} /sbin/fcoe-up $env{INTERFACE} %s"\n' "$fcoe_interface" "$fcoe_dcb" "$fcoe_mode" + fi + } >> /etc/udev/rules.d/92-fcoe.rules +diff --git a/modules.d/95fcoe/fcoe-up.sh b/modules.d/95fcoe/fcoe-up.sh +index 662b21a..ffcc4e3 100755 +--- a/modules.d/95fcoe/fcoe-up.sh ++++ b/modules.d/95fcoe/fcoe-up.sh +@@ -1,7 +1,7 @@ + #!/bin/sh + # + # We get called like this: +-# fcoe-up ++# fcoe-up + # + # Note currently only nodcb is supported, the dcb option is reserved for + # future use. +@@ -15,6 +15,7 @@ type ip_to_var >/dev/null 2>&1 || . /lib/net-lib.sh + + netif=$1 + dcb=$2 ++mode=$3 + vlan="yes" + + iflink=$(cat /sys/class/net/$netif/iflink) +@@ -43,7 +44,11 @@ write_fcoemon_cfg() { + else + echo AUTO_VLAN=\"no\" >> /etc/fcoe/cfg-$netif + fi +- echo MODE=\"fabric\" >> /etc/fcoe/cfg-$netif ++ if [ "$mode" = "vn2vn" ] ; then ++ echo MODE=\"vn2vn\" >> /etc/fcoe/cfg-$netif ++ else ++ echo MODE=\"fabric\" >> /etc/fcoe/cfg-$netif ++ fi + } + + if [ "$netdriver" = "bnx2x" ]; then +diff --git a/modules.d/95fcoe/module-setup.sh b/modules.d/95fcoe/module-setup.sh +index 18c00b3..2a5c71a 100755 +--- a/modules.d/95fcoe/module-setup.sh ++++ b/modules.d/95fcoe/module-setup.sh +@@ -44,7 +44,13 @@ cmdline() { + for c in /sys/bus/fcoe/devices/ctlr_* ; do + [ -L $c ] || continue + read enabled < $c/enabled ++ read mode < $c/mode + [ $enabled -eq 0 ] && continue ++ if [ $mode = "VN2VN" ] ; then ++ mode="vn2vn" ++ else ++ mode="fabric" ++ fi + d=$(cd -P $c; echo $PWD) + i=${d%/*} + read mac < ${i}/address +@@ -60,7 +66,7 @@ cmdline() { + else + dcb="nodcb" + fi +- echo "fcoe=${mac}:${dcb}" ++ echo "fcoe=${mac}:${dcb}:${mode}" + done + } + +diff --git a/modules.d/95fcoe/parse-fcoe.sh b/modules.d/95fcoe/parse-fcoe.sh +index 9f47184..75cca9a 100755 +--- a/modules.d/95fcoe/parse-fcoe.sh ++++ b/modules.d/95fcoe/parse-fcoe.sh +@@ -1,8 +1,8 @@ + #!/bin/sh + # + # Supported formats: +-# fcoe=: +-# fcoe=: ++# fcoe=:: ++# fcoe=:: + # + # Note currently only nodcb is supported, the dcb option is reserved for + # future use. +@@ -10,8 +10,8 @@ + # Note letters in the macaddress must be lowercase! + # + # Examples: +-# fcoe=eth0:nodcb +-# fcoe=4a:3f:4c:04:f8:d7:nodcb ++# fcoe=eth0:nodcb:vn2vn ++# fcoe=4a:3f:4c:04:f8:d7:nodcb:fabric + + [ -z "$fcoe" ] && fcoe=$(getarg fcoe=) + +@@ -32,11 +32,25 @@ parse_fcoe_opts() { + 2) + fcoe_interface=$1 + fcoe_dcb=$2 ++ fcoe_mode="fabric" ++ return 0 ++ ;; ++ 3) ++ fcoe_interface=$1 ++ fcoe_dcb=$2 ++ fcoe_mode=$3 + return 0 + ;; + 7) + fcoe_mac=$1:$2:$3:$4:$5:$6 + fcoe_dcb=$7 ++ fcoe_mode="fabric" ++ return 0 ++ ;; ++ 8) ++ fcoe_mac=$1:$2:$3:$4:$5:$6 ++ fcoe_dcb=$7 ++ fcoe_mode=$8 + return 0 + ;; + *) +-- +2.6.6 + diff --git a/0218-40network-allow-persistent-interface-names.patch b/0218-40network-allow-persistent-interface-names.patch new file mode 100644 index 0000000..49b194d --- /dev/null +++ b/0218-40network-allow-persistent-interface-names.patch @@ -0,0 +1,38 @@ +From 47831cf386dd4d49c2b56f3bbbaf719348b9862f Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 24 Aug 2016 15:12:52 +0200 +Subject: [PATCH] 40network: allow persistent interface names + +We are using persistent interface names even for kernel device +names on SLES, so we should be removing the warning. + +References: bsc#995284 + +Signed-off-by: Hannes Reinecke +--- + modules.d/40network/net-lib.sh | 9 --------- + 1 file changed, 9 deletions(-) + +diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh +index 0a77d4b..d17209a 100755 +--- a/modules.d/40network/net-lib.sh ++++ b/modules.d/40network/net-lib.sh +@@ -573,15 +573,6 @@ parse_ifname_opts() { + ;; + esac + +- case $ifname_if in +- eth[0-9]|eth[0-9][0-9]|eth[0-9][0-9][0-9]|eth[0-9][0-9][0-9][0-9]) +- warn "ifname=$ifname_if uses the kernel name space for interfaces" +- warn "This can fail for multiple network interfaces and is discouraged!" +- warn "Please use a custom name like \"netboot\" or \"bluesocket\"" +- warn "or use biosdevname and no ifname= at all." +- ;; +- esac +- + } + + # some network driver need long time to initialize, wait before it's ready. +-- +2.6.6 + diff --git a/0219-95fcoe-use-interface-names-instead-of-MAC-addresses.patch b/0219-95fcoe-use-interface-names-instead-of-MAC-addresses.patch new file mode 100644 index 0000000..e015c59 --- /dev/null +++ b/0219-95fcoe-use-interface-names-instead-of-MAC-addresses.patch @@ -0,0 +1,88 @@ +From 4f19de16df2746b0b742bfbecfb493728a150c86 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 24 Aug 2016 15:14:31 +0200 +Subject: [PATCH] 95fcoe: use interface names instead of MAC addresses + +Now that we are using persistent network names we can switch +to using the interface names when specifying the fcoe configuration. +With that we can print the fcoe configuration only once. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95fcoe/module-setup.sh | 60 +++++++++++++++++++++------------------- + 1 file changed, 32 insertions(+), 28 deletions(-) + +diff --git a/modules.d/95fcoe/module-setup.sh b/modules.d/95fcoe/module-setup.sh +index 2a5c71a..acc611d 100755 +--- a/modules.d/95fcoe/module-setup.sh ++++ b/modules.d/95fcoe/module-setup.sh +@@ -40,34 +40,38 @@ get_vlan_parent() { + + # called by dracut + cmdline() { +- +- for c in /sys/bus/fcoe/devices/ctlr_* ; do +- [ -L $c ] || continue +- read enabled < $c/enabled +- read mode < $c/mode +- [ $enabled -eq 0 ] && continue +- if [ $mode = "VN2VN" ] ; then +- mode="vn2vn" +- else +- mode="fabric" +- fi +- d=$(cd -P $c; echo $PWD) +- i=${d%/*} +- read mac < ${i}/address +- s=$(dcbtool gc ${i##*/} dcb 2>/dev/null | sed -n 's/^DCB State:\t*\(.*\)/\1/p') +- if [ -z "$s" ] ; then +- p=$(get_vlan_parent ${i}) +- if [ "$p" ] ; then +- s=$(dcbtool gc ${p} dcb 2>/dev/null | sed -n 's/^DCB State:\t*\(.*\)/\1/p') +- fi +- fi +- if [ "$s" = "on" ] ; then +- dcb="dcb" +- else +- dcb="nodcb" +- fi +- echo "fcoe=${mac}:${dcb}:${mode}" +- done ++ { ++ for c in /sys/bus/fcoe/devices/ctlr_* ; do ++ [ -L $c ] || continue ++ read enabled < $c/enabled ++ read mode < $c/mode ++ [ $enabled -eq 0 ] && continue ++ if [ $mode = "VN2VN" ] ; then ++ mode="vn2vn" ++ else ++ mode="fabric" ++ fi ++ d=$(cd -P $c; echo $PWD) ++ i=${d%/*} ++ ifname=${i##*/} ++ read mac < ${i}/address ++ s=$(dcbtool gc ${i##*/} dcb 2>/dev/null | sed -n 's/^DCB State:\t*\(.*\)/\1/p') ++ if [ -z "$s" ] ; then ++ p=$(get_vlan_parent ${i}) ++ if [ "$p" ] ; then ++ s=$(dcbtool gc ${p} dcb 2>/dev/null | sed -n 's/^DCB State:\t*\(.*\)/\1/p') ++ ifname=${p##*/} ++ fi ++ fi ++ if [ "$s" = "on" ] ; then ++ dcb="dcb" ++ else ++ dcb="nodcb" ++ fi ++ echo "ifname=${ifname}:${mac}" ++ echo "fcoe=${ifname}:${dcb}:${mode}" ++ done ++ } | sort | uniq + } + + # called by dracut +-- +2.6.6 + diff --git a/0220-95fcoe-always-set-AUTO_VLAN-for-fcoemon.patch b/0220-95fcoe-always-set-AUTO_VLAN-for-fcoemon.patch new file mode 100644 index 0000000..d7b2c5a --- /dev/null +++ b/0220-95fcoe-always-set-AUTO_VLAN-for-fcoemon.patch @@ -0,0 +1,38 @@ +From fdbb581a9df74db58c306141aca24dc824e72dec Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 24 Aug 2016 12:26:04 +0200 +Subject: [PATCH] 95fcoe: always set AUTO_VLAN for fcoemon + +fcoemon is well capable of figuring out whether a vlan should +be used, so there's no need to disable the AUTO_VLAN feature. + +References: bsc#995019 + +Signed-off-by: Hannes Reinecke +--- + modules.d/95fcoe/fcoe-up.sh | 9 ++------- + 1 file changed, 2 insertions(+), 7 deletions(-) + +diff --git a/modules.d/95fcoe/fcoe-up.sh b/modules.d/95fcoe/fcoe-up.sh +index ffcc4e3..102f9d3 100755 +--- a/modules.d/95fcoe/fcoe-up.sh ++++ b/modules.d/95fcoe/fcoe-up.sh +@@ -92,13 +92,8 @@ elif [ "$dcb" = "dcb" ]; then + done + + sleep 1 +- +- write_fcoemon_cfg +- fcoemon --syslog=yes +-else +- vlan="no" +- write_fcoemon_cfg +- fcoemon --syslog=yes + fi ++write_fcoemon_cfg ++fcoemon --syslog=yes + + need_shutdown +-- +2.6.6 + diff --git a/0221-95fcoe-Add-shutdown-script.patch b/0221-95fcoe-Add-shutdown-script.patch new file mode 100644 index 0000000..a6c1c6b --- /dev/null +++ b/0221-95fcoe-Add-shutdown-script.patch @@ -0,0 +1,45 @@ +From 2a5b570b7a6020d63ab6c4cbdb9e926d88b32639 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 25 Aug 2016 09:36:06 +0200 +Subject: [PATCH] 95fcoe: Add shutdown script + +We should be disabling the FCoE connection (which triggers sending +a LOGO internally) to logout from the target; this resets the target +and will avoid hitting a busy condition during reboots. + +References: bsc#994860 + +Signed-off-by: Hannes Reinecke +--- + modules.d/95fcoe/module-setup.sh | 1 + + modules.d/95fcoe/stop-fcoe.sh | 6 ++++++ + 2 files changed, 7 insertions(+) + create mode 100755 modules.d/95fcoe/stop-fcoe.sh + +diff --git a/modules.d/95fcoe/module-setup.sh b/modules.d/95fcoe/module-setup.sh +index acc611d..572670c 100755 +--- a/modules.d/95fcoe/module-setup.sh ++++ b/modules.d/95fcoe/module-setup.sh +@@ -97,6 +97,7 @@ install() { + inst_hook pre-trigger 03 "$moddir/lldpad.sh" + inst_hook cmdline 99 "$moddir/parse-fcoe.sh" + inst_hook cleanup 90 "$moddir/cleanup-fcoe.sh" ++ inst_hook shutdown 40 "$moddir/stop-fcoe.sh" + dracut_need_initqueue + } + +diff --git a/modules.d/95fcoe/stop-fcoe.sh b/modules.d/95fcoe/stop-fcoe.sh +new file mode 100755 +index 0000000..d2462b3 +--- /dev/null ++++ b/modules.d/95fcoe/stop-fcoe.sh +@@ -0,0 +1,6 @@ ++#!/bin/bash ++ ++for f in /sys/bus/fcoe/devices/ctlr_* ; do ++ [ -e $f ] || continue ++ echo 0 > $f/enabled ++done +-- +2.6.6 + diff --git a/0222-90dm-Fixup-shutdown-script.patch b/0222-90dm-Fixup-shutdown-script.patch new file mode 100644 index 0000000..d6e520b --- /dev/null +++ b/0222-90dm-Fixup-shutdown-script.patch @@ -0,0 +1,55 @@ +From 885b133ecd7913990449e7598526d0965ebc3458 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 25 Aug 2016 09:28:30 +0200 +Subject: [PATCH] 90dm: Fixup shutdown script + +When calling the shutdown script we need to take care of traversing +the device-mapper tables, otherwise we might end up trying to remove +a device-mapper device which still has another one stacked on top +and the removal will fail. + +References: bsc#994860 + +Signed-off-by: Hannes Reinecke +--- + modules.d/90dm/dm-shutdown.sh | 21 +++++++++++++++++++-- + 1 file changed, 19 insertions(+), 2 deletions(-) + +diff --git a/modules.d/90dm/dm-shutdown.sh b/modules.d/90dm/dm-shutdown.sh +index 04c89be..0685a68 100755 +--- a/modules.d/90dm/dm-shutdown.sh ++++ b/modules.d/90dm/dm-shutdown.sh +@@ -1,11 +1,28 @@ + #!/bin/sh + ++_remove_dm() { ++ local dev=$1 ++ local s ++ local devname ++ ++ for s in /sys/block/${dev}/holders/dm-* ; do ++ [ -e ${s} ] || continue ++ _remove_dm ${s##*/} ++ done ++ devname=$(cat /sys/block/${dev}/dm/name) ++ dmsetup -v --noudevsync remove "$devname" || return $? ++ return 0 ++} ++ + _do_dm_shutdown() { + local ret=0 + local final=$1 ++ local dev ++ + info "Disassembling device-mapper devices" +- for dev in $(dmsetup info -c --noheadings -o name) ; do +- dmsetup -v --noudevsync remove "$dev" || ret=$? ++ for dev in /sys/block/dm-* ; do ++ [ -e ${dev} ] || continue ++ _remove_dm ${dev##*/} || ret=$? + done + if [ "x$final" != "x" ]; then + info "dmsetup ls --tree" +-- +2.6.6 + diff --git a/0223-90dm-fixup-dependency-cycle-between-MD-and-DM-shutdo.patch b/0223-90dm-fixup-dependency-cycle-between-MD-and-DM-shutdo.patch new file mode 100644 index 0000000..61af101 --- /dev/null +++ b/0223-90dm-fixup-dependency-cycle-between-MD-and-DM-shutdo.patch @@ -0,0 +1,58 @@ +From e35fe0828445a36284b2ba0852247bf6671a2680 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 25 Aug 2016 09:49:14 +0200 +Subject: [PATCH] 90dm: fixup dependency cycle between MD and DM shutdown + +DM devices might be located on top of MD devices, so we need to +call the DM shutdown script before MD shutdown. The exception +here are multipath devices, which are below MD devices. +So skip removing multipath devices here to avoid spurious errors. + +References: bsc#994860 + +Signed-off-by: Hannes Reinecke +--- + modules.d/90dm/dm-shutdown.sh | 14 ++++++++++++-- + modules.d/90dm/module-setup.sh | 2 +- + 2 files changed, 13 insertions(+), 3 deletions(-) + +diff --git a/modules.d/90dm/dm-shutdown.sh b/modules.d/90dm/dm-shutdown.sh +index 0685a68..732548b 100755 +--- a/modules.d/90dm/dm-shutdown.sh ++++ b/modules.d/90dm/dm-shutdown.sh +@@ -9,8 +9,18 @@ _remove_dm() { + [ -e ${s} ] || continue + _remove_dm ${s##*/} + done +- devname=$(cat /sys/block/${dev}/dm/name) +- dmsetup -v --noudevsync remove "$devname" || return $? ++ # multipath devices might have MD devices on top, ++ # which are removed after this script. So do not ++ # remove those to avoid spurious errors ++ case $(cat /sys/block/${dev}/dm/uuid) in ++ mpath-*) ++ return 0 ++ ;; ++ *) ++ devname=$(cat /sys/block/${dev}/dm/name) ++ dmsetup -v --noudevsync remove "$devname" || return $? ++ ;; ++ esac + return 0 + } + +diff --git a/modules.d/90dm/module-setup.sh b/modules.d/90dm/module-setup.sh +index 419e8b1..a5ada46 100755 +--- a/modules.d/90dm/module-setup.sh ++++ b/modules.d/90dm/module-setup.sh +@@ -39,6 +39,6 @@ install() { + inst_rules "$moddir/59-persistent-storage-dm.rules" + prepare_udev_rules 59-persistent-storage-dm.rules + +- inst_hook shutdown 30 "$moddir/dm-shutdown.sh" ++ inst_hook shutdown 25 "$moddir/dm-shutdown.sh" + } + +-- +2.6.6 + diff --git a/0224-95iscsi-setup-bnx2i-offload-connections-properly.patch b/0224-95iscsi-setup-bnx2i-offload-connections-properly.patch new file mode 100644 index 0000000..84b3003 --- /dev/null +++ b/0224-95iscsi-setup-bnx2i-offload-connections-properly.patch @@ -0,0 +1,50 @@ +From 3ac0a07b762d115b385aa05abcb0c1559f932319 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Tue, 27 Sep 2016 12:51:09 +0200 +Subject: 95iscsi: setup bnx2i offload connections properly + +bnx2i offload connections do not have a corresponding network +device, but needs the 'iscsiuio' daemon to be started. + +References: bsc#997598 + +Signed-off-by: Hannes Reinecke +--- + modules.d/95iscsi/iscsiroot.sh | 8 +++----- + modules.d/95iscsi/module-setup.sh | 1 + + 2 files changed, 4 insertions(+), 5 deletions(-) + +diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh +index 6f0a15d..6ad279f 100755 +--- a/modules.d/95iscsi/iscsiroot.sh ++++ b/modules.d/95iscsi/iscsiroot.sh +@@ -264,11 +264,9 @@ if [ "$netif" = "timeout" ] && all_ifaces_setup; then + fi + + if getargbool 0 rd.iscsi.firmware -d -y iscsi_firmware ; then +- if [ "$netif" = "timeout" ] || [ "$netif" = "online" ]; then +- [ -f /tmp/session-retry ] || echo 1 > /tmp/session-retry +- handle_firmware +- ret=$? +- fi ++ [ -f /tmp/session-retry ] || echo 1 > /tmp/session-retry ++ handle_firmware ++ ret=$? + fi + + if ! [ "$netif" = "online" ]; then +diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh +index 797d4e1..e272b24 100755 +--- a/modules.d/95iscsi/module-setup.sh ++++ b/modules.d/95iscsi/module-setup.sh +@@ -279,6 +279,7 @@ install() { + mkdir -p "${initdir}/$systemdsystemunitdir/basic.target.wants" + for i in \ + iscsid.service \ ++ iscsiuio.service \ + ; do + ln_r "$systemdsystemunitdir/${i}" "$systemdsystemunitdir/basic.target.wants/${i}" + done +-- +2.6.6 + diff --git a/0225-95fcoe-do-not-start-fcoemon-twice.patch b/0225-95fcoe-do-not-start-fcoemon-twice.patch new file mode 100644 index 0000000..353152c --- /dev/null +++ b/0225-95fcoe-do-not-start-fcoemon-twice.patch @@ -0,0 +1,32 @@ +From 6e779051fd7ac96cf7db758df3ffe240ae3f8880 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Tue, 27 Sep 2016 16:38:36 +0200 +Subject: [PATCH] 95fcoe: do not start fcoemon twice + +With the latest changes to fcoe the fcoemon got started twice for +bnx2 installations. + +References: bsc#1001512 + +Signed-off-by: Hannes Reinecke +--- + modules.d/95fcoe/fcoe-up.sh | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/modules.d/95fcoe/fcoe-up.sh b/modules.d/95fcoe/fcoe-up.sh +index 102f9d3..74bdf81 100755 +--- a/modules.d/95fcoe/fcoe-up.sh ++++ b/modules.d/95fcoe/fcoe-up.sh +@@ -57,9 +57,6 @@ if [ "$netdriver" = "bnx2x" ]; then + udevadm settle --timeout=30 + # Sleep for 3 s to allow dcb negotiation + sleep 3 +- write_fcoemon_cfg +- fcoemon --syslog=yes +- fipvlan -c -s "$netif" + elif [ "$dcb" = "dcb" ]; then + # wait for lldpad to be ready + i=0 +-- +2.6.6 + diff --git a/0300-dracut_dont_use_dpkg_defaults_on_SUSE.patch b/0300-dracut_dont_use_dpkg_defaults_on_SUSE.patch new file mode 100644 index 0000000..d859df1 --- /dev/null +++ b/0300-dracut_dont_use_dpkg_defaults_on_SUSE.patch @@ -0,0 +1,40 @@ +From 9a3027a11ea5bac05c474a85da355e4e74793006 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 4 May 2016 13:36:34 +0200 +Subject: [PATCH] 50plymouth: don't use dpkg defaults on SUSE + +Signed-off-by: Thomas Renninger +--- + modules.d/50plymouth/module-setup.sh | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/modules.d/50plymouth/module-setup.sh b/modules.d/50plymouth/module-setup.sh +index 27dafca..d00f2f1 100755 +--- a/modules.d/50plymouth/module-setup.sh ++++ b/modules.d/50plymouth/module-setup.sh +@@ -3,6 +3,8 @@ + # called by dracut + check() { + [[ "$mount_needs" ]] && return 1 ++ # Don't include plymouth if plymouth-dracut package not installed ++ [ -x /usr/lib/plymouth/plymouth-populate-initrd ] || return 1 + require_binaries plymouthd plymouth plymouth-set-default-theme + } + +@@ -14,9 +16,10 @@ depends() { + # called by dracut + install() { + PKGLIBDIR="/usr/lib/plymouth" +- if type -P dpkg-architecture &>/dev/null; then +- PKGLIBDIR="/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/plymouth" +- fi ++ # breaks if dpkg is installed on openSUSE ++ #if type -P dpkg-architecture &>/dev/null; then ++ # PKGLIBDIR="/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/plymouth" ++ #fi + [ -x /usr/libexec/plymouth/plymouth-populate-initrd ] && PKGLIBDIR="/usr/libexec/plymouth" + + if grep -q nash ${PKGLIBDIR}/plymouth-populate-initrd \ +-- +2.6.6 + diff --git a/0301-include_sysconfig_language.patch b/0301-include_sysconfig_language.patch new file mode 100644 index 0000000..9cd1838 --- /dev/null +++ b/0301-include_sysconfig_language.patch @@ -0,0 +1,43 @@ +From 64929793cb6f58c865b7d87d241524d9d9cd7a4e Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Tue, 23 Aug 2016 12:56:08 +0200 +Subject: [PATCH] Include /etc/sysconfig/language instead of generating + /etc/locale.conf + +- There's a bug in systemd's locale-setup code, ignoring /etc/locale.conf +- Work around it by providing /etc/sysconfig/language directly +- May be the best way to support ROOT_USES_LANG in the initrd properly anyway, + so this patch can be kept even after the original systemd bug is fixed +--- + modules.d/10i18n/module-setup.sh | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/modules.d/10i18n/module-setup.sh b/modules.d/10i18n/module-setup.sh +index e5bf5eb..d6aab19 100755 +--- a/modules.d/10i18n/module-setup.sh ++++ b/modules.d/10i18n/module-setup.sh +@@ -25,6 +25,7 @@ install() { + KBDSUBDIRS=consolefonts,consoletrans,keymaps,unimaps + DEFAULT_FONT="${i18n_default_font:-LatArCyrHeb-16}" + I18N_CONF="/etc/locale.conf" ++ I18N_CONF_SUSE="/etc/sysconfig/language" + VCONFIG_CONF="/etc/vconsole.conf" + + # This is from 10redhat-i18n. +@@ -212,9 +213,10 @@ install() { + + if dracut_module_included "systemd" && [[ -f ${I18N_CONF} ]]; then + inst_simple ${I18N_CONF} +- else +- mksubdirs ${initdir}${I18N_CONF} +- print_vars LC_ALL LANG >> ${initdir}${I18N_CONF} ++ fi ++ ++ if dracut_module_included "systemd" && [[ -f ${I18N_CONF_SUSE} ]]; then ++ inst_simple ${I18N_CONF_SUSE} + fi + + if dracut_module_included "systemd" && [[ -f ${VCONFIG_CONF} ]]; then +-- +2.6.6 + diff --git a/0302-Revert-90multipath-add-hostonly-multipath.conf-in-ca.patch b/0302-Revert-90multipath-add-hostonly-multipath.conf-in-ca.patch new file mode 100644 index 0000000..a336492 --- /dev/null +++ b/0302-Revert-90multipath-add-hostonly-multipath.conf-in-ca.patch @@ -0,0 +1,88 @@ +From 269941f54e5cf0c601ae284207cdeab865ccc18d Mon Sep 17 00:00:00 2001 +From: Dave Young +Date: Wed, 4 May 2016 12:46:12 +0200 +Subject: [PATCH] Revert '90multipath: add hostonly multipath.conf in case + hostonly mode' + +Patch is incompatible with SUSE, which doesn't have mpathconf. + +Signed-off-by: Thomas Renninger +--- + modules.d/90multipath/module-setup.sh | 42 +++++++---------------------------- + 1 file changed, 8 insertions(+), 34 deletions(-) + +diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh +index 831c99f..c2c85c4 100755 +--- a/modules.d/90multipath/module-setup.sh ++++ b/modules.d/90multipath/module-setup.sh +@@ -1,28 +1,18 @@ + #!/bin/bash + +-is_mpath() { +- local _dev=$1 +- [ -e /sys/dev/block/$_dev/dm/uuid ] || return 1 +- [[ $(cat /sys/dev/block/$_dev/dm/uuid) =~ mpath- ]] && return 0 +- return 1 +-} +- +-majmin_to_mpath_dev() { +- local _dev +- for i in `ls -1 /dev/mapper/mpath*`; do +- dev=$(get_maj_min $i) +- if [ "$dev" = "$1" ]; then +- echo $i +- return +- fi +- done +-} + # called by dracut + check() { + local _rootdev + # if there's no multipath binary, no go. + require_binaries multipath || return 1 + ++ is_mpath() { ++ local _dev=$1 ++ [ -e /sys/dev/block/$_dev/dm/uuid ] || return 1 ++ [[ $(cat /sys/dev/block/$_dev/dm/uuid) =~ mpath- ]] && return 0 ++ return 1 ++ } ++ + [[ $hostonly ]] || [[ $mount_needs ]] && { + for_each_host_dev_and_slaves is_mpath || return 255 + } +@@ -89,18 +79,7 @@ installkernel() { + + # called by dracut + install() { +- local _f _allow +- add_hostonly_mpath_conf() { +- is_mpath $1 && { +- local _dev +- +- _dev=$(majmin_to_mpath_dev $1) +- [ -z "$_dev" ] && return +- strstr "$_allow" "$_dev" && return +- _allow="$_allow --allow $_dev" +- } +- } +- ++ local _f + inst_multiple -o \ + dmsetup \ + kpartx \ +@@ -114,11 +93,6 @@ install() { + /etc/multipath.conf \ + /etc/multipath/* + +- [[ $hostonly ]] && { +- for_each_host_dev_and_slaves_all add_hostonly_mpath_conf +- [ -n "$_allow" ] && mpathconf $_allow --outfile ${initdir}/etc/multipath.conf +- } +- + inst $(command -v partx) /sbin/partx + + inst_libdir_file "libmultipath*" "multipath/*" +-- +2.6.6 + diff --git a/0303-fix_multipath_check_hostonly.patch b/0303-fix_multipath_check_hostonly.patch new file mode 100644 index 0000000..103e77a --- /dev/null +++ b/0303-fix_multipath_check_hostonly.patch @@ -0,0 +1,38 @@ +From 72e51c9d9eed05a8a012b944494306eddd92eae4 Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Tue, 23 Aug 2016 12:56:21 +0200 +Subject: [PATCH] Fix warning about multipath if not needed + +Although no device uses multipath, the module checks +for presence of the multipath binary first, printing a +warning if not present. This patch fixes the wrong ordering. +--- + modules.d/90multipath/module-setup.sh | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh +index c2c85c4..d4bd6e1 100755 +--- a/modules.d/90multipath/module-setup.sh ++++ b/modules.d/90multipath/module-setup.sh +@@ -3,8 +3,6 @@ + # called by dracut + check() { + local _rootdev +- # if there's no multipath binary, no go. +- require_binaries multipath || return 1 + + is_mpath() { + local _dev=$1 +@@ -17,6 +15,9 @@ check() { + for_each_host_dev_and_slaves is_mpath || return 255 + } + ++ # if there's no multipath binary, no go. ++ require_binaries multipath || return 1 ++ + return 0 + } + +-- +2.6.6 + diff --git a/0304-90multipath-Start-daemon-after-udev-settle.patch b/0304-90multipath-Start-daemon-after-udev-settle.patch new file mode 100644 index 0000000..947e3a0 --- /dev/null +++ b/0304-90multipath-Start-daemon-after-udev-settle.patch @@ -0,0 +1,33 @@ +From d72902ee8f789ccdb6db0f7fb31b9a3adf06670f Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 24 Aug 2016 09:05:01 +0200 +Subject: [PATCH] 90multipath: Start daemon after udev settle + +We need to wait until udev has processed all events, otherwise we'll +risk of misdetecting devices. This might cause a temporary interruption +during which multipath removes a device-mapper device, which then +causes a booting failure. + +References: bsc#986734 + +Signed-off-by: Hannes Reinecke +--- + modules.d/90multipath/multipathd.service | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/modules.d/90multipath/multipathd.service b/modules.d/90multipath/multipathd.service +index f7bc65f..0f11bd5 100644 +--- a/modules.d/90multipath/multipathd.service ++++ b/modules.d/90multipath/multipathd.service +@@ -1,6 +1,8 @@ + [Unit] + Description=Device-Mapper Multipath Device Controller + Before=iscsi.service iscsid.service lvm2-activation-early.service ++Wants=systemd-udev-trigger.service systemd-udev-settle.service ++After=systemd-udev-trigger.service systemd-udev-settle.service + DefaultDependencies=no + Conflicts=shutdown.target + ConditionKernelCommandLine=!nompath +-- +2.6.6 + diff --git a/0305-90multipath-load-dm_multipath-module-during-startup.patch b/0305-90multipath-load-dm_multipath-module-during-startup.patch new file mode 100644 index 0000000..fc63a02 --- /dev/null +++ b/0305-90multipath-load-dm_multipath-module-during-startup.patch @@ -0,0 +1,34 @@ +From 457e1bd3a8707d82aa7b73294be84316b4658c61 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 24 Aug 2016 12:44:31 +0200 +Subject: [PATCH] 90multipath: load dm_multipath module during startup + +As the 'multipath' program will be triggered directly from +udev events it will be called before the multipath service +unit has started up. Which means we cannot rely on the +service unit to load the module for us, but we rather +have to do it early before udev is started. + +References: bsc#986734 + +Signed-off-by: Hannes Reinecke +--- + modules.d/90multipath/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh +index d4bd6e1..a5db55f 100755 +--- a/modules.d/90multipath/module-setup.sh ++++ b/modules.d/90multipath/module-setup.sh +@@ -30,7 +30,7 @@ depends() { + + # called by dracut + cmdline() { +- for m in scsi_dh_alua scsi_dh_emc scsi_dh_rdac ; do ++ for m in scsi_dh_alua scsi_dh_emc scsi_dh_rdac dm_multipath; do + if module_is_host_only $m ; then + printf 'rd.driver.pre=%s ' "$m" + fi +-- +2.6.6 + diff --git a/0306-90multipath-add-shutdown-script.patch b/0306-90multipath-add-shutdown-script.patch new file mode 100644 index 0000000..184bc60 --- /dev/null +++ b/0306-90multipath-add-shutdown-script.patch @@ -0,0 +1,65 @@ +From 800cfd66abb60fe9524d321df77717435ed96e35 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 25 Aug 2016 09:33:26 +0200 +Subject: [PATCH] 90multipath: add shutdown script + +As the device-mapper module is removing all device-mapper tables +during shutdown we need to make sure to disable queuing on the +multipath devices; otherwise there might still be I/O pending +and the removal will fail. + +References: bsc#994860 + +Signed-off-by: Hannes Reinecke +--- + modules.d/90multipath/module-setup.sh | 1 + + modules.d/90multipath/multipath-shutdown.sh | 7 +++++++ + modules.d/90multipath/multipathd-needshutdown.sh | 9 +++++---- + 3 files changed, 13 insertions(+), 4 deletions(-) + create mode 100755 modules.d/90multipath/multipath-shutdown.sh + +diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh +index a5db55f..ad257ad 100755 +--- a/modules.d/90multipath/module-setup.sh ++++ b/modules.d/90multipath/module-setup.sh +@@ -114,6 +114,7 @@ install() { + fi + + inst_hook cleanup 80 "$moddir/multipathd-needshutdown.sh" ++ inst_hook shutdown 20 "$moddir/multipath-shutdown.sh" + + inst_rules 40-multipath.rules 56-multipath.rules \ + 62-multipath.rules 65-multipath.rules \ +diff --git a/modules.d/90multipath/multipath-shutdown.sh b/modules.d/90multipath/multipath-shutdown.sh +new file mode 100755 +index 0000000..47e9990 +--- /dev/null ++++ b/modules.d/90multipath/multipath-shutdown.sh +@@ -0,0 +1,7 @@ ++#!/bin/bash ++ ++for i in $(multipath -l -v1); do ++ if ! $(dmsetup table $i | sed -n '/.*queue_if_no_path.*/q1') ; then ++ dmsetup message $i 0 fail_if_no_path ++ fi ++done +diff --git a/modules.d/90multipath/multipathd-needshutdown.sh b/modules.d/90multipath/multipathd-needshutdown.sh +index 214abd3..1d41bf8 100755 +--- a/modules.d/90multipath/multipathd-needshutdown.sh ++++ b/modules.d/90multipath/multipathd-needshutdown.sh +@@ -1,7 +1,8 @@ + #!/bin/sh + +-for i in /dev/mapper/mpath*; do +- [ -b "$i" ] || continue +- need_shutdown +- break ++for i in $(multipath -l -v1); do ++ if $(dmsetup table $i | sed -n '/.*queue_if_no_path.*/q1') ; then ++ need_shutdown ++ break ++ fi + done +-- +2.6.6 + diff --git a/0307-90multipath-parse-kernel-commandline-option-multipat.patch b/0307-90multipath-parse-kernel-commandline-option-multipat.patch new file mode 100644 index 0000000..ee5c319 --- /dev/null +++ b/0307-90multipath-parse-kernel-commandline-option-multipat.patch @@ -0,0 +1,30 @@ +From 8997862e7a72ee3322bc17002e321ec1969c1260 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 28 Sep 2016 15:29:52 +0200 +Subject: [PATCH] 90multipath: parse kernel commandline option 'multipath=off' + +SLES11 provided a kernel commandline option 'multipath=off', +so dracut should be parsing the option, too. + +References: bsc#1001691 + +Signed-off-by: Hannes Reinecke +--- + modules.d/90multipath/multipathd.service | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules.d/90multipath/multipathd.service b/modules.d/90multipath/multipathd.service +index 0f11bd5..ab42740 100644 +--- a/modules.d/90multipath/multipathd.service ++++ b/modules.d/90multipath/multipathd.service +@@ -8,6 +8,7 @@ Conflicts=shutdown.target + ConditionKernelCommandLine=!nompath + ConditionKernelCommandLine=!rd.multipath=0 + ConditionKernelCommandLine=!rd_NO_MULTIPATH ++ConditionKernelCommandLine=!multipath=off + + [Service] + Type=simple +-- +2.6.6 + diff --git a/0308-mdraid_add_IMSM_NO_PLATFORM_env.patch b/0308-mdraid_add_IMSM_NO_PLATFORM_env.patch new file mode 100644 index 0000000..31a818a --- /dev/null +++ b/0308-mdraid_add_IMSM_NO_PLATFORM_env.patch @@ -0,0 +1,12 @@ +Index: dracut-044/modules.d/90mdraid/parse-md.sh +=================================================================== +--- dracut-044.orig/modules.d/90mdraid/parse-md.sh 2015-11-25 14:22:28.000000000 +0100 ++++ dracut-044/modules.d/90mdraid/parse-md.sh 2016-10-07 15:23:20.122868317 +0200 +@@ -19,6 +19,7 @@ else + done; + printf 'GOTO="md_end"\n' + printf 'LABEL="md_uuid_ok"\n' ++ printf 'ENV{IMSM_NO_PLATFORM}="1"' + else + echo "$line" + fi diff --git a/0309-90dmraid-do-not-delete-partitions.patch b/0309-90dmraid-do-not-delete-partitions.patch new file mode 100644 index 0000000..32a5696 --- /dev/null +++ b/0309-90dmraid-do-not-delete-partitions.patch @@ -0,0 +1,33 @@ +From ec36a74a94d7d96670c25c89cffbbca1e964df0b Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Tue, 27 Sep 2016 16:38:36 +0200 +Subject: [PATCH] 90dmraid: do not delete partitions + +There is no point trying to delete partitions; dmraid works +happily even with them. On the contrary trying to delete partitions +can even be harmful when eg dmraid should _not_ be started. + +References: bsc#998860 + +Signed-off-by: Hannes Reinecke +--- + modules.d/90dmraid/61-dmraid-imsm.rules | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/modules.d/90dmraid/61-dmraid-imsm.rules b/modules.d/90dmraid/61-dmraid-imsm.rules +index 0193fbc..406cebd 100644 +--- a/modules.d/90dmraid/61-dmraid-imsm.rules ++++ b/modules.d/90dmraid/61-dmraid-imsm.rules +@@ -21,9 +21,6 @@ ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", GOTO="dm_end" + PROGRAM=="/bin/sh -c 'for i in $sys/$devpath/holders/dm-[0-9]*; do [ -e $$i ] && exit 0; done; exit 1;' ", \ + GOTO="dm_end" + +-ENV{DEVTYPE}!="partition", \ +- RUN+="/sbin/partx -d --nr 1-1024 $env{DEVNAME}" +- + RUN+="/sbin/initqueue --onetime --unique --settled /sbin/dmraid_scan $env{DEVNAME}" + + LABEL="dm_end" +-- +2.6.6 + diff --git a/0310-95resume-Do-not-resume-on-iSCSI.patch b/0310-95resume-Do-not-resume-on-iSCSI.patch new file mode 100644 index 0000000..b7da34e --- /dev/null +++ b/0310-95resume-Do-not-resume-on-iSCSI.patch @@ -0,0 +1,36 @@ +From 7cafbd9fe0f0799dc1a5c795d716e6732deb47ce Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 13 Oct 2016 09:58:32 +0200 +Subject: [PATCH 1/3] 95resume: Do not resume on iSCSI + +The iSCSI configuration is started after dracut checks for resume, +so we run into a timeout here. Additionally it's questionable if +resume on iSCSI makes sense (or is even supported on the platform), +so disable it for now. + +References: bsc#999663 + +Signed-off-by: Hannes Reinecke +--- + modules.d/95resume/module-setup.sh | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/modules.d/95resume/module-setup.sh b/modules.d/95resume/module-setup.sh +index 7fe6df3..b11f8e8 100755 +--- a/modules.d/95resume/module-setup.sh ++++ b/modules.d/95resume/module-setup.sh +@@ -2,6 +2,11 @@ + + # called by dracut + check() { ++ if dracut_module_included "iscsi" ; then ++ # Do not attempt resume on iscsi ++ return 255 ++ fi ++ + # No point trying to support resume, if no swap partition exist + [[ $hostonly ]] || [[ $mount_needs ]] && { + for fs in "${host_fs_types[@]}"; do +-- +2.6.6 + diff --git a/0311-95iscsi-ip-ibft-is-deprecated.patch b/0311-95iscsi-ip-ibft-is-deprecated.patch new file mode 100644 index 0000000..d4a2520 --- /dev/null +++ b/0311-95iscsi-ip-ibft-is-deprecated.patch @@ -0,0 +1,31 @@ +From d6ad4e35af406a344fd1a1a3e872e941e7e59c86 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 13 Oct 2016 10:00:49 +0200 +Subject: [PATCH 2/3] 95iscsi: ip=ibft is deprecated + +Upstream deprecated 'ip=ibft', so update module-setup.sh to +emit the correct command-line argument. + +References: bsc#1004437 + +Signed-off-by: Hannes Reinecke +--- + modules.d/95iscsi/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh +index e272b24..d6521f0 100755 +--- a/modules.d/95iscsi/module-setup.sh ++++ b/modules.d/95iscsi/module-setup.sh +@@ -61,7 +61,7 @@ install_ibft() { + fi + if [ -d ${d}/initiator ] ; then + if [ ${d##*/} = "ibft" ] && [ "$ibft_mod" != "bnx2i" ] ; then +- echo -n "ip=ibft " ++ echo -n "rd.iscsi.ibft=1 " + fi + echo -n "rd.iscsi.firmware=1" + fi +-- +2.6.6 + diff --git a/0312-40network-Do-not-print-message-about-tmp-net.ibft0.c.patch b/0312-40network-Do-not-print-message-about-tmp-net.ibft0.c.patch new file mode 100644 index 0000000..fe54f81 --- /dev/null +++ b/0312-40network-Do-not-print-message-about-tmp-net.ibft0.c.patch @@ -0,0 +1,40 @@ +From cc2bdf6b3bf0fcaa6597ee652c024027da24b501 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 13 Oct 2016 10:27:57 +0200 +Subject: [PATCH 3/3] 40network: Do not print message about /tmp/net.ibft0.conf + not found + +We need to check if the file /tmp/net.X.conf exists before trying +to read from it; not doing so will create a warning during boot. + +References: bsc#1004437 + +Signed-off-by: Hannes Reinecke +--- + modules.d/40network/ifup.sh | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh +index a4515d1..a684cba 100755 +--- a/modules.d/40network/ifup.sh ++++ b/modules.d/40network/ifup.sh +@@ -506,10 +506,12 @@ for p in $(getargs ip=); do + [ "$autoconf" = "ibft" ] && continue + + # skip if same configuration appears twice +- while read line +- do +- [ "$line" = "$p" ] && continue 2 +- done < /tmp/net.${netif}.conf ++ if [ -f /tmp/net.${netif}.conf ] ; then ++ while read line ++ do ++ [ "$line" = "$p" ] && continue 2 ++ done < /tmp/net.${netif}.conf ++ fi + + echo $p >> /tmp/net.${netif}.conf + +-- +2.6.6 + diff --git a/0313-90mdraid-Use-stock-MD-rules-to-assemble-RAID-arrays.patch b/0313-90mdraid-Use-stock-MD-rules-to-assemble-RAID-arrays.patch new file mode 100644 index 0000000..a04eb2e --- /dev/null +++ b/0313-90mdraid-Use-stock-MD-rules-to-assemble-RAID-arrays.patch @@ -0,0 +1,232 @@ +From 91ab88b0bda124816724dcea4c532259add83e41 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Fri, 14 Oct 2016 11:01:57 +0200 +Subject: [PATCH] 90mdraid: Use stock MD rules to assemble RAID arrays + +We cannot call 'mdadm' from a RUN udev event key or use the +initqueue, as 'mdadm -I' will remove the partitions before +assembling the array. This is only safe to be called directly +from the udev rule (eg by the IMPORT or PROGRAM key), as then +udev will prevent any events for the partition devices to +be processed. +If 'mdadm -I' is called _after_ the event is processed it will +race with udev processing the events for the partitions devices, +and induce random boot failures. + +References: bsc#998860 + +Signed-off-by: Hannes Reinecke +--- + modules.d/90mdraid/62-md-dracut-cmdline.rules | 16 +++++++++ + modules.d/90mdraid/65-md-incremental-imsm.rules | 44 ------------------------- + modules.d/90mdraid/mdraid_start.sh | 34 ------------------- + modules.d/90mdraid/module-setup.sh | 14 +------- + modules.d/90mdraid/parse-md.sh | 34 +++++++++---------- + 5 files changed, 32 insertions(+), 110 deletions(-) + create mode 100644 modules.d/90mdraid/62-md-dracut-cmdline.rules + delete mode 100644 modules.d/90mdraid/65-md-incremental-imsm.rules + delete mode 100755 modules.d/90mdraid/mdraid_start.sh + +diff --git a/modules.d/90mdraid/62-md-dracut-cmdline.rules b/modules.d/90mdraid/62-md-dracut-cmdline.rules +new file mode 100644 +index 0000000..c30636f +--- /dev/null ++++ b/modules.d/90mdraid/62-md-dracut-cmdline.rules +@@ -0,0 +1,16 @@ ++# Interpret dracut-specific commandline arguments which inhibit ++# mdadm from starting ++# See udev(8) for syntax ++ ++ACTION!="add|change", GOTO="md_end" ++SUBSYSTEM!="block", GOTO="md_end" ++ ++# Disable MD assembly if rd_NO_MD is given ++ENV{rd_NO_MD}=="?*", ENV{ID_FS_TYPE}=="ddf_raid_member|isw_raid_member|linux_raid_member", ENV{ID_FS_TYPE}="unknown" ++ ++# Disable ISW / IMSM RAID assembly if rd_NO_MDIMSM is given ++ENV{ID_FS_TYPE}=="isw_raid_member", ENV{rd_NO_MDIMSM}=="?*", ENV{ID_FS_TYPE}="unknown" ++# Disable DDF RAID assembly if rd_NO_MDDDF is given ++ENV{ID_FS_TYPE}=="ddf_raid_member", ENV{rd_NO_MDDDF}=="?*", ENV{ID_FS_TYPE}="unknown" ++ ++LABEL="md_end" +diff --git a/modules.d/90mdraid/65-md-incremental-imsm.rules b/modules.d/90mdraid/65-md-incremental-imsm.rules +deleted file mode 100644 +index d66dd01..0000000 +--- a/modules.d/90mdraid/65-md-incremental-imsm.rules ++++ /dev/null +@@ -1,44 +0,0 @@ +-# This file causes block devices with Linux RAID (mdadm) signatures to +-# automatically cause mdadm to be run. +-# See udev(8) for syntax +- +-ACTION!="add|change", GOTO="md_end" +-SUBSYSTEM!="block", GOTO="md_end" +-ENV{rd_NO_MD}=="?*", GOTO="md_end" +-KERNEL=="md*", ENV{ID_FS_TYPE}!="linux_raid_member", GOTO="md_end" +-KERNEL=="md*", ACTION!="change", GOTO="md_end" +- +-# Also don't process disks that are slated to be a multipath device +-ENV{DM_MULTIPATH_DEVICE_PATH}=="?*", GOTO="md_end" +- +-ENV{ID_FS_TYPE}=="ddf_raid_member|isw_raid_member|linux_raid_member", GOTO="md_try" +-GOTO="md_end" +- +-LABEL="md_try" +-ENV{ID_FS_TYPE}=="isw_raid_member", ENV{rd_NO_MDIMSM}=="?*", GOTO="md_end" +-ENV{ID_FS_TYPE}=="ddf_raid_member", ENV{rd_NO_MDDDF}=="?*", GOTO="md_end" +- +-# already done ? +-PROGRAM="/bin/sh -c 'for i in $sys/$devpath/holders/md[0-9_]*; do [ -e $$i ] && exit 0; done; exit 1;' ", \ +- GOTO="md_end" +- +-# for native arrays - array's uuid has to be specified +-# for containers - container's uuid has to be specified +-# TODO : how to get embedded array's uuid having container's component ? +-# +-# UUID CHECK +- +-ENV{DEVTYPE}!="partition", \ +- RUN+="/sbin/partx -d --nr 1-1024 $env{DEVNAME}" +- +-RUN+="/sbin/initqueue --timeout --name 50-mdraid_start --onetime --unique /sbin/mdraid_start" +- +-# +-# Incrementally build the md array; this will automatically assemble +-# any eventual containers as well (imsm, ddf) +-# +-LABEL="md_incremental" +- +-RUN+="/sbin/mdadm $env{rd_MD_OFFROOT} -I $env{DEVNAME}" +- +-LABEL="md_end" +diff --git a/modules.d/90mdraid/mdraid_start.sh b/modules.d/90mdraid/mdraid_start.sh +deleted file mode 100755 +index 400ab5d..0000000 +--- a/modules.d/90mdraid/mdraid_start.sh ++++ /dev/null +@@ -1,34 +0,0 @@ +-#!/bin/sh +- +-type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh +-_md_force_run() { +- local _udevinfo +- local _path_s +- local _path_d +- local _offroot +- _offroot=$(strstr "$(mdadm --help-options 2>&1)" offroot && echo --offroot) +- # try to force-run anything not running yet +- for md in /dev/md[0-9_]*; do +- [ -b "$md" ] || continue +- _udevinfo="$(udevadm info --query=env --name="$md")" +- strstr "$_udevinfo" "MD_LEVEL=container" && continue +- strstr "$_udevinfo" "DEVTYPE=partition" && continue +- +- _path_s="/sys/$(udevadm info -q path -n "$md")/md/array_state" +- [ ! -r "$_path_s" ] && continue +- +- # inactive ? +- [ "$(cat "$_path_s")" != "inactive" ] && continue +- +- mdadm $_offroot -R "$md" 2>&1 | vinfo +- +- # still inactive ? +- [ "$(cat "$_path_s")" = "inactive" ] && continue +- +- _path_d="${_path_s%/*}/degraded" +- [ ! -r "$_path_d" ] && continue +- > $hookdir/initqueue/work +- done +-} +- +-_md_force_run +diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh +index d865fca..13ef9fe 100755 +--- a/modules.d/90mdraid/module-setup.sh ++++ b/modules.d/90mdraid/module-setup.sh +@@ -79,18 +79,8 @@ install() { + inst_rules 64-md-raid.rules + # >=mdadm-3.3 udev rules + inst_rules 63-md-raid-arrays.rules 64-md-raid-assembly.rules +- # remove incremental assembly from stock rules, so they don't shadow +- # 65-md-inc*.rules and its fine-grained controls, or cause other problems +- # when we explicitly don't want certain components to be incrementally +- # assembled +- for rule in 64-md-raid.rules 64-md-raid-assembly.rules; do +- rule_path="${initdir}${udevdir}/rules.d/${rule}" +- [ -f "${rule_path}" ] && sed -i -r \ +- -e '/(RUN|IMPORT\{program\})\+?="[[:alpha:]/]*mdadm[[:blank:]]+(--incremental|-I)[[:blank:]]+(--export )?(\$env\{DEVNAME\}|\$tempnode|\$devnode)/d' \ +- "${rule_path}" +- done + +- inst_rules "$moddir/65-md-incremental-imsm.rules" ++ inst_rules "$moddir/62-md-dracut-cmdline.rules" + + inst_rules "$moddir/59-persistent-storage-md.rules" + prepare_udev_rules 59-persistent-storage-md.rules +@@ -125,12 +115,10 @@ install() { + inst_hook cleanup 99 "$moddir/mdraid-needshutdown.sh" + inst_hook shutdown 30 "$moddir/md-shutdown.sh" + inst_script "$moddir/mdraid-cleanup.sh" /sbin/mdraid-cleanup +- inst_script "$moddir/mdraid_start.sh" /sbin/mdraid_start + if dracut_module_included "systemd"; then + if [ -e $systemdsystemunitdir/mdmon@.service ]; then + inst_simple $systemdsystemunitdir/mdmon@.service + fi + fi + inst_hook pre-shutdown 30 "$moddir/mdmon-pre-shutdown.sh" +- dracut_need_initqueue + } +diff --git a/modules.d/90mdraid/parse-md.sh b/modules.d/90mdraid/parse-md.sh +index 8582f59..c187a91 100755 +--- a/modules.d/90mdraid/parse-md.sh ++++ b/modules.d/90mdraid/parse-md.sh +@@ -1,31 +1,27 @@ + #!/bin/sh + + MD_UUID=$(getargs rd.md.uuid -d rd_MD_UUID=) ++MD_RULES=/etc/udev/62-md-dracut-uuid.rules + + if ( ! [ -n "$MD_UUID" ] && ! getargbool 0 rd.auto ) || ! getargbool 1 rd.md -d -n rd_NO_MD; then + info "rd.md=0: removing MD RAID activation" + udevproperty rd_NO_MD=1 + else +- # rewrite the md rules to only process the specified raid array ++ # Create md rule to only process the specified raid array + if [ -n "$MD_UUID" ]; then +- for f in /etc/udev/rules.d/65-md-incremental*.rules; do +- [ -e "$f" ] || continue +- while read line || [ -n "$line" ]; do +- if [ "${line%%UUID CHECK}" != "$line" ]; then +- printf 'IMPORT{program}="/sbin/mdadm --examine --export $tempnode"\n' +- for uuid in $MD_UUID; do +- printf 'ENV{MD_UUID}=="%s", GOTO="md_uuid_ok"\n' $uuid +- printf 'ENV{ID_FS_UUID}=="%s", GOTO="md_uuid_ok"\n' $uuid +- done; +- printf 'GOTO="md_end"\n' +- printf 'LABEL="md_uuid_ok"\n' +- printf 'ENV{IMSM_NO_PLATFORM}="1"' +- else +- echo "$line" +- fi +- done < "${f}" > "${f}.new" +- mv "${f}.new" "$f" +- done ++ printf 'ACTION!="add|change", GOTO="md_uuid_end"\n' > $MD_RULES ++ printf 'SUBSYSTEM!="block", GOTO="md_uuid_end"\n' >> $MD_RULES ++ printf 'ENV{ID_FS_TYPE}!="ddf_raid_member", ENV{ID_FS_TYPE}!="isw_raid_member", ENV{ID_FS_TYPE}!="linux_raid_member", GOTO="md_uuid_end"\n' >> $MD_RULES ++ ++ for uuid in $MD_UUID; do ++ printf 'ENV{MD_UUID}=="%s", GOTO="md_uuid_ok"\n' $uuid >> $MD_RULES ++ printf 'ENV{ID_FS_UUID}=="%s", GOTO="md_uuid_ok"\n' $uuid >> $MD_RULES ++ done; ++ printf 'ENV{ID_FS_TYPE}="unknown"\n' >> $MD_RULES ++ printf 'GOTO="md_uuid_end"\n' >> $MD_RULES ++ printf 'LABEL="md_uuid_ok"\n' >> $MD_RULES ++ printf 'ENV{IMSM_NO_PLATFORM}="1"' >> $MD_RULES ++ printf 'LABEL="md_uuid_end"\n' >> $MD_RULES + fi + fi + +-- +2.6.6 + diff --git a/0314-nfs_do_not_pass_ifname_for_bonding_devices.patch b/0314-nfs_do_not_pass_ifname_for_bonding_devices.patch new file mode 100644 index 0000000..ffe87d6 --- /dev/null +++ b/0314-nfs_do_not_pass_ifname_for_bonding_devices.patch @@ -0,0 +1,16 @@ +Index: dracut-044/modules.d/95nfs/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/95nfs/module-setup.sh 2016-12-07 11:46:32.799438777 +0100 ++++ dracut-044/modules.d/95nfs/module-setup.sh 2016-12-07 11:46:33.519479687 +0100 +@@ -57,7 +57,10 @@ cmdline() { + nfs_address=${lookup##* } + fi + ifname=$(ip -o route get to $nfs_address | sed -n 's/.*dev \([^ ]*\).*/\1/p') +- if [ -e /sys/class/net/$ifname/address ] ; then ++ if [ -d /sys/class/net/$ifname/bonding ]; then ++ dinfo "Found bonded interface '${ifname}'. Make sure to provide an appropriate 'bond=' cmdline." ++ return ++ elif [ -e /sys/class/net/$ifname/address ] ; then + ifmac=$(cat /sys/class/net/$ifname/address) + printf 'ifname=%s:%s ' ${ifname} ${ifmac} + fi diff --git a/0402-driver-fail-summary.patch b/0402-driver-fail-summary.patch new file mode 100644 index 0000000..1b7bb59 --- /dev/null +++ b/0402-driver-fail-summary.patch @@ -0,0 +1,97 @@ +From 2e176c1a99db334756c91c6c0e10e029993e56c7 Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Tue, 3 Nov 2015 17:25:44 +0100 +Subject: [PATCH] Accumulate kernel module installation failures + +- Port 0169-Enabled-Warning-for-failed-kernel-modules-per-defaul.patch: + Subject: Enable warning for failed kernel moduiles + + Enabled Warning for failed kernel modules per default + and added summary of those to the end of dracut output + + References: bnc#886839 + +- Disable inline warnings in favour of summary + +Signed-off-by: Fabian Vogt +--- + dracut-init.sh | 8 +++++--- + dracut.sh | 15 +++++++++++++++ + 2 files changed, 20 insertions(+), 3 deletions(-) + +diff --git a/dracut-init.sh b/dracut-init.sh +index 9689c0b..0fda778 100644 +--- a/dracut-init.sh ++++ b/dracut-init.sh +@@ -1084,14 +1084,16 @@ instmods() { + [[ $no_kernel = yes ]] && return + # called [sub]functions inherit _fderr + local _fderr=9 +- local _check=no ++ local _check=yes + local _silent=no ++ + if [[ $1 = '-c' ]]; then + _check=yes + shift + fi + + if [[ $1 = '-s' ]]; then ++ _check=no + _silent=yes + shift + fi +@@ -1173,7 +1175,7 @@ instmods() { + while read _mod || [ -n "$_mod" ]; do + inst1mod "${_mod%.ko*}" || { + if [[ "$_check" == "yes" ]] && [[ "$_silent" == "no" ]]; then +- dfatal "Failed to install module $_mod" ++ echo $_mod >> $tmp_dracut_failed_drivers + fi + } + done +@@ -1181,7 +1183,7 @@ instmods() { + while (($# > 0)); do # filenames as arguments + inst1mod ${1%.ko*} || { + if [[ "$_check" == "yes" ]] && [[ "$_silent" == "no" ]]; then +- dfatal "Failed to install module $1" ++ echo $1 >> $tmp_dracut_failed_drivers + fi + } + shift +diff --git a/dracut.sh b/dracut.sh +index 12b253d..d7dc9ff 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -390,6 +390,12 @@ verbosity_mod_l=0 + unset kernel + unset outfile + ++if ! tmp_dracut_failed_drivers=$(mktemp /tmp/dracut.XXXXXXXXXX); then ++ echo "Could not create temporary file" ++ exit 1 ++fi ++export tmp_dracut_failed_drivers ++ + rearrange_params "$@" + eval set -- "$TEMP" + +@@ -1761,6 +1767,15 @@ if ! ( + exit 1 + fi + ++if [[ -s $tmp_dracut_failed_drivers ]]; then ++ dwarn "Some kernel modules could not be included" ++ dwarn "This is not necessarily an error:" ++ while read line; do ++ dwarn "$line" ++ done < $tmp_dracut_failed_drivers ++fi ++rm $tmp_dracut_failed_drivers ++ + if (( maxloglvl >= 5 )); then + if [[ $allowlocal ]]; then + "$dracutbasedir/lsinitrd.sh" "${DRACUT_TMPDIR}/initramfs.img"| ddebug +-- +2.6.6 + diff --git a/0403-95lunmask-Add-module-to-handle-LUN-masking.patch b/0403-95lunmask-Add-module-to-handle-LUN-masking.patch new file mode 100644 index 0000000..7e1dac2 --- /dev/null +++ b/0403-95lunmask-Add-module-to-handle-LUN-masking.patch @@ -0,0 +1,212 @@ +From 55adce6c6676c83f9130c3b6e0391bfcb5c92320 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 11 Nov 2015 12:20:33 +0100 +Subject: [PATCH] 95lunmask: Add module to handle LUN masking + +Using the module option 'scsi_mod.scan=manual' +this implements LUN masking by selectively enable only those +devices required for booting. + +References: bsc#954600,FATE#319786 + +Signed-off-by: Hannes Reinecke +--- + modules.d/95lunmask/fc_transport_scan_lun.sh | 26 ++++++++++ + modules.d/95lunmask/module-setup.sh | 70 +++++++++++++++++++++++++++ + modules.d/95lunmask/parse-lunmask.sh | 40 +++++++++++++++ + modules.d/95lunmask/sas_transport_scan_lun.sh | 26 ++++++++++ + 4 files changed, 162 insertions(+) + create mode 100755 modules.d/95lunmask/fc_transport_scan_lun.sh + create mode 100755 modules.d/95lunmask/module-setup.sh + create mode 100755 modules.d/95lunmask/parse-lunmask.sh + create mode 100755 modules.d/95lunmask/sas_transport_scan_lun.sh + +diff --git a/modules.d/95lunmask/fc_transport_scan_lun.sh b/modules.d/95lunmask/fc_transport_scan_lun.sh +new file mode 100755 +index 0000000..d9f84a3 +--- /dev/null ++++ b/modules.d/95lunmask/fc_transport_scan_lun.sh +@@ -0,0 +1,26 @@ ++#!/bin/bash ++# ++# fc_transport_lun_scan ++# ++# Selectively enable individual LUNs behind an FC remote port ++# ++# ACTION=="add", SUBSYSTEM=="fc_transport", ATTR{port_name}=="wwpn", \ ++# PROGRAM="fc_transport_lun_scan lun" ++# ++ ++[ -z $DEVPATH ] && exit 1 ++ ++if [ -n "$1" ] ; then ++ LUN=$1 ++else ++ LUN=- ++fi ++ID=${DEVPATH##*/rport-} ++HOST=${ID%%:*} ++CHANNEL=${ID%%-*} ++CHANNEL=${CHANNEL#*:} ++if [ -f /sys$DEVPATH/scsi_target_id ] ; then ++ TARGET=$(cat /sys$DEVPATH/scsi_target_id) ++fi ++[ -z "$TARGET" ] && exit 1 ++echo $CHANNEL $TARGET $LUN > /sys/class/scsi_host/host$HOST/scan +diff --git a/modules.d/95lunmask/module-setup.sh b/modules.d/95lunmask/module-setup.sh +new file mode 100755 +index 0000000..6afaed2 +--- /dev/null ++++ b/modules.d/95lunmask/module-setup.sh +@@ -0,0 +1,70 @@ ++#!/bin/bash ++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- ++# ex: ts=8 sw=4 sts=4 et filetype=sh ++ ++# called by dracut ++cmdline() { ++ get_lunmask() { ++ local _dev=$1 ++ local _devpath=$(cd -P /sys/dev/block/$_dev ; echo $PWD) ++ local _sdev _lun _rport _end_device _classdev _wwpn _sas_address ++ ++ [ "${_devpath#*/sd}" == "$_devpath" ] && return 1 ++ _sdev="${_devpath%%/block/*}" ++ _lun="${_sdev##*:}" ++ # Check for FibreChannel ++ _rport="${_devpath##*/rport-}" ++ if [ "$_rport" != "$_devpath" ] ; then ++ _rport="${_rport%%/*}" ++ _classdev="/sys/class/fc_remote_ports/rport-${_rport}" ++ [ -d "$_classdev" ] || return 1 ++ _wwpn=$(cat ${_classdev}/port_name) ++ echo "rd.lunmask=fc,${_wwpn},${_lun}" ++ return 0 ++ fi ++ # Check for SAS ++ _end_device="${_devpath##*/end_device-}" ++ if [ "$_end_device" != "$_devpath" ] ; then ++ _end_device="${_end_device%%/*}" ++ _classdev="/sys/class/sas_device/end_device-${_end_device}" ++ [ -e "$_classdev" ] || return 1 ++ _sas_address=$(cat ${_classdev}/sas_address) ++ echo "rd.lunmask=sas,${_sas_address},${_lun}" ++ return 0 ++ fi ++ return 1 ++ } ++ [[ $hostonly ]] || [[ $mount_needs ]] && { ++ for_each_host_dev_and_slaves_all get_lunmask ++ } | sort | uniq ++} ++ ++# called by dracut ++check() { ++ [[ $hostonly ]] || [[ $mount_needs ]] && { ++ [ -w /sys/module/scsi_mod/parameters/scan ] || return 255 ++ scan_type=$(cat /sys/module/scsi_mod/parameters/scan) ++ [ "$scan_type" = "manual" ] && return 0 ++ return 255 ++ } ++ return 0 ++} ++ ++# called by dracut ++depends() { ++ return 0 ++} ++ ++# called by dracut ++install() { ++ inst_script "$moddir/fc_transport_scan_lun.sh" /usr/lib/udev/fc_transport_scan_lun.sh ++ inst_script "$moddir/sas_transport_scan_lun.sh" /usr/lib/udev/sas_transport_scan_lun.sh ++ inst_hook cmdline 30 "$moddir/parse-lunmask.sh" ++ if [[ $hostonly_cmdline == "yes" ]] ; then ++ local _lunmask ++ ++ for _lunmask in $(cmdline) ; do ++ printf "%s\n" "$_lunmask" >> "${initdir}/etc/cmdline.d/95lunmask.conf" ++ done ++ fi ++} +diff --git a/modules.d/95lunmask/parse-lunmask.sh b/modules.d/95lunmask/parse-lunmask.sh +new file mode 100755 +index 0000000..6646876 +--- /dev/null ++++ b/modules.d/95lunmask/parse-lunmask.sh +@@ -0,0 +1,40 @@ ++#!/bin/sh ++# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- ++# ex: ts=8 sw=4 sts=4 et filetype=sh ++ ++create_udev_rule() { ++ local transport=$1 ++ local tgtid=$2 ++ local lun=$3 ++ local _rule=/etc/udev/rules.d/51-${transport}-lunmask-${tgtid}.rules ++ local _cu_type _dev_type ++ ++ [ -e ${_rule} ] && return 0 ++ ++ if [ ! -f "$_rule" ] ; then ++ if [ "$transport" = "fc" ] ; then ++ cat > $_rule < $_rule < /sys/module/scsi_mod/parameters/scan ++ elif [ ! -f /etc/modprobe.d/95lunmask.conf ] ; then ++ echo "options scsi_mod scan=manual" > /etc/modprobe.d/95lunmask.conf ++ fi ++ create_udev_rule $1 $2 $3 ++ ) ++done +diff --git a/modules.d/95lunmask/sas_transport_scan_lun.sh b/modules.d/95lunmask/sas_transport_scan_lun.sh +new file mode 100755 +index 0000000..f7702f8 +--- /dev/null ++++ b/modules.d/95lunmask/sas_transport_scan_lun.sh +@@ -0,0 +1,26 @@ ++#!/bin/bash ++# ++# sas_transport_lun_scan ++# ++# Selectively enable individual LUNs behind a SAS end device ++# ++# ACTION=="add", SUBSYSTEM=="sas_transport", ATTR{sas_address}=="sas_addr", \ ++# PROGRAM="sas_transport_lun_scan lun" ++# ++ ++[ -z $DEVPATH ] && exit 1 ++ ++if [ -n "$1" ] ; then ++ LUN=$1 ++else ++ LUN=- ++fi ++ID=${DEVPATH##*/end_device-} ++HOST=${ID%%:*} ++CHANNEL=${ID%%-*} ++CHANNEL=${CHANNEL#*:} ++if [ -f /sys$DEVPATH/scsi_target_id ] ; then ++ TARGET=$(cat /sys$DEVPATH/scsi_target_id) ++fi ++[ -z "$TARGET" ] && exit 1 ++echo 0 $TARGET $LUN > /sys/class/scsi_host/host$HOST/scan +-- +2.6.6 + diff --git a/0404-dracut-emergency-optionally-print-fs-help.patch b/0404-dracut-emergency-optionally-print-fs-help.patch new file mode 100644 index 0000000..816c7c6 --- /dev/null +++ b/0404-dracut-emergency-optionally-print-fs-help.patch @@ -0,0 +1,55 @@ +From 033e11927e1f7f3d1163ba78dfd5e7a6bad41ee7 Mon Sep 17 00:00:00 2001 +From: Mark Fasheh +Date: Fri, 24 Jun 2016 15:11:17 -0700 +Subject: [PATCH] dracut-emergency: optionally print fs help + +Allow filesystem modules to install a fs-specific text file with +instructions on what to do when mount fails. This is printed when we go into +an emergency shell. + +Signed-off-by: Mark Fasheh +--- + dracut-init.sh | 6 ++++++ + modules.d/98dracut-systemd/dracut-emergency.sh | 2 ++ + 2 files changed, 8 insertions(+) + +diff --git a/dracut-init.sh b/dracut-init.sh +index 0fda778..c941390 100644 +--- a/dracut-init.sh ++++ b/dracut-init.sh +@@ -240,6 +240,12 @@ inst_script() { + (($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$@" || : + } + ++inst_fsck_help() { ++ local _helper="/usr/share/fsck/fsck_help_$1.txt" ++ $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$2" $_helper ++ (($? != 0)) && derror $DRACUT_INSTALL ${initdir:+-D "$initdir"} ${loginstall:+-L "$loginstall"} ${DRACUT_RESOLVE_DEPS:+-l} ${DRACUT_FIPS_MODE:+-f} "$2" $_helper || : ++} ++ + mark_hostonly() { + for i in "$@"; do + echo "$i" >> "$initdir/lib/dracut/hostonly-files" +diff --git a/modules.d/98dracut-systemd/dracut-emergency.sh b/modules.d/98dracut-systemd/dracut-emergency.sh +index 26be291..2d9ecd7 100755 +--- a/modules.d/98dracut-systemd/dracut-emergency.sh ++++ b/modules.d/98dracut-systemd/dracut-emergency.sh +@@ -16,6 +16,7 @@ source_hook "$hook" + + + if getargbool 1 rd.shell -d -y rdshell || getarg rd.break -d rdbreak; then ++ FSTXT="/usr/share/fsck/fsck_help_$fstype.txt" + echo + rdsosreport + echo +@@ -26,6 +27,7 @@ if getargbool 1 rd.shell -d -y rdshell || getarg rd.break -d rdbreak; then + echo 'after mounting them and attach it to a bug report.' + echo + echo ++ [ -f $FSTXT ] && cat $FSTXT + [ -f /etc/profile ] && . /etc/profile + [ -z "$PS1" ] && export PS1="$_name:\${PWD}# " + exec sh -i -l +-- +2.6.6 + diff --git a/0450-Strip-NUL-bytes-in-stream-before-push-in-string.patch b/0450-Strip-NUL-bytes-in-stream-before-push-in-string.patch new file mode 100644 index 0000000..ae9781b --- /dev/null +++ b/0450-Strip-NUL-bytes-in-stream-before-push-in-string.patch @@ -0,0 +1,119 @@ +From 8ebcb9c3ded888ecd5c6fc0bbf4c9f490c3cdb56 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Tue, 1 Mar 2016 21:03:18 +0100 +Subject: [PATCH] Strip NUL bytes in stream before push in string +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Based on a patch by Tomasz Paweł Gajc + +Workaround for bsc989218, the next upstream release +fixes this properly. +--- + dracut.sh | 2 +- + modules.d/50drm/module-setup.sh | 6 +++--- + modules.d/90kernel-modules/module-setup.sh | 6 +++--- + modules.d/90kernel-network-modules/module-setup.sh | 6 +++--- + modules.d/90multipath/module-setup.sh | 6 +++--- + modules.d/95iscsi/module-setup.sh | 6 +++--- + 6 files changed, 16 insertions(+), 16 deletions(-) + +Index: dracut-044/dracut.sh +=================================================================== +--- dracut-044.orig/dracut.sh ++++ dracut-044/dracut.sh +@@ -1641,7 +1641,7 @@ if [[ $do_strip = yes ]] && ! [[ $DRACUT + # strip kernel modules, but do not touch signed modules + find "$initdir" -type f -path '*/lib/modules/*.ko' -print0 \ + | while read -r -d $'\0' f || [ -n "$f" ]; do +- SIG=$(tail -c 28 "$f") ++ SIG=$(tail -c 28 "$f" | tr -d '\000') + [[ $SIG == '~Module signature appended~' ]] || { printf "%s\000" "$f"; } + done | xargs -r -0 strip -g + +Index: dracut-044/modules.d/50drm/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/50drm/module-setup.sh ++++ dracut-044/modules.d/50drm/module-setup.sh +@@ -24,9 +24,9 @@ installkernel() { + 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="$(cat "$_fname" | tr -cd '[:print:]')" ;; ++ *.ko.gz) _fcont="$(gzip -dc "$_fname" | tr -cd '[:print:]')" ;; ++ *.ko.xz) _fcont="$(xz -dc "$_fname" | tr -cd '[:print:]')" ;; + esac + [[ $_fcont =~ $_drm_drivers + && ! $_fcont =~ iw_handler_get_spy ]] \ +Index: dracut-044/modules.d/90kernel-modules/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/90kernel-modules/module-setup.sh ++++ dracut-044/modules.d/90kernel-modules/module-setup.sh +@@ -10,9 +10,9 @@ installkernel() { + 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) [[ $(cat "$_f" | tr -cd '[:print:]') =~ $_blockfuncs ]] && echo "$_f" ;; ++ *.ko.gz) [[ $(gzip -dc <"$_f" | tr -cd '[:print:]') =~ $_blockfuncs ]] && echo "$_f" ;; ++ *.ko.xz) [[ $(xz -dc <"$_f" | tr -cd '[:print:]') =~ $_blockfuncs ]] && echo "$_f" ;; + esac + done + return 0 +Index: dracut-044/modules.d/90kernel-network-modules/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/90kernel-network-modules/module-setup.sh ++++ dracut-044/modules.d/90kernel-network-modules/module-setup.sh +@@ -45,9 +45,9 @@ installkernel() { + 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="$(cat "$_fname" | tr -cd '[:print:]')" ;; ++ *.ko.gz) _fcont="$(gzip -dc "$_fname" | tr -cd '[:print:]')" ;; ++ *.ko.xz) _fcont="$(xz -dc "$_fname" | tr -cd '[:print:]')" ;; + esac + [[ $_fcont =~ $_net_drivers + && ! $_fcont =~ iw_handler_get_spy ]] \ +Index: dracut-044/modules.d/90multipath/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/90multipath/module-setup.sh ++++ dracut-044/modules.d/90multipath/module-setup.sh +@@ -49,9 +49,9 @@ installkernel() { + 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) [[ $(cat "$_f" | tr -cd '[:print:]') =~ $_funcs ]] && echo "$_f" ;; ++ *.ko.gz) [[ $(gzip -dc <"$_f" | tr -cd '[:print:]') =~ $_funcs ]] && echo "$_f" ;; ++ *.ko.xz) [[ $(xz -dc <"$_f" | tr -cd '[:print:]') =~ $_funcs ]] && echo "$_f" ;; + esac + done + return 0 +Index: dracut-044/modules.d/95iscsi/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/95iscsi/module-setup.sh ++++ dracut-044/modules.d/95iscsi/module-setup.sh +@@ -189,9 +189,9 @@ installkernel() { + 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 -cd '[:print:]') =~ $_funcs ]] && echo "$_f" ;; ++ *.ko.gz) [[ $(gzip -dc <"$_f" | tr -cd '[:print:]') =~ $_funcs ]] && echo "$_f" ;; ++ *.ko.xz) [[ $(xz -dc <"$_f" | tr -cd '[:print:]') =~ $_funcs ]] && echo "$_f" ;; + esac + done + return 0 diff --git a/0451-systemd-initrd-add-initrd-root-device.target.patch b/0451-systemd-initrd-add-initrd-root-device.target.patch new file mode 100644 index 0000000..e21cfad --- /dev/null +++ b/0451-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.0 + diff --git a/0452-Always-try-to-add-pinctrl-cherryview.patch b/0452-Always-try-to-add-pinctrl-cherryview.patch new file mode 100644 index 0000000..2c5fb8d --- /dev/null +++ b/0452-Always-try-to-add-pinctrl-cherryview.patch @@ -0,0 +1,27 @@ +From 9ffab3f3a5105691b4b640649c3a99e3cce39c1a Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Tue, 15 Nov 2016 11:51:01 +0100 +Subject: [PATCH] Always try to add pinctrl-cherryview + +Contrary to previous intel pinctrl drivers, the cherryview driver can be +and usually is built as a module. However, it sets up the SDIO pinout +so sdhci can make use of the SD card reader, which may subsequently +hold a root file system on a card (bsc#998440). +--- + modules.d/90kernel-modules/module-setup.sh | 1 + + 1 file changed, 1 insertion(+) + +Index: dracut-044/modules.d/90kernel-modules/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/90kernel-modules/module-setup.sh ++++ dracut-044/modules.d/90kernel-modules/module-setup.sh +@@ -39,7 +39,8 @@ installkernel() { + ehci-hcd ehci-pci ehci-platform \ + ohci-hcd ohci-pci \ + uhci-hcd \ +- xhci-hcd xhci-pci xhci-plat-hcd ++ xhci-hcd xhci-pci xhci-plat-hcd \ ++ pinctrl-cherryview + + instmods \ + "=drivers/hid" \ diff --git a/0453-Resolve-symbolic-links-for-i-and-k-parameters-bsc-90.patch b/0453-Resolve-symbolic-links-for-i-and-k-parameters-bsc-90.patch new file mode 100644 index 0000000..138f80d --- /dev/null +++ b/0453-Resolve-symbolic-links-for-i-and-k-parameters-bsc-90.patch @@ -0,0 +1,30 @@ +From 7957bd01b097507a601495ed7cd2c8480c2af67b Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Thu, 17 Nov 2016 16:08:31 +0100 +Subject: [PATCH] Resolve symbolic links for -i and -k parameters (bsc#902375) + +--- + mkinitrd-suse.sh | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/mkinitrd-suse.sh b/mkinitrd-suse.sh +index 0f2b3c4..bc49d73 100755 +--- a/mkinitrd-suse.sh ++++ b/mkinitrd-suse.sh +@@ -237,11 +237,13 @@ while (($# > 0)); do + -k) # Would be nice to get a list of images here + read_arg kernel_images "$@" || shift $? + for kernel_image in $kernel_images;do ++ [ -L "/boot/$kernel_image" ] && kernel_image="$(readlink "/boot/$kernel_image")" + kernels="$kernels ${kernel_image#*-}" + done + ;; + -i) read_arg initrd_images "$@" || shift $? + for initrd_image in $initrd_images;do ++ [ -L "/boot/$initrd_image" ] && initrd_image="$(readlink "/boot/$initrd_image")" + # Check if the initrd_image contains a path. + # if not, then add the default boot_dir + dname=`dirname $initrd_image` +-- +2.10.0 + diff --git a/0454-Add-md4-and-arc4-modules-for-ntlm.patch b/0454-Add-md4-and-arc4-modules-for-ntlm.patch new file mode 100644 index 0000000..b4e41f1 --- /dev/null +++ b/0454-Add-md4-and-arc4-modules-for-ntlm.patch @@ -0,0 +1,30 @@ +From e69da98de1a4175fb3c745570471fc3a7d567a33 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Thu, 17 Nov 2016 11:22:48 +0100 +Subject: [PATCH] Add md4 and arc4 modules for ntlm + +Some crashkernel targets still use legacy NTLM auth, which +require those (bsc#869496). This patch enumerates all dependent +hash algorithems, because even though most of them are probably +compiled in, older ones (e.g. md4 and arc4) usually aren't. +--- + modules.d/95cifs/module-setup.sh | 6 ++++++ + 1 file changed, 6 insertions(+) + +Index: dracut-044/modules.d/95cifs/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/95cifs/module-setup.sh ++++ dracut-044/modules.d/95cifs/module-setup.sh +@@ -24,6 +24,12 @@ depends() { + # called by dracut + installkernel() { + instmods cifs ipv6 ++ # hash algos ++ instmods md4 md5 sha256 ++ # ciphers ++ instmods aes arc4 des ecb ++ # macs ++ instmods hmac cmac + } + + # called by dracut diff --git a/0500-Reset-IFS-variable.patch b/0500-Reset-IFS-variable.patch new file mode 100644 index 0000000..0cf0a78 --- /dev/null +++ b/0500-Reset-IFS-variable.patch @@ -0,0 +1,103 @@ +From bcaa0a11b41765be7cbb92e2641750b5adb8e326 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Mon, 14 Jul 2014 10:22:31 +0200 +Subject: [PATCH] Reset IFS variable + +Setting and unsetting the IFS variable is tricky. To be on the +safe side we should always reset the IFS variable to its original +value after parsing. + +Signed-off-by: Hannes Reinecke +--- + modules.d/95dasd/parse-dasd.sh | 2 ++ + modules.d/95dasd_rules/parse-dasd.sh | 8 ++++++-- + modules.d/95zfcp_rules/parse-zfcp.sh | 4 ++++ + 3 files changed, 12 insertions(+), 2 deletions(-) + +diff --git a/modules.d/95dasd/parse-dasd.sh b/modules.d/95dasd/parse-dasd.sh +index 35c997c..976bd03 100755 +--- a/modules.d/95dasd/parse-dasd.sh ++++ b/modules.d/95dasd/parse-dasd.sh +@@ -1,8 +1,10 @@ + #!/bin/sh + for dasd_arg in $(getargs rd.dasd= -d rd_DASD= DASD=); do + ( ++ local OLDIFS="$IFS" + IFS="," + set -- $dasd_arg ++ IFS="$OLDIFS" + echo "$@" | normalize_dasd_arg >> /etc/dasd.conf + ) + done +diff --git a/modules.d/95dasd_rules/parse-dasd.sh b/modules.d/95dasd_rules/parse-dasd.sh +index e1bee62..1cc621f 100755 +--- a/modules.d/95dasd_rules/parse-dasd.sh ++++ b/modules.d/95dasd_rules/parse-dasd.sh +@@ -59,8 +59,10 @@ for dasd_arg in $(getargs root=) $(getargs resume=); do + ;; + esac + if [ -n "$ccw_arg" ] ; then ++ OLDIFS="$IFS" + IFS="-" + set -- $ccw_arg ++ IFS="$OLDIFS" + create_udev_rule $2 + fi + ) +@@ -68,9 +70,10 @@ done + + for dasd_arg in $(getargs rd.dasd=); do + ( ++ OLDIFS="$IFS" + IFS="," + set -- $dasd_arg +- unset IFS ++ IFS="$OLDIFS" + while (($# > 0)); do + case $1 in + autodetect|probeonly) +@@ -78,13 +81,14 @@ for dasd_arg in $(getargs rd.dasd=); do + ;; + *-*) + range=$1 ++ OLDIFS="$IFS" + IFS="-" + set -- $range + start=${1#0.0.} + shift + end=${1#0.0.} + shift +- unset IFS ++ IFS="$OLDIFS" + for dev in $(seq $(( 16#$start )) $(( 16#$end )) ) ; do + create_udev_rule $(printf "0.0.%04x" "$dev") + done +diff --git a/modules.d/95zfcp_rules/parse-zfcp.sh b/modules.d/95zfcp_rules/parse-zfcp.sh +index 77412f7..7d47d35 100755 +--- a/modules.d/95zfcp_rules/parse-zfcp.sh ++++ b/modules.d/95zfcp_rules/parse-zfcp.sh +@@ -53,8 +53,10 @@ fi + + for zfcp_arg in $(getargs rd.zfcp); do + ( ++ OLDIFS="$IFS" + IFS="," + set $zfcp_arg ++ IFS="$OLDIFS" + create_udev_rule $1 $2 $3 + ) + done +@@ -70,8 +72,10 @@ for zfcp_arg in $(getargs root=) $(getargs resume=); do + ;; + esac + if [ -n "$ccw_arg" ] ; then ++ OLDIFS="$IFS" + IFS="-" + set -- $ccw_arg ++ IFS="$OLDIFS" + _wwpn=${4%:*} + _lun=${4#*:} + create_udev_rule $2 $wwpn $lun +-- +2.6.6 + diff --git a/0501-dasd_fix_ssid_bigger_zero.patch b/0501-dasd_fix_ssid_bigger_zero.patch new file mode 100644 index 0000000..42bd016 --- /dev/null +++ b/0501-dasd_fix_ssid_bigger_zero.patch @@ -0,0 +1,56 @@ +From d8b28c14e3f350acdda42a0cc2c60ce71b9c53a2 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Tue, 23 Aug 2016 12:56:53 +0200 +Subject: [PATCH] Fix DASD with SSID greater than 0 + +bsc#989313 + +Signed-off-by: Thomas Renninger +--- + modules.d/95dasd_rules/parse-dasd.sh | 19 ++++++++++++++----- + 1 file changed, 14 insertions(+), 5 deletions(-) + +diff --git a/modules.d/95dasd_rules/parse-dasd.sh b/modules.d/95dasd_rules/parse-dasd.sh +index 1cc621f..67ed802 100755 +--- a/modules.d/95dasd_rules/parse-dasd.sh ++++ b/modules.d/95dasd_rules/parse-dasd.sh +@@ -84,13 +84,14 @@ for dasd_arg in $(getargs rd.dasd=); do + OLDIFS="$IFS" + IFS="-" + set -- $range +- start=${1#0.0.} ++ prefix=${1%.*} ++ start=${1##*.} + shift +- end=${1#0.0.} ++ end=${1##.} + shift + IFS="$OLDIFS" + for dev in $(seq $(( 16#$start )) $(( 16#$end )) ) ; do +- create_udev_rule $(printf "0.0.%04x" "$dev") ++ create_udev_rule $(printf "%s.%04x" "$prefix" "$dev") + done + ;; + *) +@@ -98,8 +99,16 @@ for dasd_arg in $(getargs rd.dasd=); do + if [ "$dev" != "$1" ] ; then + ro=1 + fi +- dev=${dev#0.0.} +- create_udev_rule $(printf "0.0.%04x" $(( 16#$dev )) ) ++ OLDIFS="$IFS" ++ IFS="." ++ set -- $dev ++ sid=$1 ++ shift ++ ssid=$1 ++ shift ++ chan=$1 ++ IFS="$OLDIFS" ++ create_udev_rule $(printf "%01x.%01x.%04x" $(( 16#$sid )) $(( 16#$ssid )) $(( 16#$chan )) ) + shift + ;; + esac +-- +2.6.6 + diff --git a/0502-persistent_device_policy_param_enhance.patch b/0502-persistent_device_policy_param_enhance.patch new file mode 100644 index 0000000..8c502bb --- /dev/null +++ b/0502-persistent_device_policy_param_enhance.patch @@ -0,0 +1,58 @@ +From: Martin Wilck +Date: Wed, 5 Oct 2016 13:54:26 +0200 +Subject: [RFC/PATCH] Give --persistent_policy precedence over /dev/mapper names + +There is currently no way to override dracut's preference for +/dev/mapper device names. But using these is problematic in +different scenarios: For example, if a user has a multipath- +enabled system but wants to disable multipath, or if the +names of multipath maps change because of configuration changes +(e.g. toggling user_friendly_names in /etc/multipath.conf). + +This patch makes dracut prefer the user-specified +--persistent_policy names over /dev/mapper names. + +It might be worthwhile to discuss why dracut prefers /dev/mapper +of /dev/disk/by-uuid at all. This preference was introduced +in 9037b63e with the argument "dm devices maintain /dev/mapper/* as +persistent names", but that's wrong for the scenarios mentioned +above, and is not a compelling reason for preferring /dev/mapper +over /dev/disk/by-uuid. + +References: bsc#908143 + +Signed-off-by: Martin Wilck +--- + dracut-functions.sh | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/dracut-functions.sh b/dracut-functions.sh +index 249d8fb..e97765d 100755 +--- a/dracut-functions.sh ++++ b/dracut-functions.sh +@@ -223,14 +223,20 @@ get_devpath_block() { + + # get a persistent path from a device + get_persistent_dev() { +- local i _tmp _dev ++ local i _tmp _dev _pol + + _dev=$(get_maj_min "$1") + [ -z "$_dev" ] && return + ++ if [[ -n "$persistent_policy" ]]; then ++ _pol="/dev/disk/${persistent_policy}/*" ++ else ++ _pol= ++ fi ++ + for i in \ ++ $_pol \ + /dev/mapper/* \ +- /dev/disk/${persistent_policy:-by-uuid}/* \ + /dev/disk/by-uuid/* \ + /dev/disk/by-label/* \ + /dev/disk/by-partuuid/* \ +-- +2.10.0 + diff --git a/0503-dracut.sh-create-the-initramfs-non-world-readable-al.patch b/0503-dracut.sh-create-the-initramfs-non-world-readable-al.patch new file mode 100644 index 0000000..430eb50 --- /dev/null +++ b/0503-dracut.sh-create-the-initramfs-non-world-readable-al.patch @@ -0,0 +1,30 @@ +From 0db98910a11c12a454eac4c8e86dc7a7bbc764a4 Mon Sep 17 00:00:00 2001 +From: Andreas Stieger +Date: Mon, 7 Nov 2016 10:37:22 +0100 +Subject: [PATCH] dracut.sh: create the initramfs non-world readable also if + early cpio is used + +Fixes: 5f2c30d9bcd614d546d5c55c6897e33f88b9ab90 +Previously fixed CVE-2012-4453: e1b48995c26c4f06d1a718539cb1bd5b0179af91 + +Signed-off-by: Andreas Stieger +--- + dracut.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dracut.sh b/dracut.sh +index 40ca08f..2d79bbc 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -1700,7 +1700,7 @@ if [[ $create_early_cpio = yes ]]; then + + # The microcode blob is _before_ the initramfs blob, not after + if ! ( +- cd "$early_cpio_dir/d" ++ umask 077; cd "$early_cpio_dir/d" + find . -print0 | sort -z \ + | cpio ${CPIO_REPRODUCIBLE:+--reproducible} --null $cpio_owner_root -H newc -o --quiet > "${DRACUT_TMPDIR}/initramfs.img" + ); then +-- +2.10.2 + diff --git a/0504-ibft-fix-boot-flag-check.patch b/0504-ibft-fix-boot-flag-check.patch new file mode 100644 index 0000000..0f2b7c9 --- /dev/null +++ b/0504-ibft-fix-boot-flag-check.patch @@ -0,0 +1,33 @@ +From 7eb60d945d6007a794530aba0ca103bef3853174 Mon Sep 17 00:00:00 2001 +From: Thomas Blume +Date: Wed, 14 Dec 2016 12:51:44 +0100 +Subject: [PATCH] ibft fix boot flag check + +--- + modules.d/40network/net-lib.sh | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh +index d17209a..749dc47 100755 +--- a/modules.d/40network/net-lib.sh ++++ b/modules.d/40network/net-lib.sh +@@ -270,10 +270,12 @@ ibft_to_cmdline() { + [ -e /tmp/net.${dev}.has_ibft_config ] && continue + + [ -e ${iface}/flags ] && flags=$(read a < ${iface}/flags; echo $a) +- # Skip invalid interfaces +- (( $flags & 1 )) || continue +- # Skip interfaces not used for booting +- (( $flags & 2 )) || continue ++ # Skip invalid/non-booting interfaces ++ # Per spec, Bits 0 and 1 are valid and bootable, ++ # respectively, but some firmware only sets Bit 1, ++ # so just accept either bit ++ (( $flags & 3 )) || continue ++ + [ -e ${iface}/dhcp ] && dhcp=$(read a < ${iface}/dhcp; echo $a) + [ -e ${iface}/origin ] && origin=$(read a < ${iface}/origin; echo $a) + [ -e ${iface}/ip-addr ] && ip=$(read a < ${iface}/ip-addr; echo $a) +-- +2.10.2 + diff --git a/0505-Allow-booting-from-degraded-MD-RAID-arrays.patch b/0505-Allow-booting-from-degraded-MD-RAID-arrays.patch new file mode 100644 index 0000000..e302c0a --- /dev/null +++ b/0505-Allow-booting-from-degraded-MD-RAID-arrays.patch @@ -0,0 +1,30 @@ +From a113e853f71050aa6f05982ecf16660603f98825 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Mon, 30 Jan 2017 11:10:40 +0100 +Subject: [PATCH] Allow booting from degraded MD RAID arrays + +bnc#1017695 +--- + modules.d/90mdraid/module-setup.sh | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/modules.d/90mdraid/module-setup.sh b/modules.d/90mdraid/module-setup.sh +index 13ef9fe..962b3a4 100755 +--- a/modules.d/90mdraid/module-setup.sh ++++ b/modules.d/90mdraid/module-setup.sh +@@ -119,6 +119,12 @@ install() { + if [ -e $systemdsystemunitdir/mdmon@.service ]; then + inst_simple $systemdsystemunitdir/mdmon@.service + fi ++ if [ -e $systemdsystemunitdir/mdadm-last-resort@.service ]; then ++ inst_simple $systemdsystemunitdir/mdadm-last-resort@.service ++ fi ++ if [ -e $systemdsystemunitdir/mdadm-last-resort@.timer ]; then ++ inst_simple $systemdsystemunitdir/mdadm-last-resort@.timer ++ fi + fi + inst_hook pre-shutdown 30 "$moddir/mdmon-pre-shutdown.sh" + } +-- +2.10.2 + diff --git a/0506-Boot-on-s390x-with-fips-1-on-the-kernel-commnad-line.patch b/0506-Boot-on-s390x-with-fips-1-on-the-kernel-commnad-line.patch new file mode 100644 index 0000000..076a6fc --- /dev/null +++ b/0506-Boot-on-s390x-with-fips-1-on-the-kernel-commnad-line.patch @@ -0,0 +1,50 @@ +From e9e5b0424648bc0d81e865d1fe54d10639a10182 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Thu, 2 Feb 2017 12:41:25 +0100 +Subject: [PATCH] Boot on s390x with fips=1 on the kernel commnad line + +On s390, the kernel image that is bootet from is called 'image'. + +(bnc#1021687) + +Original-Patch-By: Marcus Meissner +--- + modules.d/01fips/fips.sh | 12 +++++++++--- + 1 file changed, 9 insertions(+), 3 deletions(-) + +diff --git a/modules.d/01fips/fips.sh b/modules.d/01fips/fips.sh +index f33481a..055093a 100755 +--- a/modules.d/01fips/fips.sh ++++ b/modules.d/01fips/fips.sh +@@ -73,11 +73,17 @@ do_fips() + local _s + local _v + local _module ++ local _arch=$(uname -m) ++ local _vmname=vmlinuz ++ ++ if [ "$_arch" == "s390x" ]; then ++ _vmname=image ++ fi + + KERNEL=$(uname -r) + +- if ! [ -e "/boot/.vmlinuz-${KERNEL}.hmac" ]; then +- warn "/boot/.vmlinuz-${KERNEL}.hmac does not exist" ++ if ! [ -e "/boot/.${_vmname}-${KERNEL}.hmac" ]; then ++ warn "/boot/.${_vname}-${KERNEL}.hmac does not exist" + return 1 + fi + +@@ -125,7 +131,7 @@ do_fips() + elif [ -e "/run/initramfs/live/isolinux/vmlinuz0" ]; then + do_rhevh_check /run/initramfs/live/isolinux/vmlinuz0 || return 1 + else +- fipscheck "/boot/vmlinuz-${KERNEL}" || return 1 ++ fipscheck "/boot/${_vmname}-${KERNEL}" || return 1 + fi + + info "All initrd crypto checks done" +-- +2.10.2 + diff --git a/0507-Set-TaskMax-inifinite-for-the-emergency-shell.patch b/0507-Set-TaskMax-inifinite-for-the-emergency-shell.patch new file mode 100644 index 0000000..f614f7a --- /dev/null +++ b/0507-Set-TaskMax-inifinite-for-the-emergency-shell.patch @@ -0,0 +1,26 @@ +From efc65e27554cfb2278dd46eba0e6cba0b58b7e35 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Fri, 20 Jan 2017 10:57:40 +0100 +Subject: [PATCH] Set TaskMax=inifinite for the emergency shell + +Certain rescue/recovery operations, e.g. xfs_repair need +that liberty (bsc#1019938). +--- + modules.d/98dracut-systemd/dracut-emergency.service | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules.d/98dracut-systemd/dracut-emergency.service b/modules.d/98dracut-systemd/dracut-emergency.service +index a523671..620b565 100644 +--- a/modules.d/98dracut-systemd/dracut-emergency.service ++++ b/modules.d/98dracut-systemd/dracut-emergency.service +@@ -27,6 +27,7 @@ StandardOutput=inherit + StandardError=inherit + KillMode=process + IgnoreSIGPIPE=no ++TasksMax=infinity + + # Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash + # terminates cleanly. +-- +2.10.2 + diff --git a/0508-90multipath-start-before-local-fs-pre.target.patch b/0508-90multipath-start-before-local-fs-pre.target.patch new file mode 100644 index 0000000..e3c8461 --- /dev/null +++ b/0508-90multipath-start-before-local-fs-pre.target.patch @@ -0,0 +1,37 @@ +From 172a873a599bbea5546b64fe12802aa903a0738c Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Thu, 3 Nov 2016 20:37:01 +0100 +Subject: [PATCH] 90multipath: start before local-fs-pre.target + +local-fs-pre.target serves as a separator between the code for +detecting block devices and systemd's fsck/mount logic. This +patch ensures that multipathd is started before local-fs-pre.target +in the initrd. By adding a "Wants=" line for local-fs-pre.target, +it makes sure that this target is started at all. + +References: bsc#1006118 +Signed-off-by: Martin Wilck + +=================================================================== +--- + modules.d/90multipath/multipathd.service | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/modules.d/90multipath/multipathd.service b/modules.d/90multipath/multipathd.service +index ab42740..0554d95 100644 +--- a/modules.d/90multipath/multipathd.service ++++ b/modules.d/90multipath/multipathd.service +@@ -1,8 +1,9 @@ + [Unit] + Description=Device-Mapper Multipath Device Controller + Before=iscsi.service iscsid.service lvm2-activation-early.service +-Wants=systemd-udev-trigger.service systemd-udev-settle.service ++Wants=systemd-udev-trigger.service systemd-udev-settle.service local-fs-pre.target + After=systemd-udev-trigger.service systemd-udev-settle.service ++Before=local-fs-pre.target + DefaultDependencies=no + Conflicts=shutdown.target + ConditionKernelCommandLine=!nompath +-- +2.10.2 + diff --git a/0509-01fips-Remove-zlib-module-as-requirement.patch b/0509-01fips-Remove-zlib-module-as-requirement.patch new file mode 100644 index 0000000..1076be7 --- /dev/null +++ b/0509-01fips-Remove-zlib-module-as-requirement.patch @@ -0,0 +1,27 @@ +From 17eff2759ab2d5e3622864fb06a7657c7f95bfd3 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Wed, 1 Mar 2017 11:43:39 +0100 +Subject: [PATCH] 01fips: Remove zlib module as requirement + +zlib has been removed from the upstream kernel, affecting SLE12SP3. +This patch must not be backported to SLE12SP2 and earlier (bsc#1020063). +--- + modules.d/01fips/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/01fips/module-setup.sh b/modules.d/01fips/module-setup.sh +index 0bca7a1..e29af08 100755 +--- a/modules.d/01fips/module-setup.sh ++++ b/modules.d/01fips/module-setup.sh +@@ -17,7 +17,7 @@ installkernel() { + _fipsmodules+="ctr cts deflate drbg " + _fipsmodules+="ecb fcrypt gcm ghash_generic khazad md4 michael_mic rmd128 " + _fipsmodules+="rmd160 rmd256 rmd320 seed " +- _fipsmodules+="sha512_generic tcrypt tea wp512 xts zlib " ++ _fipsmodules+="sha512_generic tcrypt tea wp512 xts " + _fipsmodules+="aes_s390 des_s390 sha256_s390 ghash_s390 sha1_s390 sha512_s390 " + _fipsmodules+="gf128mul " + _fipsmodules+="cmac vmac xcbc salsa20_generic salsa20_x86_64 camellia_generic camellia_x86_64 pcbc tgr192 anubis " +-- +2.10.2 + diff --git a/0510-01fips-Some-modules-use-separators-other-than.patch b/0510-01fips-Some-modules-use-separators-other-than.patch new file mode 100644 index 0000000..bfc397a --- /dev/null +++ b/0510-01fips-Some-modules-use-separators-other-than.patch @@ -0,0 +1,39 @@ +From e8804fc3d2052000d66661ced4a03103e0176e63 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Tue, 7 Mar 2017 11:51:17 +0100 +Subject: [PATCH] 01fips: Some modules use separators other than "-" + +We need to account for that in our exception list +of modules that are fine to fail. This only happened +on non-Intel machines, because the intel modules +use "_" as separator. + +Original-Patch-By: Marcus Meissner +Reference: bsc#1021687 +--- + modules.d/01fips/fips.sh | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/modules.d/01fips/fips.sh b/modules.d/01fips/fips.sh +index 055093a..30f53b4 100755 +--- a/modules.d/01fips/fips.sh ++++ b/modules.d/01fips/fips.sh +@@ -105,11 +105,11 @@ do_fips() + # If we find some hardware specific modules and cannot load them + # it is not a problem, proceed. + if [ "$_found" = "0" ]; then +- if [ "$_module" != "${_module%-intel}" \ +- -o "$_module" != "${_module%-ssse3}" \ +- -o "$_module" != "${_module%-x86_64}" \ ++ if [ "$_module" != "${_module%intel}" \ ++ -o "$_module" != "${_module%ssse3}" \ ++ -o "$_module" != "${_module%x86_64}" \ + -o "$_module" != "${_module%z90}" \ +- -o "$_module" != "${_module%s390}" \ ++ -o "$_module" != "${_module%s390}" \ + ]; then + _found=1 + fi +-- +2.10.2 + diff --git a/0511-01fips-ensure-fips-initialization-succeeds-on-s390-x.patch b/0511-01fips-ensure-fips-initialization-succeeds-on-s390-x.patch new file mode 100644 index 0000000..919571d --- /dev/null +++ b/0511-01fips-ensure-fips-initialization-succeeds-on-s390-x.patch @@ -0,0 +1,50 @@ +From d31f6dc51b26ac4110b2e5357a46f9b74ebd80e2 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Wed, 15 Mar 2017 11:59:28 +0100 +Subject: [PATCH] 01fips: ensure fips initialization succeeds on s390(x) + +More modules are x86_64 only but are not matchable +by the generic postfix checks. Others are helper modules +that are not strictly needed on all platforms. Ensure +we pass FIPS init without them. + +Finally, cbc is not always compiled into the kernel -- try +adding as a module. + +Relates-to: e8804fc3d2052000d66661ced4a03103e0176e63 +Reference: bsc#1021687 +--- + modules.d/01fips/fips.sh | 3 +++ + modules.d/01fips/module-setup.sh | 2 +- + 2 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/modules.d/01fips/fips.sh b/modules.d/01fips/fips.sh +index 30f53b4..a005b0f 100755 +--- a/modules.d/01fips/fips.sh ++++ b/modules.d/01fips/fips.sh +@@ -110,6 +110,9 @@ do_fips() + -o "$_module" != "${_module%x86_64}" \ + -o "$_module" != "${_module%z90}" \ + -o "$_module" != "${_module%s390}" \ ++ -o "$_module" == "twofish_x86_64_3way" \ ++ -o "$_module" == "ablk_helper" \ ++ -o "$_module" == "glue_helper" \ + ]; then + _found=1 + fi +diff --git a/modules.d/01fips/module-setup.sh b/modules.d/01fips/module-setup.sh +index e29af08..beeb2f6 100755 +--- a/modules.d/01fips/module-setup.sh ++++ b/modules.d/01fips/module-setup.sh +@@ -23,7 +23,7 @@ installkernel() { + _fipsmodules+="cmac vmac xcbc salsa20_generic salsa20_x86_64 camellia_generic camellia_x86_64 pcbc tgr192 anubis " + _fipsmodules+="cast6_generic cast5_generic cast_common sha512_ssse3 serpent_sse2_x86_64 serpent_generic twofish_generic " + _fipsmodules+="ablk_helper cryptd twofish_x86_64_3way lrw glue_helper twofish_x86_64 twofish_common blowfish_generic " +- _fipsmodules+="blowfish_x86_64 blowfish_common des_generic " ++ _fipsmodules+="blowfish_x86_64 blowfish_common des_generic cbc " + + mkdir -m 0755 -p "${initdir}/etc/modprobe.d" + +-- +2.10.2 + diff --git a/0512-Make-binutils-optional-when-elfutils-are-available.patch b/0512-Make-binutils-optional-when-elfutils-are-available.patch new file mode 100644 index 0000000..18ac7d2 --- /dev/null +++ b/0512-Make-binutils-optional-when-elfutils-are-available.patch @@ -0,0 +1,52 @@ +From a7970811473e4d351e82de8a523ecf46572c3e8c Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Mon, 3 Apr 2017 15:23:37 +0200 +Subject: [PATCH] Make binutils optional when elfutils are available + +This is intended for minimum host OSes where 36 MB used by binutils +are deemed too expensive. We only need "strip", which exists as eu-strip +in elfutils, which in turn is < 1 MB in size. + +Note that the tests (TEST-04-FULL-SYSTEMD/test.sh) still depend on +strip from binutils. It could use sstrip in the future. +--- + dracut.sh | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/dracut.sh b/dracut.sh +index d25da8e3..f4794d1d 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -1624,7 +1624,11 @@ fi + + # strip binaries + if [[ $do_strip = yes ]] ; then +- for p in strip xargs find; do ++ # Prefer strip from elfutils for package size ++ declare strip_cmd=$(command -v eu-strip) ++ test -z "$strip_cmd" && strip_cmd="strip" ++ ++ for p in $strip_cmd xargs find; do + if ! type -P $p >/dev/null; then + dinfo "Could not find '$p'. Not stripping the initramfs." + do_strip=no +@@ -1636,14 +1640,14 @@ if [[ $do_strip = yes ]] && ! [[ $DRACUT_FIPS_MODE ]]; then + dinfo "*** Stripping files ***" + find "$initdir" -type f \ + -executable -not -path '*/lib/modules/*.ko' -print0 \ +- | xargs -r -0 strip -g 2>/dev/null ++ | xargs -r -0 $strip_cmd -g 2>/dev/null + + # strip kernel modules, but do not touch signed modules + find "$initdir" -type f -path '*/lib/modules/*.ko' -print0 \ + | while read -r -d $'\0' f || [ -n "$f" ]; do + SIG=$(tail -c 28 "$f" | tr -d '\000') + [[ $SIG == '~Module signature appended~' ]] || { printf "%s\000" "$f"; } +- done | xargs -r -0 strip -g ++ done | xargs -r -0 $strip_cmd -g + + dinfo "*** Stripping files done ***" + fi +-- +2.12.0 + diff --git a/0513-Fix-regression-caused-by-6f9bf2b8ac436259bdccb110545.patch b/0513-Fix-regression-caused-by-6f9bf2b8ac436259bdccb110545.patch new file mode 100644 index 0000000..9f10aee --- /dev/null +++ b/0513-Fix-regression-caused-by-6f9bf2b8ac436259bdccb110545.patch @@ -0,0 +1,56 @@ +From 31445aa3a415f9586f3bd6f6b14f0ae668d30ff9 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Thu, 9 Mar 2017 11:45:47 +0100 +Subject: [PATCH 1/2] Fix regression caused by + 6f9bf2b8ac436259bdccb11054562aedaa78c496 + +This was trying to fix bsc#998860, but introduced a regression: + +62-md-dracut-uuid.rules was not generated in /etc/udev/rules.d and +therefore not processed. + +Also, force reassembly of raid arrays given at the command line +and ensure IMSM_NO_PLATFORM is set correctly. + +Reference: bsc#1028542 + +Signed-Off-By: Daniel Molkentin +Signed-Off-By: Thomas Blume +--- + modules.d/90mdraid/parse-md.sh | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/modules.d/90mdraid/parse-md.sh b/modules.d/90mdraid/parse-md.sh +index c187a916..91e52f2d 100755 +--- a/modules.d/90mdraid/parse-md.sh ++++ b/modules.d/90mdraid/parse-md.sh +@@ -1,7 +1,7 @@ + #!/bin/sh + + MD_UUID=$(getargs rd.md.uuid -d rd_MD_UUID=) +-MD_RULES=/etc/udev/62-md-dracut-uuid.rules ++MD_RULES=/etc/udev/rules.d/62-md-dracut-uuid.rules + + if ( ! [ -n "$MD_UUID" ] && ! getargbool 0 rd.auto ) || ! getargbool 1 rd.md -d -n rd_NO_MD; then + info "rd.md=0: removing MD RAID activation" +@@ -13,6 +13,8 @@ else + printf 'SUBSYSTEM!="block", GOTO="md_uuid_end"\n' >> $MD_RULES + printf 'ENV{ID_FS_TYPE}!="ddf_raid_member", ENV{ID_FS_TYPE}!="isw_raid_member", ENV{ID_FS_TYPE}!="linux_raid_member", GOTO="md_uuid_end"\n' >> $MD_RULES + ++ #check for array components ++ printf 'IMPORT{program}="/sbin/mdadm --examine --export $tempnode"\n' >> $MD_RULES + for uuid in $MD_UUID; do + printf 'ENV{MD_UUID}=="%s", GOTO="md_uuid_ok"\n' $uuid >> $MD_RULES + printf 'ENV{ID_FS_UUID}=="%s", GOTO="md_uuid_ok"\n' $uuid >> $MD_RULES +@@ -20,7 +22,7 @@ else + printf 'ENV{ID_FS_TYPE}="unknown"\n' >> $MD_RULES + printf 'GOTO="md_uuid_end"\n' >> $MD_RULES + printf 'LABEL="md_uuid_ok"\n' >> $MD_RULES +- printf 'ENV{IMSM_NO_PLATFORM}="1"' >> $MD_RULES ++ printf 'ENV{IMSM_NO_PLATFORM}="1"\n' >> $MD_RULES + printf 'LABEL="md_uuid_end"\n' >> $MD_RULES + fi + fi +-- +2.12.0 + diff --git a/0514-man-make-the-k-option-clear-using-mkinitrd.patch b/0514-man-make-the-k-option-clear-using-mkinitrd.patch new file mode 100644 index 0000000..3694643 --- /dev/null +++ b/0514-man-make-the-k-option-clear-using-mkinitrd.patch @@ -0,0 +1,33 @@ +From fff87a6a53c322448ddd42a47c839570091cb824 Mon Sep 17 00:00:00 2001 +From: Lidong Zhong +Date: Fri, 2 Dec 2016 14:32:09 +0800 +Subject: [PATCH 2/2] man: make the -k option clear using mkinitrd + +For example under x86, someone maybe missunderstand that the vmlinuz +is the link /boot/vmlinuz points to a specific kernel image and use +the following command directly. + + mkinitrd -k vmlinuz +--- + mkinitrd-suse.8.asc | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/mkinitrd-suse.8.asc b/mkinitrd-suse.8.asc +index cdb8e3aa..91ec4695 100644 +--- a/mkinitrd-suse.8.asc ++++ b/mkinitrd-suse.8.asc +@@ -29,8 +29,9 @@ OPTIONS + + **-k** __:: + List of kernel images for which initrd files are created (relative +- to _boot_dir_), defaults to _vmlinux_ on ppc/ppc64, _image_ on s390/s390x +- and _vmlinuz_ for everything else. ++ to _boot_dir_), Image name should begin with the following string, ++ defaults to _vmlinux_ on ppc/ppc64, _image_ on s390/s390x and _vmlinuz_ ++ for everything else. + + **-i** __:: + List of file names (relative to _boot_dir_) for the initrd; positions +-- +2.12.0 + diff --git a/0515-90kernel-modules-also-add-block-device-driver-revers.patch b/0515-90kernel-modules-also-add-block-device-driver-revers.patch new file mode 100644 index 0000000..59d3ed1 --- /dev/null +++ b/0515-90kernel-modules-also-add-block-device-driver-revers.patch @@ -0,0 +1,67 @@ +From a929c6f1b19cc945c119802feff2d8e111954f5c Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Thu, 20 Apr 2017 21:54:38 +0200 +Subject: [PATCH] 90kernel-modules: also add block device driver reverse + dependencies + +The code finds relevant modules by symbol. Some drivers, such as +the hisi_sas has two slightly different implementations with +a common backend which contain the relevant symbols. However, +we also need to include the modules that depend on these +implementations. + +Ex: hisi_sas_v{1,2}_hw -> hisi_sas_main + +We use a simple reverse lookup for all modules via modules.dep to +include direct reverse dependencies. + +Reference: bnc#1034597 +--- + modules.d/90kernel-modules/module-setup.sh | 24 +++++++++++++++++++++++- + 1 file changed, 23 insertions(+), 1 deletion(-) + +diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh +index 67d0e01e..bc00991d 100755 +--- a/modules.d/90kernel-modules/module-setup.sh ++++ b/modules.d/90kernel-modules/module-setup.sh +@@ -3,6 +3,28 @@ + # called by dracut + installkernel() { + if [[ -z $drivers ]]; then ++ # modules with symbols might have abstractions that depend on them, so let's add those ++ add_rev_deps() { ++ local _module ++ local _line ++ [[ -f "$srcmods/modules.dep" ]] || return 0 ++ while read _module; do ++ local _mod ++ local _deps ++ _module=${_module##$srcmods/} ++ printf "%s\n" "$_module" ++ egrep ".*:.*$_module.*" $srcmods/modules.dep | ( ++ local _OLDIFS=$IFS ++ IFS=: ++ while read _mod _deps; do ++ printf "%s\n" "$srcmods/$_mod" ++ done ++ IFS=$_OLDIFS ++ ) ++ done | sort -u ++ return 0 ++ } ++ + block_module_filter() { + local _blockfuncs='ahci_platform_get_resources|ata_scsi_ioctl|scsi_add_host|blk_cleanup_queue|register_mtd_blktrans|scsi_esp_register|register_virtio_device|usb_stor_disconnect|mmc_add_host|sdhci_add_host' + # subfunctions inherit following FDs +@@ -65,7 +87,7 @@ installkernel() { + instmods virtio virtio_blk virtio_ring virtio_pci virtio_scsi \ + "=drivers/pcmcia" =ide "=drivers/usb/storage" + +- find_kernel_modules | block_module_filter | instmods ++ find_kernel_modules | block_module_filter | add_rev_deps | instmods + + # if not on hostonly mode, install all known filesystems, + # if the required list is not set via the filesystems variable +-- +2.12.0 + diff --git a/0516-mkinitrd-suse.sh-Fix-prefix-calculation.patch b/0516-mkinitrd-suse.sh-Fix-prefix-calculation.patch new file mode 100644 index 0000000..279f942 --- /dev/null +++ b/0516-mkinitrd-suse.sh-Fix-prefix-calculation.patch @@ -0,0 +1,30 @@ +From 7cf2c21798b537a5553ecc23df5ce8cfda631e9c Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Tue, 25 Apr 2017 15:25:20 +0200 +Subject: [PATCH] mkinitrd-suse.sh: Fix prefix calculation + +The previous algorithm was incorrect and would return +incorrect results e.g. for a /20 mask. Also gets rid +of an undocumented depencency on bc(1). + +Reference: bsc#1035743 +--- + mkinitrd-suse.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/mkinitrd-suse.sh b/mkinitrd-suse.sh +index bc49d731..d9de81b9 100755 +--- a/mkinitrd-suse.sh ++++ b/mkinitrd-suse.sh +@@ -104,7 +104,7 @@ calc_netmask() { + local prefix=$1 + + [ -z "$prefix" ] && return +- mask=$(echo "(2 ^ 32) - (2 ^ $prefix)" | bc -l) ++ mask=$(( 0xffffffff << (32 - $prefix) )) + byte1=$(( mask >> 24 )) + byte2=$(( mask >> 16 )) + byte3=$(( mask >> 8 )) +-- +2.12.0 + diff --git a/0517-95fcoe-fixup-fcoe-genrules.sh-for-VN2VN-mode.patch b/0517-95fcoe-fixup-fcoe-genrules.sh-for-VN2VN-mode.patch new file mode 100644 index 0000000..3732665 --- /dev/null +++ b/0517-95fcoe-fixup-fcoe-genrules.sh-for-VN2VN-mode.patch @@ -0,0 +1,33 @@ +From c3c16d6b7c74cbd00d6e925f83c983f6e50cf7cd Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 26 Apr 2017 16:38:11 +0200 +Subject: [PATCH] 95fcoe: fixup fcoe-genrules.sh for VN2VN mode + +The 'mode' argument was never referenced in the printf format, causing +invalid rules to be written. + +References: bsc#1036323 + +Signed-off-by: Hannes Reinecke +--- + modules.d/95fcoe/fcoe-genrules.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/modules.d/95fcoe/fcoe-genrules.sh b/modules.d/95fcoe/fcoe-genrules.sh +index af15a584..5b16cb0d 100755 +--- a/modules.d/95fcoe/fcoe-genrules.sh ++++ b/modules.d/95fcoe/fcoe-genrules.sh +@@ -7,8 +7,8 @@ + # Write udev rules + { + if [ -n "$fcoe_mac" ] ; then +- printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", RUN+="/sbin/initqueue --onetime --unique --name fcoe-up-$env{INTERFACE} /sbin/fcoe-up $env{INTERFACE} %s"\n' "$fcoe_mac" "$fcoe_dcb" "$fcoe_mode" ++ printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", RUN+="/sbin/initqueue --onetime --unique --name fcoe-up-$env{INTERFACE} /sbin/fcoe-up $env{INTERFACE} %s %s"\n' "$fcoe_mac" "$fcoe_dcb" "$fcoe_mode" + else +- printf 'ACTION=="add", SUBSYSTEM=="net", NAME=="%s", RUN+="/sbin/initqueue --onetime --unique --name fcoe-up-$env{INTERFACE} /sbin/fcoe-up $env{INTERFACE} %s"\n' "$fcoe_interface" "$fcoe_dcb" "$fcoe_mode" ++ printf 'ACTION=="add", SUBSYSTEM=="net", NAME=="%s", RUN+="/sbin/initqueue --onetime --unique --name fcoe-up-$env{INTERFACE} /sbin/fcoe-up $env{INTERFACE} %s %s"\n' "$fcoe_interface" "$fcoe_dcb" "$fcoe_mode" + fi + } >> /etc/udev/rules.d/92-fcoe.rules +-- +2.12.0 + diff --git a/0518-90kernel-modules-Fix-backlight-on-Cherrytrail-device.patch b/0518-90kernel-modules-Fix-backlight-on-Cherrytrail-device.patch new file mode 100644 index 0000000..746dfe0 --- /dev/null +++ b/0518-90kernel-modules-Fix-backlight-on-Cherrytrail-device.patch @@ -0,0 +1,30 @@ +From 5e23b376c39c8fcea8a02115d5c233dbb476c13a Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Wed, 26 Apr 2017 18:07:17 +0200 +Subject: [PATCH] 90kernel-modules: Fix backlight on Cherrytrail devices + +Next to the cherrytrail module, more modules need to be part of +initrd to make e.g. the backlight control work properly. + +Reference: boo#1034785 +Original-Patch-By: Takashi Iwai +--- + modules.d/90kernel-modules/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh +index bc00991d..566edd77 100755 +--- a/modules.d/90kernel-modules/module-setup.sh ++++ b/modules.d/90kernel-modules/module-setup.sh +@@ -62,7 +62,7 @@ installkernel() { + ohci-hcd ohci-pci \ + uhci-hcd \ + xhci-hcd xhci-pci xhci-plat-hcd \ +- pinctrl-cherryview ++ pinctrl-cherryview pwm-lpss pwm-lpss-platform + + instmods \ + "=drivers/hid" \ +-- +2.12.0 + diff --git a/0519-90kernel-modules-Ensure-phy-drivers-are-loaded-in-in.patch b/0519-90kernel-modules-Ensure-phy-drivers-are-loaded-in-in.patch new file mode 100644 index 0000000..60e90d0 --- /dev/null +++ b/0519-90kernel-modules-Ensure-phy-drivers-are-loaded-in-in.patch @@ -0,0 +1,27 @@ +From d1680a249acfde2b889b25c231a04429a6e17c2e Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Wed, 26 Apr 2017 18:42:39 +0200 +Subject: [PATCH] 90kernel-modules: Ensure phy drivers are loaded in initrd + +Reference: bnc#1034893 +--- + modules.d/90kernel-modules/module-setup.sh | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh +index 566edd77..77b6bcae 100755 +--- a/modules.d/90kernel-modules/module-setup.sh ++++ b/modules.d/90kernel-modules/module-setup.sh +@@ -64,6 +64,9 @@ installkernel() { + xhci-hcd xhci-pci xhci-plat-hcd \ + pinctrl-cherryview pwm-lpss pwm-lpss-platform + ++ # ensure early availability for e.g. emmc phys ++ instmods "=drivers/phy" ++ + instmods \ + "=drivers/hid" \ + "=drivers/input/serio" \ +-- +2.12.0 + diff --git a/0520-Ignore-module-resolution-errors.patch b/0520-Ignore-module-resolution-errors.patch new file mode 100644 index 0000000..1eaca04 --- /dev/null +++ b/0520-Ignore-module-resolution-errors.patch @@ -0,0 +1,25 @@ +From 7ede212132383c7f4a6624f3d1e999f1a4a70bb4 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Mon, 8 May 2017 17:32:11 +0200 +Subject: [PATCH] Ignore module resolution errors + +Can occur with version-unique modules names for kgraft. + +Reference: bsc#1037120 + +diff --git a/dracut.sh b/dracut.sh +index f4794d1d..69833cab 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -1237,7 +1237,7 @@ if [[ $hostonly ]]; then + host_modules["$alias"]=1 + done + # mod might be an alias in the target kernel, find the real module +- mod_filename=$(modinfo -k "$kernel" "$mod" -F filename) ++ mod_filename=$(modinfo -k "$kernel" "$mod" -F filename 2>/dev/null) + [ $? -ne 0 ] && continue + host_modules["$(basename -s .ko "$mod_filename")"]=1 + done +-- +2.12.0 + diff --git a/0521-Ensure-udev-persistent-storage-compat-rules-get-crea.patch b/0521-Ensure-udev-persistent-storage-compat-rules-get-crea.patch new file mode 100644 index 0000000..5a18c7d --- /dev/null +++ b/0521-Ensure-udev-persistent-storage-compat-rules-get-crea.patch @@ -0,0 +1,29 @@ +From 3f9e2420fbb180672a566cbcab6e9dfdaa914c0e Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Thu, 1 Jun 2017 16:59:55 +0200 +Subject: [PATCH] Ensure udev persistent storage compat rules get created and + installed + +Reference: bsc#1040153 +--- + modules.d/95udev-rules/module-setup.sh | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/modules.d/95udev-rules/module-setup.sh b/modules.d/95udev-rules/module-setup.sh +index 6a0625aa..5e3f444d 100755 +--- a/modules.d/95udev-rules/module-setup.sh ++++ b/modules.d/95udev-rules/module-setup.sh +@@ -56,6 +56,10 @@ install() { + # eudev rules + inst_rules 80-drivers-modprobe.rules + ++ # bsc#1040153 ++ inst_rules 61-persistent-storage-compat.rules ++ inst_multiple -o ${udevdir}/compat-symlink-generation ++ + if dracut_module_included "systemd"; then + inst_multiple -o ${systemdutildir}/network/*.link + [[ $hostonly ]] && inst_multiple -H -o /etc/systemd/network/*.link +-- +2.12.3 + diff --git a/0522-Fix-typo-from-commit-3f1cdb520.patch b/0522-Fix-typo-from-commit-3f1cdb520.patch new file mode 100644 index 0000000..1a6f908 --- /dev/null +++ b/0522-Fix-typo-from-commit-3f1cdb520.patch @@ -0,0 +1,26 @@ +From 4ed5df996e5b1ac86ad855152c3e54cdf72294ff Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Mon, 29 May 2017 14:27:16 +0200 +Subject: [PATCH 1/2] Fix typo from commit 3f1cdb520 + +Reference: bsc#1033238 +--- + modules.d/01fips/fips.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/01fips/fips.sh b/modules.d/01fips/fips.sh +index a005b0f0..ddf03994 100755 +--- a/modules.d/01fips/fips.sh ++++ b/modules.d/01fips/fips.sh +@@ -83,7 +83,7 @@ do_fips() + KERNEL=$(uname -r) + + if ! [ -e "/boot/.${_vmname}-${KERNEL}.hmac" ]; then +- warn "/boot/.${_vname}-${KERNEL}.hmac does not exist" ++ warn "/boot/.${_vmname}-${KERNEL}.hmac does not exist" + return 1 + fi + +-- +2.12.3 + diff --git a/0523-98dracut-systemd-Fix-module-force-loading-with-syste.patch b/0523-98dracut-systemd-Fix-module-force-loading-with-syste.patch new file mode 100644 index 0000000..440d21c --- /dev/null +++ b/0523-98dracut-systemd-Fix-module-force-loading-with-syste.patch @@ -0,0 +1,30 @@ +From cf7069480ebad261ca76e1e074f0fddf1c38497b Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Fri, 16 Jun 2017 16:32:56 +0200 +Subject: [PATCH 2/2] 98dracut-systemd: Fix module force loading with systemd + +This used to work only when specified via the command line +or if systemd was not being used. However, the exisistence of +20_force_driver.conf also requires dracut-pre-udev.service +to be run. + +Reference: bsc#986216 +--- + modules.d/98dracut-systemd/dracut-pre-udev.service | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules.d/98dracut-systemd/dracut-pre-udev.service b/modules.d/98dracut-systemd/dracut-pre-udev.service +index 73740bef..43408f3e 100644 +--- a/modules.d/98dracut-systemd/dracut-pre-udev.service ++++ b/modules.d/98dracut-systemd/dracut-pre-udev.service +@@ -15,6 +15,7 @@ Before=systemd-udevd.service dracut-pre-trigger.service + After=dracut-cmdline.service + Wants=dracut-cmdline.service + ConditionPathExists=/usr/lib/initrd-release ++ConditionPathExists=|/etc/cmdline.d/20-force_drivers.conf + ConditionDirectoryNotEmpty=|/lib/dracut/hooks/pre-udev + ConditionKernelCommandLine=|rd.break=pre-udev + ConditionKernelCommandLine=|rd.driver.blacklist +-- +2.12.3 + diff --git a/0524-Suppress-nonsensical-error-message-bsc-1032029.patch b/0524-Suppress-nonsensical-error-message-bsc-1032029.patch new file mode 100644 index 0000000..373e50a --- /dev/null +++ b/0524-Suppress-nonsensical-error-message-bsc-1032029.patch @@ -0,0 +1,24 @@ +From a651341debaf284101cb32c27373ed9a0dec7107 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Mon, 19 Jun 2017 13:42:43 +0200 +Subject: [PATCH] Suppress nonsensical error message (bsc#1032029) + +--- + dracut.sh | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/dracut.sh b/dracut.sh +index 69833cab..1016d5ae 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -788,6 +788,7 @@ declare -A suse_mod_deps + while read -r line; do + _suse_mod="${line##*SUSE INITRD: }" + _suse_mod="${_suse_mod%% REQUIRES*}" ++ test -z $_suse_mod && continue + suse_mod_deps["$_suse_mod"]="${suse_mod_deps["$_suse_mod"]} ${line##*REQUIRES }" + done <<< "$(grep -h "^# SUSE INITRD: " /etc/modprobe.d/[0-9][0-9]*.conf)" + +-- +2.12.3 + diff --git a/0525-backport-bail-out-if-module-directory-does-not-exist.patch b/0525-backport-bail-out-if-module-directory-does-not-exist.patch new file mode 100644 index 0000000..8733795 --- /dev/null +++ b/0525-backport-bail-out-if-module-directory-does-not-exist.patch @@ -0,0 +1,49 @@ +From cb1c81fc7f6bc72a72de1f87847924572aa39b54 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Thu, 29 Jun 2017 17:18:37 +0200 +Subject: [PATCH] backport: bail out if module directory does not exist + +this basically reverts commit +05214a0bedc084a41c35a128609745ad04a0c6cf + +if people want to build the initramfs without kernel modules, +then --no-kernel should be specified + +Upstream-Commit: 106255afd46ea2be1d035aca0c5695186a3f2c41 +--- + dracut.sh | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/dracut.sh b/dracut.sh +index 1016d5ae..492ecbf7 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -632,12 +632,6 @@ if ! [[ $kernel ]]; then + kernel=$(uname -r) + fi + +-if [[ $kernel ]]; then +- if ! [[ -d /lib/modules/$kernel ]] && [[ $no_kernel != yes ]]; then +- printf -- "Kernel version $kernel has no module directory /lib/modules/$kernel\n" >&2 +- fi +-fi +- + if ! [[ $outfile ]]; then + [[ -f /etc/machine-id ]] && read MACHINE_ID < /etc/machine-id + +@@ -892,6 +886,12 @@ else + exit 1 + fi + ++if [[ $no_kernel != yes ]] && ! [[ -d $srcmods ]]; then ++ printf "%s\n" "dracut: Cannot find module directory $srcmods" >&2 ++ printf "%s\n" "dracut: and --no-kernel was not specified" >&2 ++ exit 1 ++fi ++ + if ! [[ $print_cmdline ]]; then + inst /bin/sh + if ! $DRACUT_INSTALL ${initdir:+-D "$initdir"} -R "$initdir/bin/sh" &>/dev/null; then +-- +2.12.3 + diff --git a/0526-iscsiroot-call-handle_firmware-only-for-non-iface-in.patch b/0526-iscsiroot-call-handle_firmware-only-for-non-iface-in.patch new file mode 100644 index 0000000..6da6a46 --- /dev/null +++ b/0526-iscsiroot-call-handle_firmware-only-for-non-iface-in.patch @@ -0,0 +1,36 @@ +From d9e0e5682daeda83e5b1096d2fe570f2d38e65a5 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Wed, 12 Jul 2017 11:46:50 +0200 +Subject: [PATCH] iscsiroot: call handle_firmware only for non-iface + invocations (bsc#1032284) + +This partially reverts the "setup bnx2i offload connections properly" +patch to the original version from bsc#997598. + +Patch-by: Martin Wilck +--- + modules.d/95iscsi/iscsiroot.sh | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh +index 6ad279f2..3a2463f5 100755 +--- a/modules.d/95iscsi/iscsiroot.sh ++++ b/modules.d/95iscsi/iscsiroot.sh +@@ -264,9 +264,11 @@ if [ "$netif" = "timeout" ] && all_ifaces_setup; then + fi + + if getargbool 0 rd.iscsi.firmware -d -y iscsi_firmware ; then +- [ -f /tmp/session-retry ] || echo 1 > /tmp/session-retry +- handle_firmware +- ret=$? ++ if [ "$netif" = "timeout" ] || [ "$netif" = "online" ] || [ "$netif" = "dummy" ]; then ++ [ -f /tmp/session-retry ] || echo 1 > /tmp/session-retry ++ handle_firmware ++ ret=$? ++ fi + fi + + if ! [ "$netif" = "online" ]; then +-- +2.12.3 + diff --git a/0527-switch-fips-checking-to-use-the-libkcapi-based-fipsc.patch b/0527-switch-fips-checking-to-use-the-libkcapi-based-fipsc.patch new file mode 100644 index 0000000..4947c7c --- /dev/null +++ b/0527-switch-fips-checking-to-use-the-libkcapi-based-fipsc.patch @@ -0,0 +1,91 @@ +From 3a1abe58f68fbdee31f7370314432ff903954daa Mon Sep 17 00:00:00 2001 +From: Marcus Meissner +Date: Thu, 13 Jul 2017 16:56:14 +0200 +Subject: [PATCH] switch fips checking to use the libkcapi based fipscheck + toolset. + +--- + modules.d/01fips/fips.sh | 19 ++++++++++++++++--- + modules.d/01fips/module-setup.sh | 10 ++++++++++ + suse/dracut.spec | 1 + + 3 files changed, 27 insertions(+), 3 deletions(-) + +diff --git a/modules.d/01fips/fips.sh b/modules.d/01fips/fips.sh +index ddf03994..081dba95 100755 +--- a/modules.d/01fips/fips.sh ++++ b/modules.d/01fips/fips.sh +@@ -57,9 +57,15 @@ do_rhevh_check() + { + KERNEL=$(uname -r) + kpath=${1} +- ++ FIPSCHECK=/usr/lib64/libkcapi/fipscheck ++ if [ ! -f $FIPSCHECK ]; then ++ FIPSCHECK=/usr/lib/libkcapi/fipscheck ++ fi ++ if [ ! -f $FIPSCHECK ]; then ++ FIPSCHECK=/usr/bin/fipscheck ++ fi + # If we're on RHEV-H, the kernel is in /run/initramfs/live/vmlinuz0 +- if fipscheck $NEWROOT/boot/vmlinuz-${KERNEL} ; then ++ if $FIPSCHECK $NEWROOT/boot/vmlinuz-${KERNEL} ; then + warn "HMAC sum mismatch" + return 1 + fi +@@ -81,6 +87,13 @@ do_fips() + fi + + KERNEL=$(uname -r) ++ FIPSCHECK=/usr/lib64/libkcapi/fipscheck ++ if [ ! -f $FIPSCHECK ]; then ++ FIPSCHECK=/usr/lib/libkcapi/fipscheck ++ fi ++ if [ ! -f $FIPSCHECK ]; then ++ FIPSCHECK=/usr/bin/fipscheck ++ fi + + if ! [ -e "/boot/.${_vmname}-${KERNEL}.hmac" ]; then + warn "/boot/.${_vmname}-${KERNEL}.hmac does not exist" +@@ -134,7 +147,7 @@ do_fips() + elif [ -e "/run/initramfs/live/isolinux/vmlinuz0" ]; then + do_rhevh_check /run/initramfs/live/isolinux/vmlinuz0 || return 1 + else +- fipscheck "/boot/${_vmname}-${KERNEL}" || return 1 ++ $FIPSCHECK "/boot/${_vmname}-${KERNEL}" || return 1 + fi + + info "All initrd crypto checks done" +diff --git a/modules.d/01fips/module-setup.sh b/modules.d/01fips/module-setup.sh +index beeb2f6d..9e5eca4f 100755 +--- a/modules.d/01fips/module-setup.sh ++++ b/modules.d/01fips/module-setup.sh +@@ -24,6 +24,7 @@ installkernel() { + _fipsmodules+="cast6_generic cast5_generic cast_common sha512_ssse3 serpent_sse2_x86_64 serpent_generic twofish_generic " + _fipsmodules+="ablk_helper cryptd twofish_x86_64_3way lrw glue_helper twofish_x86_64 twofish_common blowfish_generic " + _fipsmodules+="blowfish_x86_64 blowfish_common des_generic cbc " ++ _fipsmodules+="algif_hash af_alg crypto_user " + + mkdir -m 0755 -p "${initdir}/etc/modprobe.d" + +@@ -54,9 +55,18 @@ install() { + .libgcrypt.so.20.hmac \ + libfreeblpriv3.so libfreeblpriv3.chk + ++ if [ -f /usr/lib64/libkcapi/.fipscheck.hmac ]; then ++ inst_simple /usr/lib64/libkcapi/.fipscheck.hmac ++ inst_simple /usr/lib64/libkcapi/fipscheck ++ else ++ inst_simple /usr/lib/libkcapi/.fipscheck.hmac ++ inst_simple /usr/lib/libkcapi/fipscheck ++ fi ++ + # we do not use prelink at SUSE + #inst_multiple -o prelink + + inst_simple /etc/system-fips ++ + } + +-- +2.12.3 + diff --git a/0528-Ensure-dracut.sh-responds-properly-to-hostonly_cmdli.patch b/0528-Ensure-dracut.sh-responds-properly-to-hostonly_cmdli.patch new file mode 100644 index 0000000..55afc17 --- /dev/null +++ b/0528-Ensure-dracut.sh-responds-properly-to-hostonly_cmdli.patch @@ -0,0 +1,40 @@ +From 469d28c50718de7761c91db07ccc7f40821f2d8b Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Mon, 17 Jul 2017 16:51:39 +0200 +Subject: [PATCH] Ensure dracut.sh responds properly to hostonly_cmdline="no" + +Reference: bsc#1048748 +--- + dracut.conf.5.asc | 2 +- + dracut.sh | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/dracut.conf.5.asc b/dracut.conf.5.asc +index 0460d4ff..3497f349 100644 +--- a/dracut.conf.5.asc ++++ b/dracut.conf.5.asc +@@ -97,7 +97,7 @@ Configuration files must have the extension .conf; other extensions are ignored. + instead of a generic host and generate host-specific configuration. + + *hostonly_cmdline=*"__{yes|no}__":: +- If set, store the kernel command line arguments needed in the initramfs ++ If set to "yes", store the kernel command line arguments needed in the initramfs + + *persistent_policy=*"____":: + Use __ to address disks and partitions. +diff --git a/dracut.sh b/dracut.sh +index 492ecbf7..35d7e134 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -1708,7 +1708,7 @@ if ! ( echo $PARMS_TO_STORE > $initdir/lib/dracut/build-parameter.txt ); then + exit 1 + fi + +-if [[ $hostonly_cmdline ]] ; then ++if [[ $hostonly_cmdline == "yes" ]] ; then + unset _stored_cmdline + if [ -d $initdir/etc/cmdline.d ];then + dinfo "Stored kernel commandline:" +-- +2.12.3 + diff --git a/0529-systemd-add-missing-.slice-unit.patch b/0529-systemd-add-missing-.slice-unit.patch new file mode 100644 index 0000000..e0f9e02 --- /dev/null +++ b/0529-systemd-add-missing-.slice-unit.patch @@ -0,0 +1,24 @@ +From 1a4ff58c7451a88206bc119d19eb88f04936569e Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Wed, 22 Jun 2016 18:11:28 +0200 +Subject: [PATCH 1/3] systemd: add missing -.slice unit + +--- + modules.d/00systemd/module-setup.sh | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules.d/00systemd/module-setup.sh b/modules.d/00systemd/module-setup.sh +index d3133b23..86728208 100755 +--- a/modules.d/00systemd/module-setup.sh ++++ b/modules.d/00systemd/module-setup.sh +@@ -122,6 +122,7 @@ install() { + \ + $systemdsystemunitdir/slices.target \ + $systemdsystemunitdir/system.slice \ ++ $systemdsystemunitdir/-.slice \ + \ + $tmpfilesdir/systemd.conf \ + \ +-- +2.12.3 + diff --git a/0530-dracut-systemd-dracut-cmdline-ask-fix-dracut-kernel-.patch b/0530-dracut-systemd-dracut-cmdline-ask-fix-dracut-kernel-.patch new file mode 100644 index 0000000..e00c77b --- /dev/null +++ b/0530-dracut-systemd-dracut-cmdline-ask-fix-dracut-kernel-.patch @@ -0,0 +1,57 @@ +From e053630ec37e31f1d7a9bcc22a4c67b2aae7c8e4 Mon Sep 17 00:00:00 2001 +From: Evgeny Vereshchagin +Date: Mon, 15 Feb 2016 08:29:40 +0000 +Subject: [PATCH 2/3] dracut-systemd/dracut-cmdline-ask: fix dracut + --kernel-cmdline=rd.cmdline=ask + +How to reproduce: + +host# dracut --kernel-cmdline='rd.cmdline=ask' initramfs.img +host# qemu-system-x86_64 -initrd initramfs.img ... -append root=/dev/sda1 ... +... + +qemu-host# journalctl -b | grep dracut-cmdline-ask +... +Feb 15 08:45:36 localhost systemd[1]: dracut-cmdline-ask.service: Installed new job dracut-cmdline-ask.service/start as 42 +Feb 15 08:45:36 localhost systemd[1]: dracut-cmdline-ask.service: ConditionKernelCommandLine=rd.cmdline=ask failed. +Feb 15 08:45:36 localhost systemd[1]: dracut-cmdline-ask.service: Starting requested but condition failed. Not starting unit. +Feb 15 08:45:36 localhost systemd[1]: dracut-cmdline-ask.service: Job dracut-cmdline-ask.service/start finished, result=done +... + +Signed-off-by: Evgeny Vereshchagin +--- + modules.d/98dracut-systemd/dracut-cmdline-ask.service | 3 ++- + modules.d/98dracut-systemd/dracut-cmdline-ask.sh | 4 ++++ + 2 files changed, 6 insertions(+), 1 deletion(-) + +diff --git a/modules.d/98dracut-systemd/dracut-cmdline-ask.service b/modules.d/98dracut-systemd/dracut-cmdline-ask.service +index 9a34b355..8bc7d809 100644 +--- a/modules.d/98dracut-systemd/dracut-cmdline-ask.service ++++ b/modules.d/98dracut-systemd/dracut-cmdline-ask.service +@@ -14,7 +14,8 @@ Before=dracut-cmdline.service + After=systemd-journald.socket + Wants=systemd-journald.socket + ConditionPathExists=/usr/lib/initrd-release +-ConditionKernelCommandLine=rd.cmdline=ask ++ConditionKernelCommandLine=|rd.cmdline=ask ++ConditionPathExistsGlob=|/etc/cmdline.d/*.conf + + [Service] + Environment=DRACUT_SYSTEMD=1 +diff --git a/modules.d/98dracut-systemd/dracut-cmdline-ask.sh b/modules.d/98dracut-systemd/dracut-cmdline-ask.sh +index ab8933ad..f410f464 100755 +--- a/modules.d/98dracut-systemd/dracut-cmdline-ask.sh ++++ b/modules.d/98dracut-systemd/dracut-cmdline-ask.sh +@@ -1,5 +1,9 @@ + #!/bin/bash + ++type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh ++ ++getarg "rd.cmdline=ask" || exit 0 ++ + sleep 0.5 + echo + sleep 0.5 +-- +2.12.3 + diff --git a/0531-dracut-systemd-.service-conflict-with-shutdown-targe.patch b/0531-dracut-systemd-.service-conflict-with-shutdown-targe.patch new file mode 100644 index 0000000..db272fa --- /dev/null +++ b/0531-dracut-systemd-.service-conflict-with-shutdown-targe.patch @@ -0,0 +1,171 @@ +From 326c5cb2c0b280f158d587f9ad77eff80a28b9dd Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Wed, 22 Jun 2016 18:12:19 +0200 +Subject: [PATCH 3/3] dracut-systemd/*.service: conflict with shutdown target + +make reboot/poweroff/halt work + +also conflict with emergency.target +--- + modules.d/98dracut-systemd/dracut-cmdline-ask.service | 2 ++ + modules.d/98dracut-systemd/dracut-cmdline.service | 2 ++ + modules.d/98dracut-systemd/dracut-emergency.service | 5 +++-- + modules.d/98dracut-systemd/dracut-initqueue.service | 2 ++ + modules.d/98dracut-systemd/dracut-mount.service | 2 ++ + modules.d/98dracut-systemd/dracut-pre-mount.service | 2 ++ + modules.d/98dracut-systemd/dracut-pre-pivot.service | 3 +++ + modules.d/98dracut-systemd/dracut-pre-trigger.service | 2 ++ + modules.d/98dracut-systemd/dracut-pre-udev.service | 2 ++ + modules.d/98dracut-systemd/emergency.service | 2 ++ + 10 files changed, 22 insertions(+), 2 deletions(-) + +diff --git a/modules.d/98dracut-systemd/dracut-cmdline-ask.service b/modules.d/98dracut-systemd/dracut-cmdline-ask.service +index 8bc7d809..1685479a 100644 +--- a/modules.d/98dracut-systemd/dracut-cmdline-ask.service ++++ b/modules.d/98dracut-systemd/dracut-cmdline-ask.service +@@ -16,6 +16,8 @@ Wants=systemd-journald.socket + ConditionPathExists=/usr/lib/initrd-release + ConditionKernelCommandLine=|rd.cmdline=ask + ConditionPathExistsGlob=|/etc/cmdline.d/*.conf ++Conflicts=shutdown.target emergency.target ++Before=shutdown.target emergency.target + + [Service] + Environment=DRACUT_SYSTEMD=1 +diff --git a/modules.d/98dracut-systemd/dracut-cmdline.service b/modules.d/98dracut-systemd/dracut-cmdline.service +index 6eeb991a..c22856e2 100644 +--- a/modules.d/98dracut-systemd/dracut-cmdline.service ++++ b/modules.d/98dracut-systemd/dracut-cmdline.service +@@ -20,6 +20,8 @@ ConditionDirectoryNotEmpty=|/lib/dracut/hooks/cmdline + ConditionKernelCommandLine=|rd.break=cmdline + ConditionKernelCommandLine=|resume + ConditionKernelCommandLine=|noresume ++Conflicts=shutdown.target emergency.target ++Before=shutdown.target emergency.target + + [Service] + Environment=DRACUT_SYSTEMD=1 +diff --git a/modules.d/98dracut-systemd/dracut-emergency.service b/modules.d/98dracut-systemd/dracut-emergency.service +index 620b565f..3f1e0125 100644 +--- a/modules.d/98dracut-systemd/dracut-emergency.service ++++ b/modules.d/98dracut-systemd/dracut-emergency.service +@@ -12,14 +12,15 @@ Description=Dracut Emergency Shell + DefaultDependencies=no + After=systemd-vconsole-setup.service + Wants=systemd-vconsole-setup.service +-Conflicts=emergency.service emergency.target ++Conflicts=shutdown.target emergency.target ++Before=shutdown.target emergency.target + + [Service] + Environment=HOME=/ + Environment=DRACUT_SYSTEMD=1 + Environment=NEWROOT=/sysroot + WorkingDirectory=/ +-ExecStart=/bin/dracut-emergency ++ExecStart=-/bin/dracut-emergency + ExecStopPost=-/bin/rm -f -- /.console_lock + Type=oneshot + StandardInput=tty-force +diff --git a/modules.d/98dracut-systemd/dracut-initqueue.service b/modules.d/98dracut-systemd/dracut-initqueue.service +index fa5ca561..20d6a8c2 100644 +--- a/modules.d/98dracut-systemd/dracut-initqueue.service ++++ b/modules.d/98dracut-systemd/dracut-initqueue.service +@@ -18,6 +18,8 @@ Wants=systemd-udev-trigger.service + ConditionPathExists=/usr/lib/initrd-release + ConditionPathExists=|/lib/dracut/need-initqueue + ConditionKernelCommandLine=|rd.break=initqueue ++Conflicts=shutdown.target emergency.target ++Before=shutdown.target emergency.target + + [Service] + Environment=DRACUT_SYSTEMD=1 +diff --git a/modules.d/98dracut-systemd/dracut-mount.service b/modules.d/98dracut-systemd/dracut-mount.service +index 1b14f4a3..baa8edbc 100644 +--- a/modules.d/98dracut-systemd/dracut-mount.service ++++ b/modules.d/98dracut-systemd/dracut-mount.service +@@ -15,6 +15,8 @@ After=dracut-initqueue.service dracut-pre-mount.service + ConditionPathExists=/usr/lib/initrd-release + ConditionDirectoryNotEmpty=|/lib/dracut/hooks/mount + ConditionKernelCommandLine=|rd.break=mount ++Conflicts=shutdown.target emergency.target ++Before=shutdown.target emergency.target + + [Service] + Environment=DRACUT_SYSTEMD=1 +diff --git a/modules.d/98dracut-systemd/dracut-pre-mount.service b/modules.d/98dracut-systemd/dracut-pre-mount.service +index 1e4e29f0..c7b123cc 100644 +--- a/modules.d/98dracut-systemd/dracut-pre-mount.service ++++ b/modules.d/98dracut-systemd/dracut-pre-mount.service +@@ -17,6 +17,8 @@ After=cryptsetup.target + ConditionPathExists=/usr/lib/initrd-release + ConditionDirectoryNotEmpty=|/lib/dracut/hooks/pre-mount + ConditionKernelCommandLine=|rd.break=pre-mount ++Conflicts=shutdown.target emergency.target ++Before=shutdown.target emergency.target + + [Service] + Environment=DRACUT_SYSTEMD=1 +diff --git a/modules.d/98dracut-systemd/dracut-pre-pivot.service b/modules.d/98dracut-systemd/dracut-pre-pivot.service +index f5a85ce0..20a872a7 100644 +--- a/modules.d/98dracut-systemd/dracut-pre-pivot.service ++++ b/modules.d/98dracut-systemd/dracut-pre-pivot.service +@@ -10,6 +10,7 @@ + [Unit] + Description=dracut pre-pivot and cleanup hook + Documentation=man:dracut-pre-pivot.service(8) ++DefaultDependencies=no + After=initrd.target initrd-parse-etc.service sysroot.mount + After=dracut-initqueue.service dracut-pre-mount.service dracut-mount.service + Before=initrd-cleanup.service +@@ -23,6 +24,8 @@ ConditionKernelCommandLine=|rd.break=cleanup + ConditionKernelCommandLine=|rd.break + ConditionPathExists=|/dev/root + ConditionPathExists=|/dev/nfs ++Conflicts=shutdown.target emergency.target ++Before=shutdown.target emergency.target + + [Service] + Environment=DRACUT_SYSTEMD=1 +diff --git a/modules.d/98dracut-systemd/dracut-pre-trigger.service b/modules.d/98dracut-systemd/dracut-pre-trigger.service +index 826b89b2..2df9d7bf 100644 +--- a/modules.d/98dracut-systemd/dracut-pre-trigger.service ++++ b/modules.d/98dracut-systemd/dracut-pre-trigger.service +@@ -17,6 +17,8 @@ Wants=dracut-pre-udev.service systemd-udevd.service + ConditionPathExists=/usr/lib/initrd-release + ConditionDirectoryNotEmpty=|/lib/dracut/hooks/pre-trigger + ConditionKernelCommandLine=|rd.break=pre-trigger ++Conflicts=shutdown.target emergency.target ++Before=shutdown.target emergency.target + + [Service] + Environment=DRACUT_SYSTEMD=1 +diff --git a/modules.d/98dracut-systemd/dracut-pre-udev.service b/modules.d/98dracut-systemd/dracut-pre-udev.service +index 43408f3e..1f71546b 100644 +--- a/modules.d/98dracut-systemd/dracut-pre-udev.service ++++ b/modules.d/98dracut-systemd/dracut-pre-udev.service +@@ -21,6 +21,8 @@ ConditionKernelCommandLine=|rd.break=pre-udev + ConditionKernelCommandLine=|rd.driver.blacklist + ConditionKernelCommandLine=|rd.driver.pre + ConditionKernelCommandLine=|rd.driver.post ++Conflicts=shutdown.target emergency.target ++Before=shutdown.target emergency.target + + [Service] + Environment=DRACUT_SYSTEMD=1 +diff --git a/modules.d/98dracut-systemd/emergency.service b/modules.d/98dracut-systemd/emergency.service +index 35d9c317..969a300e 100644 +--- a/modules.d/98dracut-systemd/emergency.service ++++ b/modules.d/98dracut-systemd/emergency.service +@@ -12,6 +12,8 @@ Description=Emergency Shell + DefaultDependencies=no + After=systemd-vconsole-setup.service + Wants=systemd-vconsole-setup.service ++Conflicts=shutdown.target ++Before=shutdown.target + + [Service] + Environment=HOME=/ +-- +2.12.3 + diff --git a/0532-List-drivers-rather-than-looking-for-reverse-depende.patch b/0532-List-drivers-rather-than-looking-for-reverse-depende.patch new file mode 100644 index 0000000..54fdb1e --- /dev/null +++ b/0532-List-drivers-rather-than-looking-for-reverse-depende.patch @@ -0,0 +1,67 @@ +From a233d68d230de2e6cd53c557999ad7cb3184cc46 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Mon, 7 Aug 2017 14:23:20 +0200 +Subject: [PATCH] List drivers rather than looking for reverse dependencies of + block device-providing drivers + +Adding all reverse dependencies for a driver shot over the top too often +(e.g. boo#1037344). + +This reverts "90kernel-modules: also add block device driver reverse dependencies" +(commit 8a679916e597a2c589334c5aeaef8996b18debab) + +Reference: boo#1037344 +Reference: bsc#1034597 +--- + modules.d/90kernel-modules/module-setup.sh | 28 +++++----------------------- + 1 file changed, 5 insertions(+), 23 deletions(-) + +diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh +index 77b6bcae..e1880725 100755 +--- a/modules.d/90kernel-modules/module-setup.sh ++++ b/modules.d/90kernel-modules/module-setup.sh +@@ -3,28 +3,6 @@ + # called by dracut + installkernel() { + if [[ -z $drivers ]]; then +- # modules with symbols might have abstractions that depend on them, so let's add those +- add_rev_deps() { +- local _module +- local _line +- [[ -f "$srcmods/modules.dep" ]] || return 0 +- while read _module; do +- local _mod +- local _deps +- _module=${_module##$srcmods/} +- printf "%s\n" "$_module" +- egrep ".*:.*$_module.*" $srcmods/modules.dep | ( +- local _OLDIFS=$IFS +- IFS=: +- while read _mod _deps; do +- printf "%s\n" "$srcmods/$_mod" +- done +- IFS=$_OLDIFS +- ) +- done | sort -u +- return 0 +- } +- + block_module_filter() { + local _blockfuncs='ahci_platform_get_resources|ata_scsi_ioctl|scsi_add_host|blk_cleanup_queue|register_mtd_blktrans|scsi_esp_register|register_virtio_device|usb_stor_disconnect|mmc_add_host|sdhci_add_host' + # subfunctions inherit following FDs +@@ -90,7 +68,11 @@ installkernel() { + instmods virtio virtio_blk virtio_ring virtio_pci virtio_scsi \ + "=drivers/pcmcia" =ide "=drivers/usb/storage" + +- find_kernel_modules | block_module_filter | add_rev_deps | instmods ++ find_kernel_modules | block_module_filter | instmods ++ ++ # modules that will fail block_module_filter because their implementation ++ # is spread over multiple modules (bsc#1034597) ++ instmods hisi_sas_v1_hw hisi_sas_v2_hw # symbols in dep hisi_sas_main + + # if not on hostonly mode, install all known filesystems, + # if the required list is not set via the filesystems variable +-- +2.12.3 + diff --git a/0533-instmods-check-modules.builtin-in-srcmods.patch b/0533-instmods-check-modules.builtin-in-srcmods.patch new file mode 100644 index 0000000..2978e81 --- /dev/null +++ b/0533-instmods-check-modules.builtin-in-srcmods.patch @@ -0,0 +1,32 @@ +From 41c4ef96400cd1dbcce175a4b909ebdbd429e5a2 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Thu, 13 Jul 2017 21:17:27 +0200 +Subject: [PATCH] instmods: check modules.builtin in $srcmods + +Running dracut with --kmoddir causes lots of errors like this: + +grep: /lib/modules/4.4.73-default/modules.builtin: No such file or directory + +Fix this by looking up modules.builtin in the proper path. + +Reference: bsc#1048606 +--- + dracut-init.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dracut-init.sh b/dracut-init.sh +index c9413907..3f30cc9c 100644 +--- a/dracut-init.sh ++++ b/dracut-init.sh +@@ -1137,7 +1137,7 @@ instmods() { + return 0 + fi + +- if grep -q "/${_mod}.ko" /lib/modules/$kernel/modules.builtin; then ++ if grep -q "/${_mod}.ko" $srcmods/modules.builtin; then + # Module is built-in + return 0 + fi +-- +2.12.3 + diff --git a/0534-ssh-client-Include-nss_-libraries.patch b/0534-ssh-client-Include-nss_-libraries.patch new file mode 100644 index 0000000..695031c --- /dev/null +++ b/0534-ssh-client-Include-nss_-libraries.patch @@ -0,0 +1,40 @@ +From 9c2c061b2f1760c96b3cc9bcd38d7c1b5f25061d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michal=20Koutn=C3=BD?= +Date: Tue, 15 Aug 2017 15:25:18 +0200 +Subject: [PATCH] ssh-client: Include nss_ libraries + +SSH uses passwd database and thus need various NSS plugin libraries, +depending upon setting in nsswitch.conf. + +SSH binary fails within the dracut environment without the libraries: + + #:/ ssh + No user exist for uid 0 +--- + modules.d/95ssh-client/module-setup.sh | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/modules.d/95ssh-client/module-setup.sh b/modules.d/95ssh-client/module-setup.sh +index 0a0e80cd..a6945c1f 100755 +--- a/modules.d/95ssh-client/module-setup.sh ++++ b/modules.d/95ssh-client/module-setup.sh +@@ -56,7 +56,16 @@ inst_sshenv() + + # called by dracut + install() { ++ local _nsslibs ++ + inst_multiple ssh scp + inst_sshenv ++ ++ _nsslibs=$(sed -e '/^#/d' -e 's/^.*://' -e 's/\[NOTFOUND=return\]//' /etc/nsswitch.conf \ ++ | tr -s '[:space:]' '\n' | sort -u | tr -s '[:space:]' '|') ++ _nsslibs=${_nsslibs#|} ++ _nsslibs=${_nsslibs%|} ++ ++ inst_libdir_file -n "$_nsslibs" 'libnss_*.so*' + } + +-- +2.12.3 + diff --git a/0535-Sync-initramfs-after-creation.patch b/0535-Sync-initramfs-after-creation.patch new file mode 100644 index 0000000..ffd51bd --- /dev/null +++ b/0535-Sync-initramfs-after-creation.patch @@ -0,0 +1,32 @@ +From 6b4f01ef7728cdb4ade4d6ef44313127d7d8f8f3 Mon Sep 17 00:00:00 2001 +From: Ankit Kumar +Date: Mon, 7 Aug 2017 12:13:53 +0530 +Subject: [PATCH] Sync initramfs after creation + +If we trigger crash just after creating initramfs, sometimes it is +observed that initramfs is not written to disk causing the subsequent +boot to fail. A sync should resolve this. + +Signed-off-by: Ankit Kumar +--- + dracut.sh | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/dracut.sh b/dracut.sh +index 35d7e134..39bae4e7 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -1832,4 +1832,10 @@ else + fi + + ++sync $outfile 2> /dev/null ++if [ $? -ne 0 ] ; then ++ dinfo "dracut: sync operartion on newly created initramfs $outfile failed" ++ exit 1 ++fi ++ + exit 0 +-- +2.12.3 + diff --git a/0536-90multipath-drop-67-kpartx-compat.rules.patch b/0536-90multipath-drop-67-kpartx-compat.rules.patch new file mode 100644 index 0000000..1a68441 --- /dev/null +++ b/0536-90multipath-drop-67-kpartx-compat.rules.patch @@ -0,0 +1,28 @@ +From 684d83b9492b8a8323f4b99d4384e56c7c7b3580 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Mon, 14 Aug 2017 16:43:45 +0200 +Subject: [PATCH 1/2] 90multipath: drop 67-kpartx-compat.rules + +This file is obsolete in SLE-15 and Factory. + +Reference: bsc#1054539 +--- + modules.d/90multipath/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh +index 4f342c89..85848068 100755 +--- a/modules.d/90multipath/module-setup.sh ++++ b/modules.d/90multipath/module-setup.sh +@@ -118,7 +118,7 @@ install() { + + inst_rules 40-multipath.rules 56-multipath.rules \ + 62-multipath.rules 65-multipath.rules \ +- 66-kpartx.rules 67-kpartx-compat.rules \ ++ 66-kpartx.rules \ + 11-dm-mpath.rules + } + +-- +2.12.3 + diff --git a/0537-dracut-init.sh-ignore-crc32.ko-in-builtin-test.patch b/0537-dracut-init.sh-ignore-crc32.ko-in-builtin-test.patch new file mode 100644 index 0000000..7ba6f58 --- /dev/null +++ b/0537-dracut-init.sh-ignore-crc32.ko-in-builtin-test.patch @@ -0,0 +1,31 @@ +From c909fcc8e1b34098e2ec58cd585df0dbb8c3ec3c Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Wed, 19 Jul 2017 01:25:13 +0200 +Subject: [PATCH 2/2] dracut-init.sh: ignore crc32.ko in builtin test + +crc32.ko exists twice in certain kernels (e.g. SLE12): as +/kernel/lib/crc32.ko (SLE12: builtin) and as kernel/crypto/crc32.ko +(SLE12: module). When the latter module is necessary, dracut +falsely classifies it as builtin. Fix that. + +Reference: bsc#1054538 +--- + dracut-init.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dracut-init.sh b/dracut-init.sh +index 3f30cc9c..65597ffa 100644 +--- a/dracut-init.sh ++++ b/dracut-init.sh +@@ -1137,7 +1137,7 @@ instmods() { + return 0 + fi + +- if grep -q "/${_mod}.ko" $srcmods/modules.builtin; then ++ if [[ ${_mod} != crc32 ]] && grep -q "/${_mod}.ko" $srcmods/modules.builtin; then + # Module is built-in + return 0 + fi +-- +2.12.3 + diff --git a/0538-Enable-core-dumps-with-systemd-from-initrd.patch b/0538-Enable-core-dumps-with-systemd-from-initrd.patch new file mode 100644 index 0000000..512433b --- /dev/null +++ b/0538-Enable-core-dumps-with-systemd-from-initrd.patch @@ -0,0 +1,29 @@ +From c15c37986d9387c7f7d1020bd7ca17f890ae6276 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Tue, 29 Aug 2017 08:46:07 +0200 +Subject: [PATCH] Enable core dumps with systemd from initrd + +systemd sets /proc/sys/kernel/core_pattern to use systemd-coredump. +However, systemd-coredump is missing from initrd, making dumping +the core in initrd impossible by default. + +Reference: bsc#1054809 +--- + modules.d/00systemd/module-setup.sh | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules.d/00systemd/module-setup.sh b/modules.d/00systemd/module-setup.sh +index 86728208..14b3ab07 100755 +--- a/modules.d/00systemd/module-setup.sh ++++ b/modules.d/00systemd/module-setup.sh +@@ -33,6 +33,7 @@ install() { + + inst_multiple -o \ + $systemdutildir/systemd \ ++ $systemdutildir/systemd-coredump \ + $systemdutildir/systemd-cgroups-agent \ + $systemdutildir/systemd-shutdown \ + $systemdutildir/systemd-reply-password \ +-- +2.12.3 + diff --git a/0539-Add-IMA-functionality-fate-323289.patch b/0539-Add-IMA-functionality-fate-323289.patch new file mode 100644 index 0000000..34f298f --- /dev/null +++ b/0539-Add-IMA-functionality-fate-323289.patch @@ -0,0 +1,24 @@ +From 31f5f290cf74a719b93439bced08260f5af47f80 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Thu, 28 Sep 2017 13:16:33 +0200 +Subject: [PATCH] Add IMA functionality (fate#323289) + +This is implemented as a sub module analogous to FIPS. +(changes to spec file applied in OBS only) +--- + dracut.conf.d/ima.conf.example | 3 +++ + 1 file changed, 3 insertions(+) + create mode 100644 dracut.conf.d/ima.conf.example + +diff --git a/dracut.conf.d/ima.conf.example b/dracut.conf.d/ima.conf.example +new file mode 100644 +index 00000000..b4c4eea7 +--- /dev/null ++++ b/dracut.conf.d/ima.conf.example +@@ -0,0 +1,3 @@ ++# turn on ima modules ++ ++add_dracutmodules+=" integrity " +-- +2.14.1 + diff --git a/0540-Check-the-proper-variable-for-a-custom-IMA-keys-dire.patch b/0540-Check-the-proper-variable-for-a-custom-IMA-keys-dire.patch new file mode 100644 index 0000000..7655455 --- /dev/null +++ b/0540-Check-the-proper-variable-for-a-custom-IMA-keys-dire.patch @@ -0,0 +1,25 @@ +From 551cc3694e32be97084b1f198f76f4daf908d503 Mon Sep 17 00:00:00 2001 +From: Jason Dana +Date: Thu, 27 Apr 2017 07:55:58 -0400 +Subject: [PATCH] Check the proper variable for a custom IMA keys directory + +--- + modules.d/98integrity/ima-keys-load.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/98integrity/ima-keys-load.sh b/modules.d/98integrity/ima-keys-load.sh +index 659b7222..e142f74d 100755 +--- a/modules.d/98integrity/ima-keys-load.sh ++++ b/modules.d/98integrity/ima-keys-load.sh +@@ -13,7 +13,7 @@ load_x509_keys() + . ${IMACONFIG} + fi + +- if [ -z "${IMAKEYDIR}" ]; then ++ if [ -z "${IMAKEYSDIR}" ]; then + IMAKEYSDIR="/etc/keys/ima" + fi + +-- +2.14.1 + diff --git a/0541-Make-sure-70-persistent-net.rules-is-included-in-ini.patch b/0541-Make-sure-70-persistent-net.rules-is-included-in-ini.patch new file mode 100644 index 0000000..69e84dc --- /dev/null +++ b/0541-Make-sure-70-persistent-net.rules-is-included-in-ini.patch @@ -0,0 +1,29 @@ +From 9ddabe8afc13e0ea038ab5bc8aaf1cffe1c905ed Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Mon, 23 Oct 2017 12:01:43 +0200 +Subject: [PATCH] Make sure 70-persistent-net.rules is included in initramfs + +This is to support predictable interface names + +Note: This should not be backported. + +Reference: boo#960669 +--- + modules.d/95udev-rules/module-setup.sh | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules.d/95udev-rules/module-setup.sh b/modules.d/95udev-rules/module-setup.sh +index 5e3f444d..38f7726c 100755 +--- a/modules.d/95udev-rules/module-setup.sh ++++ b/modules.d/95udev-rules/module-setup.sh +@@ -38,6 +38,7 @@ install() { + 60-pcmcia.rules \ + 60-persistent-storage.rules \ + 61-persistent-storage-edd.rules \ ++ 70-persistent-net.rules \ + 70-uaccess.rules \ + 71-seat.rules \ + 73-seat-late.rules \ +-- +2.14.1 + diff --git a/0542-Include-crc32c-intel-module-when-using-btrfs.patch b/0542-Include-crc32c-intel-module-when-using-btrfs.patch new file mode 100644 index 0000000..cee0259 --- /dev/null +++ b/0542-Include-crc32c-intel-module-when-using-btrfs.patch @@ -0,0 +1,26 @@ +From 3c2699fc3f5602a13ec18a0a07d515847dc11fa9 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Mon, 23 Oct 2017 13:36:18 +0200 +Subject: [PATCH] Include crc32c-intel module when using btrfs + +Reference: bsc#1011554 +--- + modules.d/90btrfs/module-setup.sh | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/modules.d/90btrfs/module-setup.sh b/modules.d/90btrfs/module-setup.sh +index 9303dbe2..b0d0058b 100755 +--- a/modules.d/90btrfs/module-setup.sh ++++ b/modules.d/90btrfs/module-setup.sh +@@ -26,6 +26,8 @@ depends() { + # called by dracut + installkernel() { + instmods btrfs ++ # Make sure btfs can use fast crc32c implementations where available (bsc#1011554) ++ instmods crc32c-intel + } + + # called by dracut +-- +2.14.1 + diff --git a/0543-Remove-00systemd-bootchart.patch b/0543-Remove-00systemd-bootchart.patch new file mode 100644 index 0000000..41addc3 --- /dev/null +++ b/0543-Remove-00systemd-bootchart.patch @@ -0,0 +1,43 @@ +From d886567080bd53d2efcba43c89cdfb000ffd594b Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Mon, 4 Dec 2017 15:55:12 +0100 +Subject: [PATCH] Remove 00systemd-bootchart + +This was removed from systemd almost two years ago in +c550f7a9b89d017215af084288bc44f736f774fe, so dracut should drop support +as well. + +Reference: bsc#1067279 +--- + modules.d/00systemd-bootchart/module-setup.sh | 19 ------------------- + 1 file changed, 19 deletions(-) + delete mode 100755 modules.d/00systemd-bootchart/module-setup.sh + +diff --git a/modules.d/00systemd-bootchart/module-setup.sh b/modules.d/00systemd-bootchart/module-setup.sh +deleted file mode 100755 +index dcf546e6..00000000 +--- a/modules.d/00systemd-bootchart/module-setup.sh ++++ /dev/null +@@ -1,19 +0,0 @@ +-#!/bin/bash +- +-# called by dracut +-check() { +- [[ "$mount_needs" ]] && return 1 +- require_binaries $systemdutildir/systemd-bootchart || return 1 +- return 255 +-} +- +-# called by dracut +-depends() { +- return 0 +-} +- +-# called by dracut +-install() { +- inst_symlink /init /sbin/init +- inst_multiple $systemdutildir/systemd-bootchart +-} +-- +2.13.6 + diff --git a/0544-40network-Make-ip-dhcp-work.patch b/0544-40network-Make-ip-dhcp-work.patch new file mode 100644 index 0000000..1f3b43e --- /dev/null +++ b/0544-40network-Make-ip-dhcp-work.patch @@ -0,0 +1,69 @@ +From 9d4167efa9b6f093f1a37cb07bc744e763a5d292 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Fri, 8 Dec 2017 09:51:47 +0100 +Subject: [PATCH] 40network: Make ip=dhcp work + +This fixes ip=dhcp to behave exactly like ip=:dhcp, as indicated +in the documentation. + +Reference: bsc#1069163 +--- + modules.d/40network/ifup.sh | 28 +++++++++++++++++----------- + 1 file changed, 17 insertions(+), 11 deletions(-) + +diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh +index a684cba0..d9a418e5 100755 +--- a/modules.d/40network/ifup.sh ++++ b/modules.d/40network/ifup.sh +@@ -497,6 +497,19 @@ if [ -z "$ip" ]; then + fi + fi + ++bring_online() { ++ > /tmp/net.${netif}.up ++ ++ if [ -e /sys/class/net/${netif}/address ]; then ++ > /tmp/net.$(cat /sys/class/net/${netif}/address).up ++ fi ++ ++ setup_net $netif ++ source_hook initqueue/online $netif ++ if [ -z "$manualup" ]; then ++ /sbin/netroot $netif ++ fi ++} + + # Specific configuration, spin through the kernel command line + # looking for ip= lines +@@ -555,17 +568,7 @@ for p in $(getargs ip=); do + done + + if [ $? -eq 0 ]; then +- > /tmp/net.${netif}.up +- +- if [ -e /sys/class/net/${netif}/address ]; then +- > /tmp/net.$(cat /sys/class/net/${netif}/address).up +- fi +- +- setup_net $netif +- source_hook initqueue/online $netif +- if [ -z "$manualup" ]; then +- /sbin/netroot $netif +- fi ++ bring_online + fi + done + +@@ -593,6 +596,9 @@ if [ ! -e /tmp/net.${netif}.up ]; then + do_dhcp -4 + fi + fi ++ if [ $? -eq 0 ]; then ++ bring_online ++ fi + fi + + if [ -e /tmp/net.${netif}.up ]; then +-- +2.13.6 + diff --git a/0545-Add-early-microcode-support-for-AMD-family-16h.patch b/0545-Add-early-microcode-support-for-AMD-family-16h.patch new file mode 100644 index 0000000..7145000 --- /dev/null +++ b/0545-Add-early-microcode-support-for-AMD-family-16h.patch @@ -0,0 +1,29 @@ +From 8bbdf5f5300fcb234a36fc83b8218b0f5be21b31 Mon Sep 17 00:00:00 2001 +From: jonathan-teh <30538043+jonathan-teh@users.noreply.github.com> +Date: Sat, 29 Jul 2017 00:19:19 +0100 +Subject: [PATCH 1/2] Add early microcode support for AMD family 16h + +--- + dracut-functions.sh | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/dracut-functions.sh b/dracut-functions.sh +index ebe05a21..93a56f03 100755 +--- a/dracut-functions.sh ++++ b/dracut-functions.sh +@@ -656,8 +656,10 @@ get_ucode_file () + local stepping=`grep -E "stepping" /proc/cpuinfo | head -1 | sed s/.*:\ //` + + if [[ "$(get_cpu_vendor)" == "AMD" ]]; then +- # If family greater or equal than 0x15 +- if [[ $family -ge 21 ]]; then ++ # If family greater than or equal to 0x16 ++ if [[ $family -ge 22 ]]; then ++ printf "microcode_amd_fam16h.bin" ++ elif [[ $family -eq 21 ]]; then + printf "microcode_amd_fam15h.bin" + else + printf "microcode_amd.bin" +-- +2.13.6 + diff --git a/0546-Support-Microcode-Updates-for-AMD-CPU-Family-0x17.patch b/0546-Support-Microcode-Updates-for-AMD-CPU-Family-0x17.patch new file mode 100644 index 0000000..c53c694 --- /dev/null +++ b/0546-Support-Microcode-Updates-for-AMD-CPU-Family-0x17.patch @@ -0,0 +1,30 @@ +From e725f7e919c286c93ee720aefb91ae231f89ec87 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Tue, 12 Dec 2017 17:48:36 +0100 +Subject: [PATCH 2/2] Support Microcode Updates for AMD CPU Family 0x17 + +Original-Patch-By: Tom Lendacky +--- + dracut-functions.sh | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/dracut-functions.sh b/dracut-functions.sh +index 93a56f03..7dcbef7c 100755 +--- a/dracut-functions.sh ++++ b/dracut-functions.sh +@@ -656,8 +656,10 @@ get_ucode_file () + local stepping=`grep -E "stepping" /proc/cpuinfo | head -1 | sed s/.*:\ //` + + if [[ "$(get_cpu_vendor)" == "AMD" ]]; then +- # If family greater than or equal to 0x16 +- if [[ $family -ge 22 ]]; then ++ # If family greater than or equal to 0x17 ++ if [[ $family -ge 23 ]]; then ++ printf "microcode_amd_fam17h.bin" ++ elif [[ $family -eq 22 ]]; then + printf "microcode_amd_fam16h.bin" + elif [[ $family -eq 21 ]]; then + printf "microcode_amd_fam15h.bin" +-- +2.13.6 + diff --git a/0547-Fix-task-limit-in-emergency.service-the-same-change-.patch b/0547-Fix-task-limit-in-emergency.service-the-same-change-.patch new file mode 100644 index 0000000..60d167c --- /dev/null +++ b/0547-Fix-task-limit-in-emergency.service-the-same-change-.patch @@ -0,0 +1,25 @@ +From e6e429407845cefe1305315ede997d961f486f99 Mon Sep 17 00:00:00 2001 +From: Lidong Zhong +Date: Tue, 5 Sep 2017 16:40:14 +0200 +Subject: [PATCH] Fix task limit in emergency.service (the same change as in + dracut-emergency.service) (bsc#1019938) + +--- + modules.d/98dracut-systemd/emergency.service | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules.d/98dracut-systemd/emergency.service b/modules.d/98dracut-systemd/emergency.service +index 969a300e..d8bc779a 100644 +--- a/modules.d/98dracut-systemd/emergency.service ++++ b/modules.d/98dracut-systemd/emergency.service +@@ -28,6 +28,7 @@ StandardOutput=inherit + StandardError=inherit + KillMode=process + IgnoreSIGPIPE=no ++TasksMax=infinity + + # Bash ignores SIGTERM, so we send SIGHUP instead, to ensure that bash + # terminates cleanly. +-- +2.13.6 + diff --git a/0548-95fcoe-Switch-back-to-using-fipvlan-for-bnx2fc.patch b/0548-95fcoe-Switch-back-to-using-fipvlan-for-bnx2fc.patch new file mode 100644 index 0000000..8ab0172 --- /dev/null +++ b/0548-95fcoe-Switch-back-to-using-fipvlan-for-bnx2fc.patch @@ -0,0 +1,41 @@ +From 9353f7e22da71f16a070cb27c139817ba04879c5 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 17 Aug 2017 10:54:22 +0200 +Subject: [PATCH 1/3] 95fcoe: Switch back to using fipvlan for bnx2fc + +bnx2fc doesn't _actually_ need fcoemon, so fipvlan is sufficient +to start the FCoE connection. +And, in fact, fcoemon is started for every interface, causing +subsequent invocations to fail with + +fcoemon[1157]: error 98 address already in use + +and fcoemon tearing down the connection. + +References: bsc#1052840 + +Signed-off-by: Hannes Reinecke +--- + modules.d/95fcoe/fcoe-up.sh | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/modules.d/95fcoe/fcoe-up.sh b/modules.d/95fcoe/fcoe-up.sh +index 74bdf819..261bf70c 100755 +--- a/modules.d/95fcoe/fcoe-up.sh ++++ b/modules.d/95fcoe/fcoe-up.sh +@@ -57,7 +57,11 @@ if [ "$netdriver" = "bnx2x" ]; then + udevadm settle --timeout=30 + # Sleep for 3 s to allow dcb negotiation + sleep 3 +-elif [ "$dcb" = "dcb" ]; then ++ fipvlan "$netif" -c -s ++ need_shutdown ++ exit ++fi ++if [ "$dcb" = "dcb" ]; then + # wait for lldpad to be ready + i=0 + while [ $i -lt 60 ]; do +-- +2.13.6 + diff --git a/0549-fcoe-up-Increase-sleeptime-to-13s.patch b/0549-fcoe-up-Increase-sleeptime-to-13s.patch new file mode 100644 index 0000000..20c0992 --- /dev/null +++ b/0549-fcoe-up-Increase-sleeptime-to-13s.patch @@ -0,0 +1,34 @@ +From be4084fa2c097cd4b0ca870501e1a9628141de07 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Thu, 12 Oct 2017 13:38:11 +0200 +Subject: [PATCH 2/3] fcoe-up: Increase sleeptime to 13s + +The bnx2 driver requires some time to complete DCB negotiation, +so we should rather increase the sleep time to avoid FCoE not +being able to start correctly. + +References: bsc#1052840 + +Signed-off-by: Hannes Reinecke +--- + modules.d/95fcoe/fcoe-up.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/modules.d/95fcoe/fcoe-up.sh b/modules.d/95fcoe/fcoe-up.sh +index 261bf70c..21947447 100755 +--- a/modules.d/95fcoe/fcoe-up.sh ++++ b/modules.d/95fcoe/fcoe-up.sh +@@ -55,8 +55,8 @@ if [ "$netdriver" = "bnx2x" ]; then + # If driver is bnx2x, do not use /sys/module/fcoe/parameters/create but fipvlan + modprobe 8021q + udevadm settle --timeout=30 +- # Sleep for 3 s to allow dcb negotiation +- sleep 3 ++ # Sleep for 13 s to allow dcb negotiation ++ sleep 13 + fipvlan "$netif" -c -s + need_shutdown + exit +-- +2.13.6 + diff --git a/0550-95fcoe-add-timeout-initqueue-entries.patch b/0550-95fcoe-add-timeout-initqueue-entries.patch new file mode 100644 index 0000000..a725129 --- /dev/null +++ b/0550-95fcoe-add-timeout-initqueue-entries.patch @@ -0,0 +1,35 @@ +From 853356a0d72e5c1a3cc69b9eb09dff66f6e20647 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Wed, 13 Sep 2017 09:42:01 +0200 +Subject: [PATCH] 95fcoe: add timeout initqueue entries + +Occasionally the FCoE connection might be reset after fipvlan was +called, causing the FCoE connection to be dropped and boot to fail. +For these cases we should be adding a timeout entry for the +initqueue to have a failsave mechanism to re-run fipvlan in +these cases. + +References: bsc#1052840 + +Signed-off-by: Hannes Reinecke +--- + modules.d/95fcoe/fcoe-genrules.sh | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/modules.d/95fcoe/fcoe-genrules.sh b/modules.d/95fcoe/fcoe-genrules.sh +index 5b16cb0d..445a09c2 100755 +--- a/modules.d/95fcoe/fcoe-genrules.sh ++++ b/modules.d/95fcoe/fcoe-genrules.sh +@@ -8,7 +8,9 @@ + { + if [ -n "$fcoe_mac" ] ; then + printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", RUN+="/sbin/initqueue --onetime --unique --name fcoe-up-$env{INTERFACE} /sbin/fcoe-up $env{INTERFACE} %s %s"\n' "$fcoe_mac" "$fcoe_dcb" "$fcoe_mode" ++ printf 'ACTION=="add", SUBSYSTEM=="net", ATTR{address}=="%s", RUN+="/sbin/initqueue --onetime --timeout --unique --name fcoe-timeout-$env{INTERFACE} /sbin/fcoe-up $env{INTERFACE} %s %s"\n' "$fcoe_mac" "$fcoe_dcb" "$fcoe_mode" + else + printf 'ACTION=="add", SUBSYSTEM=="net", NAME=="%s", RUN+="/sbin/initqueue --onetime --unique --name fcoe-up-$env{INTERFACE} /sbin/fcoe-up $env{INTERFACE} %s %s"\n' "$fcoe_interface" "$fcoe_dcb" "$fcoe_mode" ++ printf 'ACTION=="add", SUBSYSTEM=="net", NAME=="%s", RUN+="/sbin/initqueue --onetime --timeout --unique --name fcoe-timeout-$env{INTERFACE} /sbin/fcoe-up $env{INTERFACE} %s %s"\n' "$fcoe_interface" "$fcoe_dcb" "$fcoe_mode" + fi + } >> /etc/udev/rules.d/92-fcoe.rules +-- +2.13.6 + diff --git a/0551-fips-use-lib-modules-uname-r-modules.fips.patch b/0551-fips-use-lib-modules-uname-r-modules.fips.patch new file mode 100644 index 0000000..7416a8f --- /dev/null +++ b/0551-fips-use-lib-modules-uname-r-modules.fips.patch @@ -0,0 +1,52 @@ +From 2a7f2be7475dfaf5090bbafbbf5b7eb3067eef46 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Wed, 10 Jan 2018 11:03:22 +0100 +Subject: [PATCH] fips: use /lib/modules/$(uname -r)/modules.fips + +if /lib/modules/$(uname -r)/modules.fips exists, use that list instead +of the hardcoded dracut module list. + +Backported from upstream's master branch + +diff --git a/modules.d/01fips/module-setup.sh b/modules.d/01fips/module-setup.sh +index 9e5eca4f..709cfc85 100755 +--- a/modules.d/01fips/module-setup.sh ++++ b/modules.d/01fips/module-setup.sh +@@ -13,18 +13,22 @@ depends() { + # called by dracut + installkernel() { + local _fipsmodules _mod +- _fipsmodules="ansi_cprng arc4 authenc ccm " +- _fipsmodules+="ctr cts deflate drbg " +- _fipsmodules+="ecb fcrypt gcm ghash_generic khazad md4 michael_mic rmd128 " +- _fipsmodules+="rmd160 rmd256 rmd320 seed " +- _fipsmodules+="sha512_generic tcrypt tea wp512 xts " +- _fipsmodules+="aes_s390 des_s390 sha256_s390 ghash_s390 sha1_s390 sha512_s390 " +- _fipsmodules+="gf128mul " +- _fipsmodules+="cmac vmac xcbc salsa20_generic salsa20_x86_64 camellia_generic camellia_x86_64 pcbc tgr192 anubis " +- _fipsmodules+="cast6_generic cast5_generic cast_common sha512_ssse3 serpent_sse2_x86_64 serpent_generic twofish_generic " +- _fipsmodules+="ablk_helper cryptd twofish_x86_64_3way lrw glue_helper twofish_x86_64 twofish_common blowfish_generic " +- _fipsmodules+="blowfish_x86_64 blowfish_common des_generic cbc " +- _fipsmodules+="algif_hash af_alg crypto_user " ++ if [[ -f "${srcmods}/modules.fips" ]]; then ++ _fipsmodules="$(cat "${srcmods}/modules.fips")" ++ else ++ _fipsmodules="ansi_cprng arc4 authenc ccm " ++ _fipsmodules+="ctr cts deflate drbg " ++ _fipsmodules+="ecb fcrypt gcm ghash_generic khazad md4 michael_mic rmd128 " ++ _fipsmodules+="rmd160 rmd256 rmd320 seed " ++ _fipsmodules+="sha512_generic tcrypt tea wp512 xts " ++ _fipsmodules+="aes_s390 des_s390 sha256_s390 ghash_s390 sha1_s390 sha512_s390 " ++ _fipsmodules+="gf128mul " ++ _fipsmodules+="cmac vmac xcbc salsa20_generic salsa20_x86_64 camellia_generic camellia_x86_64 pcbc tgr192 anubis " ++ _fipsmodules+="cast6_generic cast5_generic cast_common sha512_ssse3 serpent_sse2_x86_64 serpent_generic twofish_generic " ++ _fipsmodules+="ablk_helper cryptd twofish_x86_64_3way lrw glue_helper twofish_x86_64 twofish_common blowfish_generic " ++ _fipsmodules+="blowfish_x86_64 blowfish_common des_generic cbc " ++ _fipsmodules+="algif_hash af_alg crypto_user " ++ fi + + mkdir -m 0755 -p "${initdir}/etc/modprobe.d" + +-- +2.13.6 + diff --git a/0552-98integrity-support-validating-the-IMA-policy-file-s.patch b/0552-98integrity-support-validating-the-IMA-policy-file-s.patch new file mode 100644 index 0000000..a6c7ca3 --- /dev/null +++ b/0552-98integrity-support-validating-the-IMA-policy-file-s.patch @@ -0,0 +1,36 @@ +From d31e03d34cc743c6538f532704ec7fc3bc75a03d Mon Sep 17 00:00:00 2001 +From: Stefan Berger +Date: Thu, 13 Oct 2016 16:49:43 -0400 +Subject: [PATCH] 98integrity: support validating the IMA policy file signature + +IMA validates file signatures based on the security.ima xattr. As of +Linux-4.7, instead of cat'ing the IMA policy into the securityfs policy, +the IMA policy pathname can be written, allowing the IMA policy file +signature to be validated. + +This patch first attempts to write the pathname, but on failure falls +back to cat'ing the IMA policy contents . + +Signed-off-by: Stefan Berger +Signed-off-by: Mimi Zohar +--- + modules.d/98integrity/ima-policy-load.sh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/modules.d/98integrity/ima-policy-load.sh b/modules.d/98integrity/ima-policy-load.sh +index 0061cfff..5460d025 100755 +--- a/modules.d/98integrity/ima-policy-load.sh ++++ b/modules.d/98integrity/ima-policy-load.sh +@@ -30,7 +30,8 @@ load_ima_policy() + # check the existence of the IMA policy file + [ -f "${IMAPOLICYPATH}" ] && { + info "Loading the provided IMA custom policy"; +- cat ${IMAPOLICYPATH} > ${IMASECDIR}/policy; ++ echo -n "${IMAPOLICYPATH}" > ${IMASECDIR}/policy || \ ++ cat "${IMAPOLICYPATH}" > ${IMASECDIR}/policy + } + + return 0 +-- +2.13.6 + diff --git a/0553-98integrity-support-loading-x509-into-the-trusted-bu.patch b/0553-98integrity-support-loading-x509-into-the-trusted-bu.patch new file mode 100644 index 0000000..cf99726 --- /dev/null +++ b/0553-98integrity-support-loading-x509-into-the-trusted-bu.patch @@ -0,0 +1,58 @@ +From 266d28ad09755c1c7016891f356bb75a9861f77c Mon Sep 17 00:00:00 2001 +From: Matthias Gerstner +Date: Wed, 24 Jan 2018 16:58:15 +0100 +Subject: [PATCH 1/2] 98integrity: support loading x509 into the + trusted/builtin .evm keyring + +This implements logic analogous to the one already implemented in +ima-keys-load.sh, only for the .evm/_evm keyrings. + +If the kernel was built with CONFIG_IMA_TRUSTED_KEYRING then the kernel +initially creates and configures .ima and .evm keyrings. These keyrings +only accept x509 certificates that have been signed by a local CA which +belongs to the kernel builtin trusted keyring. + +Thus if such a keyring is already present then additional evm keys +should be loaded into them. If this is not the case then the _evm +keyring needs to be created in userspace and keys will be loaded into +it instead. + +Before this change dracut always created the _evm keyring and loaded +keys into it without considering an existing .evm keyring. In case of +CONFIG_IMA_TRUSTED_KEYRING being enabled, the _evm keyring will not be +used by the kernel, however, and EVM digital signatures will not work as +expected. +--- + modules.d/98integrity/evm-enable.sh | 15 ++++++++++++++- + 1 file changed, 14 insertions(+), 1 deletion(-) + +diff --git a/modules.d/98integrity/evm-enable.sh b/modules.d/98integrity/evm-enable.sh +index ec4f03bc..a3ba59fd 100755 +--- a/modules.d/98integrity/evm-enable.sh ++++ b/modules.d/98integrity/evm-enable.sh +@@ -76,8 +76,21 @@ load_evm_x509() + return 1 + fi + ++ local evm_pubid ++ local line=$(keyctl describe %keyring:.evm) ++ if [ $? -eq 0 ]; then ++ # the kernel already setup a trusted .evm keyring so use that one ++ evm_pubid=${line%%:*} ++ else ++ # look for an existing regular keyring ++ evm_pubid=`keyctl search @u keyring _evm` ++ if [ -z "${evm_pubid}" ]; then ++ # create a new regular _evm keyring ++ evm_pubid=`keyctl newring _evm @u` ++ fi ++ fi ++ + # load the EVM public key onto the EVM keyring +- evm_pubid=`keyctl newring _evm @u` + EVMX509ID=$(evmctl import ${EVMX509PATH} ${evm_pubid}) + [ $? -eq 0 ] || { + info "integrity: failed to load the EVM X509 cert ${EVMX509PATH}"; +-- +2.13.6 + diff --git a/0554-98integrity-support-X.509-only-EVM-configuration.patch b/0554-98integrity-support-X.509-only-EVM-configuration.patch new file mode 100644 index 0000000..e96c77f --- /dev/null +++ b/0554-98integrity-support-X.509-only-EVM-configuration.patch @@ -0,0 +1,46 @@ +From 16d52f692c2add82f54f712a7fc60885536dc39a Mon Sep 17 00:00:00 2001 +From: Matthias Gerstner +Date: Wed, 24 Jan 2018 17:19:03 +0100 +Subject: [PATCH 2/2] 98integrity: support X.509-only EVM configuration + +Previously if no symmetric key was configured for EVM, then the +initialization process was aborted. It can be a valid use case, however, +to only use EVM digital signatures. In this case only X.509 certificates +need to be loaded. + +With this change EVM initialization will continue if any of the +symmetric or X.509 keys could be loaded. +--- + modules.d/98integrity/evm-enable.sh | 15 +++++++++++---- + 1 file changed, 11 insertions(+), 4 deletions(-) + +diff --git a/modules.d/98integrity/evm-enable.sh b/modules.d/98integrity/evm-enable.sh +index a3ba59fd..5a92b598 100755 +--- a/modules.d/98integrity/evm-enable.sh ++++ b/modules.d/98integrity/evm-enable.sh +@@ -125,11 +125,18 @@ enable_evm() + return 0 + fi + +- # load the EVM encrypted key +- load_evm_key || return 1 ++ local evm_configured ++ ++ # try to load the EVM encrypted key ++ load_evm_key && evm_configured=1 ++ ++ # try to load the EVM public key ++ load_evm_x509 && evm_configured=1 + +- # load the EVM public key, if it exists +- load_evm_x509 ++ # only enable EVM if a key or x509 certificate could be loaded ++ if [ -z "$evm_configured" ]; then ++ return 1 ++ fi + + # initialize EVM + info "Enabling EVM" +-- +2.13.6 + diff --git a/0555-Avoid-executing-emergency-hooks-twice.patch b/0555-Avoid-executing-emergency-hooks-twice.patch new file mode 100644 index 0000000..7ec245d --- /dev/null +++ b/0555-Avoid-executing-emergency-hooks-twice.patch @@ -0,0 +1,38 @@ +From 64511ab0b73df0c9d704e61b14beba641818dd56 Mon Sep 17 00:00:00 2001 +From: Ignaz Forster +Date: Tue, 6 Feb 2018 17:32:47 +0100 +Subject: [PATCH] Avoid executing emergency hooks twice + +When using systemd emergency hooks were executed twice; this patch will avoid +that by only calling the hook of systemd is not called anyway. +Also see https://github.com/dracutdevs/dracut/pull/374 +--- + modules.d/99base/dracut-lib.sh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +Index: dracut-044/modules.d/99base/dracut-lib.sh +=================================================================== +--- dracut-044.orig/modules.d/99base/dracut-lib.sh ++++ dracut-044/modules.d/99base/dracut-lib.sh +@@ -1072,6 +1072,7 @@ _emergency_shell() + rm -f -- /.console_lock + else + debug_off ++ source_hook "$hook" + echo + /sbin/rdsosreport + echo 'You might want to save "/run/initramfs/rdsosreport.txt" to a USB stick or /boot' +@@ -1122,12 +1123,12 @@ emergency_shell() + + echo ; echo + warn "$*" +- source_hook "$hook" + echo + + if getargbool 1 rd.shell -d -y rdshell || getarg rd.break -d rdbreak; then + _emergency_shell $_rdshell_name + else ++ source_hook "$hook" + warn "$action has failed. To debug this issue add \"rd.shell rd.debug\" to the kernel command line." + # cause a kernel panic + exit 1 diff --git a/0556-95qeth_rules-Add-new-module-to-copy-qeth-rules.patch b/0556-95qeth_rules-Add-new-module-to-copy-qeth-rules.patch new file mode 100644 index 0000000..5317afc --- /dev/null +++ b/0556-95qeth_rules-Add-new-module-to-copy-qeth-rules.patch @@ -0,0 +1,83 @@ +From c4f914a33ac07348245b865dd356c60459d81b42 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Mon, 29 Jan 2018 08:58:31 -0500 +Subject: [PATCH] 95qeth_rules: Add new module to copy qeth rules + +Only pick rules for interfaces which have a carrier in the running +system. Those interfaces will be assembled by udev to allow booting +from those devices (i.e. iSCSI). + +Reference: FATE#323440 +--- + modules.d/95qeth_rules/module-setup.sh | 59 ++++++++++++++++++++++++++++++++++ + 1 file changed, 59 insertions(+) + create mode 100755 modules.d/95qeth_rules/module-setup.sh + +diff --git a/modules.d/95qeth_rules/module-setup.sh b/modules.d/95qeth_rules/module-setup.sh +new file mode 100755 +index 00000000..d4d15118 +--- /dev/null ++++ b/modules.d/95qeth_rules/module-setup.sh +@@ -0,0 +1,59 @@ ++#!/bin/bash ++ ++# called by dracut ++check() { ++ local _arch=$(uname -m) ++ local _online=0 ++ [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1 ++ require_binaries /usr/lib/udev/collect || return 1 ++ dracut_module_included network || return 1 ++ ++ [[ $hostonly ]] && { ++ for i in /sys/devices/qeth/*/online; do ++ read _online < $i ++ [ $_online -eq 1 ] && return 0 ++ done ++ } ++ return 255 ++} ++ ++# called by dracut ++installkernel() { ++ instmods qeth ++} ++ ++# called by dracut ++install() { ++ ccwid() { ++ qeth_path=$(readlink -e -q $1/device) ++ basename "$qeth_path" ++ } ++ ++ inst_rules_qeth() { ++ for rule in /etc/udev/rules.d/{4,5}1-qeth-${1}.rules; do ++ # prefer chzdev generated 41- rules ++ if [ -f "$rule" ]; then ++ inst_rules "$rule" ++ break ++ fi ++ done ++ } ++ ++ has_carrier() { ++ carrier=0 ++ # not readable in qeth interfaces ++ # that have just been assembled, ignore ++ # read error and assume no carrier ++ read carrier 2>/dev/null < "$1/carrier" ++ [ "$carrier" -eq 1 ] && return 0 ++ return 1; ++ } ++ ++ for dev in /sys/class/net/*; do ++ has_carrier $dev || continue ++ id=$(ccwid $dev) ++ [ -n "$id" ] && inst_rules_qeth $id ++ done ++ ++ inst_simple /usr/lib/udev/collect ++} +-- +2.13.6 + diff --git a/0557-40network-make-arping-optional.patch b/0557-40network-make-arping-optional.patch new file mode 100644 index 0000000..7076088 --- /dev/null +++ b/0557-40network-make-arping-optional.patch @@ -0,0 +1,87 @@ +From a36a38050e9091b1325bd7cc9e2190a31bb0da26 Mon Sep 17 00:00:00 2001 +From: Hannes Reinecke +Date: Tue, 30 Jan 2018 11:14:06 +0100 +Subject: [PATCH 1/2] 40network: make arping optional + +'arping' is not part of the standard installation on SLE15, so we +should be making it optional. + +References: bsc#1078245 + +Signed-off-by: Hannes Reinecke +--- + modules.d/40network/dhclient-script.sh | 3 +++ + modules.d/40network/ifup.sh | 2 +- + modules.d/40network/module-setup.sh | 6 +++--- + modules.d/40network/net-lib.sh | 4 ++++ + 4 files changed, 11 insertions(+), 4 deletions(-) + +diff --git a/modules.d/40network/dhclient-script.sh b/modules.d/40network/dhclient-script.sh +index 9aac2b17..f8a558c7 100755 +--- a/modules.d/40network/dhclient-script.sh ++++ b/modules.d/40network/dhclient-script.sh +@@ -113,6 +113,9 @@ case $reason in + if [ -f /sys/class/net/$netif/device/layer2 ]; then + read layer2 < /sys/class/net/$netif/device/layer2 + fi ++ if ! which arping > /dev/null 2>&1 ; then ++ layer2=0 ++ fi + if [ "$layer2" != "0" ]; then + if ! arping -f -q -D -c 2 -I $netif $new_ip_address ; then + warn "Duplicate address detected for $new_ip_address while doing dhcp. retrying" +diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh +index d9a418e5..11377e6b 100755 +--- a/modules.d/40network/ifup.sh ++++ b/modules.d/40network/ifup.sh +@@ -329,7 +329,7 @@ if strglobin $ip '*:*:*'; then + wait_for_ipv6_dad $netif + [ "$gw" = "::" ] && gw="" + else +- if ! arping -f -q -D -c 2 -I $netif $ip; then ++ if which arping > /dev/null 2>&1 -a ! arping -f -q -D -c 2 -I $netif $ip; then + warn "Duplicate address detected for $ip for interface $netif." + return 1 + fi +diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh +index e23d9e06..18cebc91 100755 +--- a/modules.d/40network/module-setup.sh ++++ b/modules.d/40network/module-setup.sh +@@ -7,7 +7,7 @@ WICKED_EXT_PATH="/etc/wicked/extensions" + check() { + local _program + +- require_binaries ip arping $WICKEDD_DHCP_PATH/wickedd-dhcp4 $WICKEDD_DHCP_PATH/wickedd-dhcp6 || return 1 ++ require_binaries ip $WICKEDD_DHCP_PATH/wickedd-dhcp4 $WICKEDD_DHCP_PATH/wickedd-dhcp6 || return 1 + + return 255 + } +@@ -33,8 +33,8 @@ installkernel() { + # called by dracut + install() { + local _arch _i _dir +- inst_multiple ip arping hostname sed +- inst_multiple -o ping ping6 ++ inst_multiple ip hostname sed ++ inst_multiple -o arping ping ping6 + inst_multiple -o brctl + inst_multiple -o teamd teamdctl teamnl + inst_simple /etc/libnl/classid +diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh +index 749dc47d..c8ab84d0 100755 +--- a/modules.d/40network/net-lib.sh ++++ b/modules.d/40network/net-lib.sh +@@ -199,6 +199,10 @@ setup_net() { + read layer2 < /sys/class/net/$netif/device/layer2 + fi + ++ if ! which arping > /dev/null 2>&1 ; then ++ layer2=0 ++ fi ++ + if [ "$layer2" != "0" ] && [ -n "$dest" ] && ! strstr "$dest" ":"; then + arping -q -f -w 60 -I $netif $dest || info "Resolving $dest via ARP on $netif failed" + fi +-- +2.13.6 + diff --git a/0558-40network-remove-brctl-dependency.patch b/0558-40network-remove-brctl-dependency.patch new file mode 100644 index 0000000..daeced6 --- /dev/null +++ b/0558-40network-remove-brctl-dependency.patch @@ -0,0 +1,70 @@ +From dbf455d3cca765be7453104b6c187ad979ac1e03 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Fri, 16 Feb 2018 15:32:04 +0100 +Subject: [PATCH 2/2] 40network: remove brctl dependency + +brctl is no longer default in SLE15, and its use has been obsoleted +by iputils2. + +References: bsc#1078245 +--- + modules.d/40network/ifup.sh | 6 +++--- + modules.d/40network/module-setup.sh | 1 - + modules.d/40network/parse-bridge.sh | 5 ----- + 3 files changed, 3 insertions(+), 9 deletions(-) + +diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh +index 11377e6b..9775084e 100755 +--- a/modules.d/40network/ifup.sh ++++ b/modules.d/40network/ifup.sh +@@ -440,8 +440,8 @@ if [ -e /tmp/bridge.info ]; then + . /tmp/bridge.info + # start bridge if necessary + if [ "$netif" = "$bridgename" ] && [ ! -e /tmp/net.$bridgename.up ]; then +- brctl addbr $bridgename +- brctl setfd $bridgename 0 ++ ip link add name $bridgename type bridge forward_delay 0 ++ ip link set dev $bridgename up + for ethname in $bridgeslaves ; do + if [ "$ethname" = "$bondname" ] ; then + DO_BOND_SETUP=yes ifup $bondname -m +@@ -452,7 +452,7 @@ if [ -e /tmp/bridge.info ]; then + else + linkup $ethname + fi +- brctl addif $bridgename $ethname ++ ip link set dev $ethname master $bridgename + done + fi + fi +diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh +index 18cebc91..f99ca44c 100755 +--- a/modules.d/40network/module-setup.sh ++++ b/modules.d/40network/module-setup.sh +@@ -35,7 +35,6 @@ install() { + local _arch _i _dir + inst_multiple ip hostname sed + inst_multiple -o arping ping ping6 +- inst_multiple -o brctl + inst_multiple -o teamd teamdctl teamnl + inst_simple /etc/libnl/classid + inst_simple "$WICKEDD_DHCP_PATH/wickedd-dhcp4" "/usr/sbin/wickedd-dhcp4" +diff --git a/modules.d/40network/parse-bridge.sh b/modules.d/40network/parse-bridge.sh +index 212f2595..a15b64e3 100755 +--- a/modules.d/40network/parse-bridge.sh ++++ b/modules.d/40network/parse-bridge.sh +@@ -10,11 +10,6 @@ + # return if bridge already parsed + [ -n "$bridgename" ] && return + +-# Check if bridge parameter is valid +-if getarg bridge= >/dev/null ; then +- command -v brctl >/dev/null 2>&1 || die "No 'brctl' installed" +-fi +- + parsebridge() { + local v=${1}: + set -- +-- +2.13.6 + diff --git a/0559-Add-wickedd-duid.xml-and-iaid.xml-if-available.patch b/0559-Add-wickedd-duid.xml-and-iaid.xml-if-available.patch new file mode 100644 index 0000000..78919b1 --- /dev/null +++ b/0559-Add-wickedd-duid.xml-and-iaid.xml-if-available.patch @@ -0,0 +1,29 @@ +From 657315ab800d894691b8165329fa6b234a073d6f Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Wed, 28 Feb 2018 13:40:24 +0100 +Subject: [PATCH] Add wickedd duid.xml and iaid.xml if available + +This allows to present the same identity to the dhcp server, and +thus retaining the IP address assigned during initrd phase in the +regular system. + +Reference: bsc#1022872, bsc#1082832 +--- + modules.d/40network/module-setup.sh | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh +index f99ca44c..2dd3630c 100755 +--- a/modules.d/40network/module-setup.sh ++++ b/modules.d/40network/module-setup.sh +@@ -61,6 +61,7 @@ install() { + inst_multiple /etc/sysconfig/network/ifcfg-* + inst_multiple -o /etc/sysconfig/network/ifroute-* + inst_simple /etc/sysconfig/network/routes ++ inst_multiple -o /var/lib/wicked/duid.xml /var/lib/wicked/iaid.xml + } + + inst_libdir_file {"tls/$_arch/",tls/,"$_arch/",}"libnss_dns.so.*" \ +-- +2.13.6 + diff --git a/0560-90kernel-modules-Ensure-PCI-host-modules-are-include.patch b/0560-90kernel-modules-Ensure-PCI-host-modules-are-include.patch new file mode 100644 index 0000000..48b982d --- /dev/null +++ b/0560-90kernel-modules-Ensure-PCI-host-modules-are-include.patch @@ -0,0 +1,29 @@ +From aeee703cca60faf8ca41d21529d37738822576aa Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Thu, 1 Mar 2018 10:37:47 +0100 +Subject: [PATCH] 90kernel-modules: Ensure PCI host modules are included + +The includes modules like the Intel Volume Management Device +driver, which is required to boot from disk on some systems. + +Reference: boo#1079924 +--- + modules.d/90kernel-modules/module-setup.sh | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh +index e1880725..41610a24 100755 +--- a/modules.d/90kernel-modules/module-setup.sh ++++ b/modules.d/90kernel-modules/module-setup.sh +@@ -45,6 +45,8 @@ installkernel() { + # ensure early availability for e.g. emmc phys + instmods "=drivers/phy" + ++ instmods "=drivers/pci/host" ++ + instmods \ + "=drivers/hid" \ + "=drivers/input/serio" \ +-- +2.13.6 + diff --git a/0561-Add-the-qedi-driver-to-driver-list-for-iscsi-boot.patch b/0561-Add-the-qedi-driver-to-driver-list-for-iscsi-boot.patch new file mode 100644 index 0000000..8d01a9b --- /dev/null +++ b/0561-Add-the-qedi-driver-to-driver-list-for-iscsi-boot.patch @@ -0,0 +1,40 @@ +From 36ffd889434463968da7f3fd16c53f781adf460f Mon Sep 17 00:00:00 2001 +From: Lee Duncan +Date: Tue, 6 Mar 2018 10:17:30 -0800 +Subject: [PATCH] Add the qedi driver to driver list for iscsi boot + +Reference: bsc#1084179 +--- + modules.d/95iscsi/module-setup.sh | 2 +- + modules.d/95iscsi/parse-iscsiroot.sh | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh +index a6173f7b..7c5b3099 100755 +--- a/modules.d/95iscsi/module-setup.sh ++++ b/modules.d/95iscsi/module-setup.sh +@@ -179,7 +179,7 @@ depends() { + installkernel() { + local _arch=$(uname -m) + +- instmods bnx2i qla4xxx cxgb3i cxgb4i be2iscsi ++ instmods bnx2i qla4xxx cxgb3i cxgb4i be2iscsi qedi + hostonly="" instmods iscsi_tcp iscsi_ibft crc32c iscsi_boot_sysfs + iscsi_module_filter() { + local _funcs='iscsi_register_transport' +diff --git a/modules.d/95iscsi/parse-iscsiroot.sh b/modules.d/95iscsi/parse-iscsiroot.sh +index 43b2e088..f884e684 100755 +--- a/modules.d/95iscsi/parse-iscsiroot.sh ++++ b/modules.d/95iscsi/parse-iscsiroot.sh +@@ -96,7 +96,7 @@ fi + + initqueue --unique --onetime --timeout /sbin/iscsiroot timeout "$netroot" "$NEWROOT" + +-initqueue --onetime modprobe --all -b -q qla4xxx cxgb3i cxgb4i bnx2i be2iscsi ++initqueue --onetime modprobe --all -b -q qla4xxx cxgb3i cxgb4i bnx2i be2iscsi qedi + + # ISCSI actually supported? + if ! [ -e /sys/module/iscsi_tcp ]; then +-- +2.13.6 + diff --git a/0562-Adjust-driver-list-to-modern-kernels.patch b/0562-Adjust-driver-list-to-modern-kernels.patch new file mode 100644 index 0000000..46c74e1 --- /dev/null +++ b/0562-Adjust-driver-list-to-modern-kernels.patch @@ -0,0 +1,227 @@ +From 1229cbc091ac11434b0b628d58630ce4c8fbe8e3 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Wed, 9 Dec 2015 14:14:46 +0100 +Subject: [PATCH] Adjust driver list to modern kernels + +This particularly enables aarch64 and adds critical drivers of ARM platform. + +Reference: bsc#1084272 + +Full change summary of upstream changes included: + +kernel-modules: include all HID driver in hostonly mode + +If a kernel is updated in the undocked state and later on docked, some +keyboard modules can be missing. + +Thus include all HID drivers. + +(cherry picked from commit 8d26b5661ea2fd9fb41c83048b7590e44b1c95df) + +kernel-modules: add usb-storage + +To save the rdsosreport.txt to a USB stick, the usb-storage module is +needed + +(cherry picked from commit b4dd861a0b916368bad9413fdc5d90482fcbd65a) + +kernel-modules: join instmods and install all usb/storage + +(cherry picked from commit 6bc2096cf58c4b52f23ecc1bf8dc301d6122dfb5) + +kernel-modules: add nvme kernel module + +(cherry picked from commit a84c391b8771e0238a0edb8b382ecbf7f2d2bfd3) + +modules: kernel: add phy and power modules to generic initrd + +The phy and power modules are needed by some of the recent ARM +devices that have appeared like CHIP and some exynos devices. + +Signed-off-by: Peter Robinson +(cherry picked from commit e752d42de9c37dd9906a802a5cdf528fbd360453) + +modules: kernel: add more usb controller modules + +There's a number of usb controllers that are common yet aren't +contained in the host directory. Include these for generic host. + +Signed-off-by: Peter Robinson +(cherry picked from commit 0c5e5f271be8cb99e4f65fd6cb37ed70dd63754d) + +dracut: Add drivers/clk by default on arm + +This will bundle clock drivers into the initramfs on arm + +Tested on ti dm8148-t410 where adpll is needed on 4.6+ kernel +This will avoid to rely on (maybe broken) bootloader clocks. + +Theses modules are also usually loaded early. Having them bundled into +the initramfs will avoid lot of deferred probes and others delay. + +Signed-off-by: Nicolas Chauvet +(cherry picked from commit 2602a74edf543f98f2aa1eb79db3de3a1cda13f0) + +Add check for aarch64 to the arm kernel module list + +This adds the same list of drivers we use for arm platforms for +aarch64 too, also add the DMA drivers there too as they can add +sigficant performance for some storage/usb and often need to be +present when the storage drivers load. + +Signed-off-by: Peter Robinson +(cherry picked from commit 917e1b6b5b2669a30bce69061686adbb6abc5e35) + +module-setup.sh: Add ARM specific driver to initramfs image + +If a hisi_sas storage device is used as / during system install, the +resulting installation will not boot because the hisi_sas driver is not +included in the initramfs. + +The Hisilicon storage driver needs to be added to the initramfs image for +aarch64 kernels. + +Signed-off-by: Prarit Bhargava +Cc: dzickus@redhat.com +Cc: dmarlin@redhat.com +Cc: wefu@redhat.com +Cc: harald@redhat.com +(cherry picked from commit fd24c90c363109e1693161a5d5c51190bb99cd29) + +kernel-modules: add serial line drivers + +(cherry picked from commit c1699b59c6ec0c86f1355fbb68eaf65281b81789) + +add options to pickup dw_mmc submodules to blockfuncs + +Signed-off-by: Peter Robinson +(cherry picked from commit f496af50b7c5ddf13154123186cee713f540c8db) + +arm: add soc/extcon/mfd as they're often needed for USB and core memory/soc drivers + +Signed-off-by: Peter Robinson +(cherry picked from commit 39018c93c2bcf20a7f5f9ee509ad1c0448d598f7) + +Add rpmsg, hwspinlock and usb/misc for ARM + +Some of the more complex devices now need rpmsg and hwspinlock in the early boot +process to start, and these to the initrd, and pull in usb/misc because +apparently non standard usb hubs are a thing. + +Signed-off-by: Peter Robinson +(cherry picked from commit 82651e9ef3c4c799281ba006f6ef46902e13086f) + +kernel-modules: add mmc/core for arm + +(cherry picked from commit f8e0c7cc6296909cff92f718ed360ff9ef1f7bae) + +Add aarch64 to drm modules along side ARM + +Add aarch64 to modules, also update the drivers checked for latest +kernel changes. + +Signed-off-by: Peter Robinson +(cherry picked from commit eec49634d4fd5b2d9535a99e184c2450f6026903) +--- + modules.d/50drm/module-setup.sh | 6 ++-- + modules.d/90kernel-modules/module-setup.sh | 47 ++++++++++++++++++++---------- + 2 files changed, 34 insertions(+), 19 deletions(-) + +diff --git a/modules.d/50drm/module-setup.sh b/modules.d/50drm/module-setup.sh +index 1e2ada07..3e03a5d9 100755 +--- a/modules.d/50drm/module-setup.sh ++++ b/modules.d/50drm/module-setup.sh +@@ -49,14 +49,14 @@ installkernel() { + return 0 + } + +- if [[ "$(uname -p)" == arm* ]]; then +- # arm specific modules needed by drm ++ if [[ "$(uname -m)" == arm* || "$(uname -m)" == aarch64 ]]; then ++ # arm/aarch64 specific modules needed by drm + instmods \ + "=drivers/gpu/drm/i2c" \ + "=drivers/gpu/drm/panel" \ ++ "=drivers/gpu/drm/bridge" \ + "=drivers/pwm" \ + "=drivers/video/backlight" \ +- "=drivers/video/fbdev/omap2/displays-new" \ + ${NULL} + fi + +diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh +index 41610a24..37cc76f3 100755 +--- a/modules.d/90kernel-modules/module-setup.sh ++++ b/modules.d/90kernel-modules/module-setup.sh +@@ -39,37 +39,52 @@ installkernel() { + ehci-hcd ehci-pci ehci-platform \ + ohci-hcd ohci-pci \ + uhci-hcd \ +- xhci-hcd xhci-pci xhci-plat-hcd \ + pinctrl-cherryview pwm-lpss pwm-lpss-platform + +- # ensure early availability for e.g. emmc phys +- instmods "=drivers/phy" +- +- instmods "=drivers/pci/host" +- +- instmods \ ++ hostonly='' instmods \ ++ xhci-hcd xhci-pci xhci-plat-hcd \ + "=drivers/hid" \ ++ "=drivers/tty/serial" \ + "=drivers/input/serio" \ +- "=drivers/input/keyboard" ++ "=drivers/input/keyboard" \ ++ "=drivers/usb/storage" \ ++ "=drivers/pci/host" \ ++ ${NULL} + +- instmods yenta_socket scsi_dh_rdac scsi_dh_emc scsi_dh_alua \ +- atkbd i8042 usbhid firewire-ohci pcmcia hv-vmbus ++ instmods \ ++ yenta_socket scsi_dh_rdac scsi_dh_emc scsi_dh_alua \ ++ atkbd i8042 usbhid firewire-ohci pcmcia hv-vmbus \ ++ virtio virtio_blk virtio_ring virtio_pci virtio_scsi \ ++ "=drivers/pcmcia" =ide nvme + +- if [[ "$(uname -p)" == arm* ]]; then +- # arm specific modules ++ if [[ "$(uname -m)" == arm* || "$(uname -m)" == aarch64 ]]; then ++ # arm/aarch64 specific modules ++ _blockfuncs+='|dw_mc_probe|dw_mci_pltfm_register' + instmods \ ++ "=drivers/clk" \ ++ "=drivers/dma" \ ++ "=drivers/extcon" \ ++ "=drivers/hwspinlock" \ + "=drivers/i2c/busses" \ ++ "=drivers/mfd" \ ++ "=drivers/mmc/core" \ ++ "=drivers/phy" \ ++ "=drivers/power" \ + "=drivers/regulator" \ ++ "=drivers/rpmsg" \ + "=drivers/rtc" \ ++ "=drivers/soc" \ ++ "=drivers/usb/chipidea" \ ++ "=drivers/usb/dwc2" \ ++ "=drivers/usb/dwc3" \ + "=drivers/usb/host" \ ++ "=drivers/usb/misc" \ ++ "=drivers/usb/musb" \ + "=drivers/usb/phy" \ ++ "=drivers/scsi/hisi_sas" \ + ${NULL} + fi + +- # install virtual machine support +- instmods virtio virtio_blk virtio_ring virtio_pci virtio_scsi \ +- "=drivers/pcmcia" =ide "=drivers/usb/storage" +- + find_kernel_modules | block_module_filter | instmods + + # modules that will fail block_module_filter because their implementation +-- +2.13.6 + diff --git a/0563-40network-collapse-arping-and-dhcp-calls-into-wicked.patch b/0563-40network-collapse-arping-and-dhcp-calls-into-wicked.patch new file mode 100644 index 0000000..bc0ca64 --- /dev/null +++ b/0563-40network-collapse-arping-and-dhcp-calls-into-wicked.patch @@ -0,0 +1,144 @@ +From abb2c4123658ec5e9f7b21d92c80e1af7e879180 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Fri, 16 Feb 2018 11:51:18 +0100 +Subject: [PATCH] 40network: collapse arping and dhcp calls into wicked binary + +References: bsc#1078245 +--- + modules.d/40network/dhclient-script.sh | 6 ++---- + modules.d/40network/ifup.sh | 25 ++++++++++++++++--------- + modules.d/40network/module-setup.sh | 8 +++----- + modules.d/40network/net-lib.sh | 14 +++++++++----- + 4 files changed, 30 insertions(+), 23 deletions(-) + +diff --git a/modules.d/40network/dhclient-script.sh b/modules.d/40network/dhclient-script.sh +index f8a558c7..fb9f5858 100755 +--- a/modules.d/40network/dhclient-script.sh ++++ b/modules.d/40network/dhclient-script.sh +@@ -113,11 +113,9 @@ case $reason in + if [ -f /sys/class/net/$netif/device/layer2 ]; then + read layer2 < /sys/class/net/$netif/device/layer2 + fi +- if ! which arping > /dev/null 2>&1 ; then +- layer2=0 +- fi + if [ "$layer2" != "0" ]; then +- if ! arping -f -q -D -c 2 -I $netif $new_ip_address ; then ++ wicked arp verify $netif $new_ip_address 2>/dev/null ++ if [ $? -eq 4 ]; then + warn "Duplicate address detected for $new_ip_address while doing dhcp. retrying" + exit 1 + fi +diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh +index 9775084e..a51b6a30 100755 +--- a/modules.d/40network/ifup.sh ++++ b/modules.d/40network/ifup.sh +@@ -214,9 +214,9 @@ do_dhcp() { + else + ipv6_mode="managed" + fi +- dhclient="wickedd-dhcp6 --test --test-mode $ipv6_mode" ++ dhclient="wicked test dhcp6" + else +- dhclient="wickedd-dhcp4 --test" ++ dhclient="wicked test dhcp4" + fi + + if ! linkup $netif; then +@@ -229,9 +229,8 @@ do_dhcp() { + [ -n "$mtu" ] && ip $1 link set mtu $mtu dev $netif + fi + +- $dhclient --test-format leaseinfo --test-output /tmp/leaseinfo.${netif}.dhcp.ipv${1:1:1} --test-request - $netif << EOF +- +-EOF ++ echo '' > /tmp/request.${netif}.dhcp.ipv${1:1:1} ++ $dhclient --format leaseinfo --output /tmp/leaseinfo.${netif}.dhcp.ipv${1:1:1} --request /tmp/request.${netif}.dhcp.ipv${1:1:1} $netif + dhcp_apply $1 || return $? + + if [ "$1" = "-6" ] ; then +@@ -329,10 +328,18 @@ if strglobin $ip '*:*:*'; then + wait_for_ipv6_dad $netif + [ "$gw" = "::" ] && gw="" + else +- if which arping > /dev/null 2>&1 -a ! arping -f -q -D -c 2 -I $netif $ip; then +- warn "Duplicate address detected for $ip for interface $netif." +- return 1 +- fi ++ wicked arp verify --quiet $netif $ip 2>/dev/null ++ case "$?" in ++ 1) ++ info "$netif does not support ARP, cannot attempt to resolve $dest." ++ ;; ++ 4) ++ warn "Duplicate address detected for $ip for interface $netif." ++ return 1 ++ ;; ++ *) ++ ;; ++ esac + # Assume /24 prefix for IPv4 + [ -z "$prefix" ] && prefix=24 + ip addr add $ip/$prefix ${srv:+peer $srv} brd + dev $netif +diff --git a/modules.d/40network/module-setup.sh b/modules.d/40network/module-setup.sh +index 2dd3630c..023400ac 100755 +--- a/modules.d/40network/module-setup.sh ++++ b/modules.d/40network/module-setup.sh +@@ -1,13 +1,12 @@ + #!/bin/bash + +-WICKEDD_DHCP_PATH="/usr/lib/wicked/bin" + WICKED_EXT_PATH="/etc/wicked/extensions" + + # called by dracut + check() { + local _program + +- require_binaries ip $WICKEDD_DHCP_PATH/wickedd-dhcp4 $WICKEDD_DHCP_PATH/wickedd-dhcp6 || return 1 ++ require_binaries ip wicked || return 1 + + return 255 + } +@@ -34,11 +33,10 @@ installkernel() { + install() { + local _arch _i _dir + inst_multiple ip hostname sed +- inst_multiple -o arping ping ping6 ++ inst_multiple ping ping6 + inst_multiple -o teamd teamdctl teamnl ++ inst_multiple wicked + inst_simple /etc/libnl/classid +- inst_simple "$WICKEDD_DHCP_PATH/wickedd-dhcp4" "/usr/sbin/wickedd-dhcp4" +- inst_simple "$WICKEDD_DHCP_PATH/wickedd-dhcp6" "/usr/sbin/wickedd-dhcp6" + inst_libdir_file "libwicked*.so.*" + inst_libdir_file "libdbus-1.so.*" + inst_script "$moddir/ifup.sh" "/sbin/ifup" +diff --git a/modules.d/40network/net-lib.sh b/modules.d/40network/net-lib.sh +index c8ab84d0..b491f8e1 100755 +--- a/modules.d/40network/net-lib.sh ++++ b/modules.d/40network/net-lib.sh +@@ -199,12 +199,16 @@ setup_net() { + read layer2 < /sys/class/net/$netif/device/layer2 + fi + +- if ! which arping > /dev/null 2>&1 ; then +- layer2=0 +- fi +- + if [ "$layer2" != "0" ] && [ -n "$dest" ] && ! strstr "$dest" ":"; then +- arping -q -f -w 60 -I $netif $dest || info "Resolving $dest via ARP on $netif failed" ++ wicked arp ping --interval 3000 --replies 1 --timeout 60000 --quiet $netif $dest 2>/dev/null ++ case "$?" in ++ 0) ++ # Everything is ok ++ ;; ++ *) ++ info "Resolving $dest via ARP on $netif failed" ++ ;; ++ esac + fi + unset layer2 + +-- +2.13.6 + diff --git a/0564-40network-Always-set-the-gw-variable.patch b/0564-40network-Always-set-the-gw-variable.patch new file mode 100644 index 0000000..04e095c --- /dev/null +++ b/0564-40network-Always-set-the-gw-variable.patch @@ -0,0 +1,28 @@ +From 25c8b7f654a906d9829e273578b02d5e6a4c2b0c Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Thu, 15 Mar 2018 19:01:58 +0100 +Subject: [PATCH] 40network: Always set the gw variable + +$gw was not set in case of dhcp. This resulted in some codepathes, +including vital checks, not being executed with wicked. + +Reference: bsc#1085614 +--- + modules.d/40network/ifup.sh | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh +index a51b6a30..2d93cebd 100755 +--- a/modules.d/40network/ifup.sh ++++ b/modules.d/40network/ifup.sh +@@ -123,6 +123,7 @@ dhcp_apply() { + # Assign provided routers + local g + if [ -n "${GATEWAYS}" ]; then ++ gw="${GATEWAYS%% *}" + for g in ${GATEWAYS}; do + ip $1 route add default via "$g" dev "$INTERFACE" && break + done +-- +2.13.6 + diff --git a/0565-90kernel-modules-Include-Intel-Volume-Management-Dev.patch b/0565-90kernel-modules-Include-Intel-Volume-Management-Dev.patch new file mode 100644 index 0000000..ff6ff0c --- /dev/null +++ b/0565-90kernel-modules-Include-Intel-Volume-Management-Dev.patch @@ -0,0 +1,27 @@ +From 99a2f22df36de96f6da808b9720a400980729b35 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Fri, 16 Mar 2018 15:17:41 +0100 +Subject: [PATCH] 90kernel-modules: Include Intel Volume Management Device + support + +Reference: bsc#1079924 +--- + modules.d/90kernel-modules/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh +index 37cc76f3..1eff6f52 100755 +--- a/modules.d/90kernel-modules/module-setup.sh ++++ b/modules.d/90kernel-modules/module-setup.sh +@@ -55,7 +55,7 @@ installkernel() { + yenta_socket scsi_dh_rdac scsi_dh_emc scsi_dh_alua \ + atkbd i8042 usbhid firewire-ohci pcmcia hv-vmbus \ + virtio virtio_blk virtio_ring virtio_pci virtio_scsi \ +- "=drivers/pcmcia" =ide nvme ++ "=drivers/pcmcia" =ide nvme vmd + + if [[ "$(uname -m)" == arm* || "$(uname -m)" == aarch64 ]]; then + # arm/aarch64 specific modules +-- +2.13.6 + diff --git a/0566-95nfs-If-no-server-is-configured-read-BOOTSERVERADDR.patch b/0566-95nfs-If-no-server-is-configured-read-BOOTSERVERADDR.patch new file mode 100644 index 0000000..d0d7640 --- /dev/null +++ b/0566-95nfs-If-no-server-is-configured-read-BOOTSERVERADDR.patch @@ -0,0 +1,35 @@ +From af76a8ca775ba44815116ae880de56d7a8a03c97 Mon Sep 17 00:00:00 2001 +From: Fabian Vogt +Date: Thu, 12 Apr 2018 14:27:43 +0200 +Subject: [PATCH] 95nfs: If no server is configured, read BOOTSERVERADDR from + wicked's leaseinfo + +References: boo#1089332 +--- + modules.d/95nfs/nfs-lib.sh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/modules.d/95nfs/nfs-lib.sh b/modules.d/95nfs/nfs-lib.sh +index 58aa7e30..b2e5f91d 100755 +--- a/modules.d/95nfs/nfs-lib.sh ++++ b/modules.d/95nfs/nfs-lib.sh +@@ -106,7 +106,7 @@ anaconda_nfsv6_to_var() { + # fill in missing server/path from DHCP options. + nfsroot_from_dhcp() { + local f +- for f in /tmp/net.$1.override /tmp/dhclient.$1.dhcpopts; do ++ for f in /tmp/net.$1.override /tmp/dhclient.$1.dhcpopts /tmp/leaseinfo.$1.dhcp.*; do + [ -f $f ] && . $f + done + [ -n "$new_root_path" ] && nfsroot_to_var "$nfs:$new_root_path" +@@ -114,6 +114,7 @@ nfsroot_from_dhcp() { + [ -z "$server" ] && server=$srv + [ -z "$server" ] && server=$new_dhcp_server_identifier + [ -z "$server" ] && server=$new_next_server ++ [ -z "$server" ] && server=$BOOTSERVERADDR + [ -z "$server" ] && server=${new_root_path%%:*} + } + +-- +2.13.6 + diff --git a/0567-Fix-booting-with-fips-1-on-SLES-15.patch b/0567-Fix-booting-with-fips-1-on-SLES-15.patch new file mode 100644 index 0000000..d36c71b --- /dev/null +++ b/0567-Fix-booting-with-fips-1-on-SLES-15.patch @@ -0,0 +1,55 @@ +From c3f2e356ca15c32123334764c014df264d72f149 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Wed, 25 Apr 2018 18:43:46 +0200 +Subject: [PATCH] Fix booting with fips=1 on SLES 15 + +Also, add some documentation on how FIPS actually works. + +Reference: bsc#1074984 +--- + modules.d/01fips/module-setup.sh | 15 +++++++++++---- + 1 file changed, 11 insertions(+), 4 deletions(-) + +diff --git a/modules.d/01fips/module-setup.sh b/modules.d/01fips/module-setup.sh +index 709cfc85..178bae17 100755 +--- a/modules.d/01fips/module-setup.sh ++++ b/modules.d/01fips/module-setup.sh +@@ -13,6 +13,12 @@ depends() { + # called by dracut + installkernel() { + local _fipsmodules _mod ++ # The FIPS process requires that crypto primitives should perform a power-up self test. They must not be loaded and ++ # used prior to successful completion. FIPS140-2, section 4.9 mandates that during power-up, crypto algorithms should ++ # perform self tests, displaying an error if any one of them fails. ++ ++ # dracut implements this by first compiling a blacklist (provided by the kernel in newer distros) and then ++ # load the modules in that list one by one in a controlled manner, aborting on failure. + if [[ -f "${srcmods}/modules.fips" ]]; then + _fipsmodules="$(cat "${srcmods}/modules.fips")" + else +@@ -28,6 +34,7 @@ installkernel() { + _fipsmodules+="ablk_helper cryptd twofish_x86_64_3way lrw glue_helper twofish_x86_64 twofish_common blowfish_generic " + _fipsmodules+="blowfish_x86_64 blowfish_common des_generic cbc " + _fipsmodules+="algif_hash af_alg crypto_user " ++ _fipsmodules+="sha3_generic " + fi + + mkdir -m 0755 -p "${initdir}/etc/modprobe.d" +@@ -52,10 +59,10 @@ install() { + inst_libdir_file \ + fipscheck .fipscheck.hmac \ + libfipscheck.so.1 \ +- .libfipscheck.so.1.hmac .libfipscheck.so.1.1.0.hmac \ +- libcrypto.so.1.0.0 libssl.so.1.0.0 \ +- .libcrypto.so.1.0.0.hmac .libssl.so.1.0.0.hmac \ +- .libcryptsetup.so.4.5.0.hmac .libcryptsetup.so.4.hmac \ ++ .libfipscheck.so.1.hmac .libfipscheck.so.1.2.1.hmac \ ++ libcrypto.so.1.1 libssl.so.1.1 \ ++ .libcrypto.so.1.1.hmac .libssl.so.1.1.hmac \ ++ .libcryptsetup.so.12.1.0.hmac .libcryptsetup.so.12.hmac \ + .libgcrypt.so.20.hmac \ + libfreeblpriv3.so libfreeblpriv3.chk + +-- +2.13.6 + diff --git a/0568-95multipath-Pickup-files-in-etc-multipath-conf.d.patch b/0568-95multipath-Pickup-files-in-etc-multipath-conf.d.patch new file mode 100644 index 0000000..4d8fb1c --- /dev/null +++ b/0568-95multipath-Pickup-files-in-etc-multipath-conf.d.patch @@ -0,0 +1,27 @@ +From 05f1365ffd1c03bad44fdbb312769044cda032a8 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Fri, 14 Jul 2017 14:21:43 +0200 +Subject: [PATCH] 95multipath: Pickup files in /etc/multipath/conf.d + +Reference: boo#1048551 +--- + modules.d/90multipath/module-setup.sh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/modules.d/90multipath/module-setup.sh b/modules.d/90multipath/module-setup.sh +index 85848068..4e059b41 100755 +--- a/modules.d/90multipath/module-setup.sh ++++ b/modules.d/90multipath/module-setup.sh +@@ -92,7 +92,8 @@ install() { + xdrgetprio \ + /etc/xdrdevices.conf \ + /etc/multipath.conf \ +- /etc/multipath/* ++ /etc/multipath/* \ ++ /etc/multipath/conf.d/* + + inst $(command -v partx) /sbin/partx + +-- +2.12.3 + diff --git a/0569-10i18n-Load-all-keymaps-for-a-given-locale.patch b/0569-10i18n-Load-all-keymaps-for-a-given-locale.patch new file mode 100644 index 0000000..72cc790 --- /dev/null +++ b/0569-10i18n-Load-all-keymaps-for-a-given-locale.patch @@ -0,0 +1,71 @@ +From afd09c9a87ef09e2595f71fdae1d38ac00cfd071 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Thu, 26 Oct 2017 14:59:34 +0200 +Subject: [PATCH 1/2] 10i18n: Load all keymaps for a given locale + +Previously, dracut would only copy the first one found. However, +with legacy maps for some locales around, there is a chance we +pick the wrong one. Pick all matching keymaps instead + +Reference: boo#1065058 +--- + modules.d/10i18n/module-setup.sh | 35 ++++++++++++++++++++--------------- + 1 file changed, 20 insertions(+), 15 deletions(-) + +diff --git a/modules.d/10i18n/module-setup.sh b/modules.d/10i18n/module-setup.sh +index d6aab19f..be4ada54 100755 +--- a/modules.d/10i18n/module-setup.sh ++++ b/modules.d/10i18n/module-setup.sh +@@ -30,21 +30,24 @@ install() { + + # This is from 10redhat-i18n. + findkeymap () { +- local MAP=$1 ++ local MAPS=$1 + local MAPNAME=${1%.map*} +- [[ ! -f $MAP ]] && \ +- MAP=$(find ${kbddir}/keymaps -type f -name ${MAPNAME} -o -name ${MAPNAME}.map -o -name ${MAPNAME}.map.\* | head -n1) +- [[ " $KEYMAPS " = *" $MAP "* ]] && return +- KEYMAPS="$KEYMAPS $MAP" +- case $MAP in +- *.gz) cmd=zgrep;; +- *.bz2) cmd=bzgrep;; +- *) cmd=grep ;; +- esac +- +- for INCL in $($cmd "^include " $MAP | while read a a b || [ -n "$a" ]; do echo ${a//\"/}; done); do +- for FN in $(find ${kbddir}/keymaps -type f -name $INCL\*); do +- findkeymap $FN ++ local map ++ [[ ! -f $MAPS ]] && \ ++ MAPS=$(find ${kbddir}/keymaps -type f -name ${MAPNAME} -o -name ${MAPNAME}.map -o -name ${MAPNAME}.map.\*) ++ ++ for map in $MAPS; do ++ KEYMAPS="$KEYMAPS $map" ++ case $map in ++ *.gz) cmd=zgrep;; ++ *.bz2) cmd=bzgrep;; ++ *) cmd=grep ;; ++ esac ++ ++ for INCL in $($cmd "^include " $map | while read a a b || [ -n "$a" ]; do echo ${a//\"/}; done); do ++ for FN in $(find ${kbddir}/keymaps -type f -name $INCL\*); do ++ findkeymap $FN ++ done + done + done + } +@@ -185,7 +188,9 @@ install() { + findkeymap ${map} + done + +- inst_opt_decompress ${KEYMAPS} ++ for keymap in ${KEYMAPS}; do ++ inst_opt_decompress ${keymap} ++ done + + inst_opt_decompress ${kbddir}/consolefonts/${DEFAULT_FONT}.* + +-- +2.16.3 + diff --git a/0570-10i18n-Fix-possible-infinite-recursion.patch b/0570-10i18n-Fix-possible-infinite-recursion.patch new file mode 100644 index 0000000..2f42745 --- /dev/null +++ b/0570-10i18n-Fix-possible-infinite-recursion.patch @@ -0,0 +1,25 @@ +From a4e11a0e4d6fbed25244cc0f01732f81841bd642 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Fri, 27 Apr 2018 16:59:47 +0200 +Subject: [PATCH 2/2] 10i18n: Fix possible infinite recursion + +--- + modules.d/10i18n/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/10i18n/module-setup.sh b/modules.d/10i18n/module-setup.sh +index be4ada54..9083e98f 100755 +--- a/modules.d/10i18n/module-setup.sh ++++ b/modules.d/10i18n/module-setup.sh +@@ -46,7 +46,7 @@ install() { + + for INCL in $($cmd "^include " $map | while read a a b || [ -n "$a" ]; do echo ${a//\"/}; done); do + for FN in $(find ${kbddir}/keymaps -type f -name $INCL\*); do +- findkeymap $FN ++ strstr "$KEYMAPS" "$FN" || findkeymap $FN + done + done + done +-- +2.16.3 + diff --git a/0571-40network-Fix-static-network-setup.patch b/0571-40network-Fix-static-network-setup.patch new file mode 100644 index 0000000..18abf1c --- /dev/null +++ b/0571-40network-Fix-static-network-setup.patch @@ -0,0 +1,28 @@ +From a3fdbedce43956881ca01c94543b22e37d205da6 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Thu, 14 Jun 2018 14:18:44 +0200 +Subject: [PATCH] 40network: Fix static network setup + +Patch-by: Thomas Blume + +References: bsc#1091099 +--- + modules.d/40network/ifup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/40network/ifup.sh b/modules.d/40network/ifup.sh +index 2d93cebd..13564778 100755 +--- a/modules.d/40network/ifup.sh ++++ b/modules.d/40network/ifup.sh +@@ -275,7 +275,7 @@ do_ifcfg() { + dhcp*) + do_dhcp -4 ;; + *) +- do_static ;; ++ ;; + esac + # loop over all configurations in ifcfg-$netif (IPADDR*) and apply + for conf in ${!IPADDR@}; do +-- +2.16.3 + diff --git a/0572-lsinitrd-no-more-cat-write-error-Broken-pipe.patch b/0572-lsinitrd-no-more-cat-write-error-Broken-pipe.patch new file mode 100644 index 0000000..3a37809 --- /dev/null +++ b/0572-lsinitrd-no-more-cat-write-error-Broken-pipe.patch @@ -0,0 +1,44 @@ +From b2e09d1d444e771493c26c576256f962bd8869f3 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Tue, 16 Jan 2018 12:14:15 +0100 +Subject: [PATCH 1/2] lsinitrd: no more cat: write error: Broken pipe + +silence the cat +--- + lsinitrd.sh | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/lsinitrd.sh b/lsinitrd.sh +index 1e4d99ac..9c7a178b 100755 +--- a/lsinitrd.sh ++++ b/lsinitrd.sh +@@ -120,7 +120,7 @@ extract_files() + for f in "${!filenames[@]}"; do + [[ $nofileinfo ]] || echo "initramfs:/$f" + [[ $nofileinfo ]] || echo "========================================================================" +- $CAT $image | cpio --extract --verbose --quiet --to-stdout $f 2>/dev/null ++ $CAT "$image" 2>/dev/null | cpio --extract --verbose --quiet --to-stdout $f 2>/dev/null + ((ret+=$?)) + [[ $nofileinfo ]] || echo "========================================================================" + [[ $nofileinfo ]] || echo +@@ -139,15 +139,14 @@ list_files() + { + echo "========================================================================" + if [ "$sorted" -eq 1 ]; then +- $CAT "$image" | cpio --extract --verbose --quiet --list | sort -n -k5 ++ $CAT "$image" 2>/dev/null | cpio --extract --verbose --quiet --list | sort -n -k5 + else +- $CAT "$image" | cpio --extract --verbose --quiet --list | sort -k9 ++ $CAT "$image" 2>/dev/null | cpio --extract --verbose --quiet --list | sort -k9 + fi + ((ret+=$?)) + echo "========================================================================" + } + +- + if (( ${#filenames[@]} <= 0 )); then + echo "Image: $image: $(du -h $image | while read a b || [ -n "$a" ]; do echo $a;done)" + echo "========================================================================" +-- +2.16.3 + diff --git a/0573-lsinitrd.sh-quote-filename-in-extract_files.patch b/0573-lsinitrd.sh-quote-filename-in-extract_files.patch new file mode 100644 index 0000000..ce4805d --- /dev/null +++ b/0573-lsinitrd.sh-quote-filename-in-extract_files.patch @@ -0,0 +1,25 @@ +From 0bb520ee706a0927f538004e2acb50d8c2b469b3 Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Thu, 18 Jan 2018 10:17:42 +0100 +Subject: [PATCH 2/2] lsinitrd.sh: quote filename in extract_files() + +--- + lsinitrd.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lsinitrd.sh b/lsinitrd.sh +index 9c7a178b..da7bf044 100755 +--- a/lsinitrd.sh ++++ b/lsinitrd.sh +@@ -120,7 +120,7 @@ extract_files() + for f in "${!filenames[@]}"; do + [[ $nofileinfo ]] || echo "initramfs:/$f" + [[ $nofileinfo ]] || echo "========================================================================" +- $CAT "$image" 2>/dev/null | cpio --extract --verbose --quiet --to-stdout $f 2>/dev/null ++ $CAT "$image" 2>/dev/null | cpio --extract --verbose --quiet --to-stdout "$f" 2>/dev/null + ((ret+=$?)) + [[ $nofileinfo ]] || echo "========================================================================" + [[ $nofileinfo ]] || echo +-- +2.16.3 + diff --git a/0574-s-find_btrfs_devs-btrfs_devs.patch b/0574-s-find_btrfs_devs-btrfs_devs.patch new file mode 100644 index 0000000..27cee2a --- /dev/null +++ b/0574-s-find_btrfs_devs-btrfs_devs.patch @@ -0,0 +1,29 @@ +From bfa4e45fa74fabf70ca0d80869e3b209f300ef6d Mon Sep 17 00:00:00 2001 +From: Harald Hoyer +Date: Mon, 7 May 2018 10:26:05 +0200 +Subject: [PATCH] s/find_btrfs_devs/btrfs_devs + +References: bsc#1104178 +Patch-mainline: 048 +Git-commit: bfa4e45fa74fabf70ca0d80869e3b209f300ef6d + +--- + dracut.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dracut.sh b/dracut.sh +index f52d38ac472a..5b5b27e322c5 100755 +--- a/dracut.sh ++++ b/dracut.sh +@@ -1236,7 +1236,7 @@ if [[ $hostonly ]] && [[ "$hostonly_default_device" != "no" ]]; then + + push_host_devs "$_dev" + if [[ "$_t" == btrfs ]]; then +- for i in $(find_btrfs_devs "$_m"); do ++ for i in $(btrfs_devs "$_m"); do + push_host_devs "$i" + done + fi +-- +2.13.7 + diff --git a/0580-check_for_CONFIG_ACPI_TABLE_UPGRADE.patch b/0580-check_for_CONFIG_ACPI_TABLE_UPGRADE.patch new file mode 100644 index 0000000..1b37ea4 --- /dev/null +++ b/0580-check_for_CONFIG_ACPI_TABLE_UPGRADE.patch @@ -0,0 +1,27 @@ +From: Harald Hoyer +Subject: check for CONFIG_ACPI_TABLE_UPGRADE +References: bsc#1098448 +Patch-Mainline: 046 +Git-commit: 940169e8d8e500498a3f350b2b3f341ae6548492 +Git-repo: https://github.com/dracutdevs/dracut.git + +additionally as for CONFIG_ACPI_INITRD_TABLE_OVERRIDE +config parameter got renamed + +Signed-off-by: Thomas Renninger + +Index: dracut-044/dracut.sh +=================================================================== +--- dracut-044.orig/dracut.sh 2018-06-20 17:43:56.664313292 +0200 ++++ dracut-044/dracut.sh 2018-06-20 17:43:57.488359175 +0200 +@@ -1046,8 +1046,8 @@ if [[ ! $print_cmdline ]]; then + fi + fi + +-if [[ $acpi_override = yes ]] && ! check_kernel_config CONFIG_ACPI_INITRD_TABLE_OVERRIDE; then +- dwarn "Disabling ACPI override, because kernel does not support it. CONFIG_ACPI_INITRD_TABLE_OVERRIDE!=y" ++if [[ $acpi_override = yes ]] && ! ( check_kernel_config CONFIG_ACPI_TABLE_UPGRADE || check_kernel_config CONFIG_ACPI_INITRD_TABLE_OVERRIDE ); then ++ dwarn "Disabling ACPI override, because kernel does not support it. CONFIG_ACPI_INITRD_TABLE_OVERRIDE!=y or CONFIG_ACPI_TABLE_UPGRADE!=y" + unset acpi_override + fi + diff --git a/0581-kernel-modules-add-nfit.patch b/0581-kernel-modules-add-nfit.patch new file mode 100644 index 0000000..4b476e2 --- /dev/null +++ b/0581-kernel-modules-add-nfit.patch @@ -0,0 +1,23 @@ +From 09ba1b289f2cba613c1950b03f0f549ebb7eb83f Mon Sep 17 00:00:00 2001 +From: Kairui Song +Date: Mon, 20 Aug 2018 18:40:05 +0800 +Subject: [PATCH] kernel-modules: add nfit + +To support pmem devices, nfit module is required +--- + modules.d/90kernel-modules/module-setup.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: dracut-044/modules.d/90kernel-modules/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/90kernel-modules/module-setup.sh ++++ dracut-044/modules.d/90kernel-modules/module-setup.sh +@@ -55,7 +55,7 @@ installkernel() { + yenta_socket scsi_dh_rdac scsi_dh_emc scsi_dh_alua \ + atkbd i8042 usbhid firewire-ohci pcmcia hv-vmbus \ + virtio virtio_blk virtio_ring virtio_pci virtio_scsi \ +- "=drivers/pcmcia" =ide nvme vmd ++ "=drivers/pcmcia" =ide nvme vmd nfit + + if [[ "$(uname -m)" == arm* || "$(uname -m)" == aarch64 ]]; then + # arm/aarch64 specific modules diff --git a/0582-98dracut-systemd-Start-systemd-vconsole-setup-before.patch b/0582-98dracut-systemd-Start-systemd-vconsole-setup-before.patch new file mode 100644 index 0000000..5ee348f --- /dev/null +++ b/0582-98dracut-systemd-Start-systemd-vconsole-setup-before.patch @@ -0,0 +1,45 @@ +From e9a84e0a215fb5a79e563f665bc406c0ea177d32 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Wed, 5 Sep 2018 12:06:06 +0200 +Subject: [PATCH] 98dracut-systemd: Start systemd-vconsole-setup before + dracut-cmdline-ask + +This is what happened before this patch (edited for brevity): + + dracut-cmdline-ask.service in modules.d/98dracut-systemd, which invokes + dracut-cmdline-ask.sh. This script and systemd-vconsole-setup are + started in parallel for the same console (tty1). + + Then dracut-cmdline-ask quits immediately without doing anything (unless + rd.cmdline=ask is given). As this is a bash script and it gets tty as + stdin as specified in its *.service, this triggers the hangup of tty1 at + its exit. + + Meanwhile systemd-vconsole-setup continues and tries some ioctls after + that, but they fail because of the hung up tty1. + +The usual culprit for starting systemd-vconsole-setup early on is +plymouth-start.service, even if plymouth.enable=0 is set. + +A popular (and annoying) symptom of this as reported by users was +the inability use their configured keyboard layout in plymouth when +unlocking their crypted block devices. + +Reference: boo#1055834 +--- + modules.d/98dracut-systemd/dracut-cmdline-ask.service | 2 ++ + 1 file changed, 2 insertions(+) + +Index: dracut-044/modules.d/98dracut-systemd/dracut-cmdline-ask.service +=================================================================== +--- dracut-044.orig/modules.d/98dracut-systemd/dracut-cmdline-ask.service ++++ dracut-044/modules.d/98dracut-systemd/dracut-cmdline-ask.service +@@ -12,6 +12,8 @@ Description=dracut ask for additional cm + DefaultDependencies=no + Before=dracut-cmdline.service + After=systemd-journald.socket ++After=systemd-vconsole-setup.service ++Requires=systemd-vconsole-setup.service + Wants=systemd-journald.socket + ConditionPathExists=/usr/lib/initrd-release + ConditionKernelCommandLine=|rd.cmdline=ask diff --git a/0583-99base-Allow-files-with-backslashes-in-hostonly-file.patch b/0583-99base-Allow-files-with-backslashes-in-hostonly-file.patch new file mode 100644 index 0000000..e7351ab --- /dev/null +++ b/0583-99base-Allow-files-with-backslashes-in-hostonly-file.patch @@ -0,0 +1,25 @@ +From 7117bf627028298970d8a6a5e153e1942f3430f3 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Fri, 19 Oct 2018 14:30:36 +0200 +Subject: [PATCH 1/2] 99base: Allow files with backslashes in hostonly files + +Files with blackslashes are routinely by systemd. + +Reference: bsc#1090884 +--- + modules.d/99base/dracut-lib.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: dracut-044/modules.d/99base/dracut-lib.sh +=================================================================== +--- dracut-044.orig/modules.d/99base/dracut-lib.sh ++++ dracut-044/modules.d/99base/dracut-lib.sh +@@ -1291,7 +1291,7 @@ show_memstats() + remove_hostonly_files() { + rm -fr /etc/cmdline /etc/cmdline.d/*.conf "$hookdir/initqueue/finished" + if [ -f /lib/dracut/hostonly-files ]; then +- while read line || [ -n "$line" ]; do ++ while read -r line || [ -n "$line" ]; do + [ -e "$line" ] || [ -h "$line" ] || continue + rm -f "$line" + done < /lib/dracut/hostonly-files diff --git a/0584-95dasd_rules-mark-dasd-rules-host_only.patch b/0584-95dasd_rules-mark-dasd-rules-host_only.patch new file mode 100644 index 0000000..7c0dba4 --- /dev/null +++ b/0584-95dasd_rules-mark-dasd-rules-host_only.patch @@ -0,0 +1,26 @@ +From b38b7fef36333a59890233dccfbbb6d2c40ebe83 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Fri, 19 Oct 2018 14:39:30 +0200 +Subject: [PATCH 2/2] 95dasd_rules: mark dasd rules host_only + +Reference: bsc#1090884 +--- + modules.d/95dasd_rules/module-setup.sh | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/modules.d/95dasd_rules/module-setup.sh b/modules.d/95dasd_rules/module-setup.sh +index 488400c3..124dbad9 100755 +--- a/modules.d/95dasd_rules/module-setup.sh ++++ b/modules.d/95dasd_rules/module-setup.sh +@@ -54,6 +54,8 @@ install() { + if [[ $hostonly ]] ; then + inst_rules_wildcard 51-dasd-*.rules + inst_rules_wildcard 41-s390x-dasd-*.rules ++ mark_hostonly /etc/udev/rules.d/51-dasd-*.rules ++ mark_hostonly /etc/udev/rules.d/41-s390x-dasd-*.rules + fi + inst_rules 59-dasd.rules + } +-- +2.16.4 + diff --git a/0585-emergency-mode-use-sulogin.patch b/0585-emergency-mode-use-sulogin.patch new file mode 100644 index 0000000..0d36450 --- /dev/null +++ b/0585-emergency-mode-use-sulogin.patch @@ -0,0 +1,96 @@ +From 97ce7a8179dfebe16d072d8d7355af3817512d0d Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Wed, 5 Dec 2018 16:52:45 +0100 +Subject: [PATCH] emergency mode: use sulogin + +- allow emergency login on every console + specified in the kernel cmdline +- require password for hostonly images +- emergency mode: Manually multiplex emergency infos + +This will bring all vital information to all ttys specified +as console devices, regardless of wether they hold the C flag. + +Reference: FATE#325386 +Reference: #449 +--- + modules.d/98dracut-systemd/dracut-emergency.sh | 29 +++++++++++++++----------- + modules.d/98dracut-systemd/module-setup.sh | 2 ++ + modules.d/99base/module-setup.sh | 8 +++++-- + 3 files changed, 25 insertions(+), 14 deletions(-) + +Index: dracut-044/modules.d/98dracut-systemd/dracut-emergency.sh +=================================================================== +--- dracut-044.orig/modules.d/98dracut-systemd/dracut-emergency.sh ++++ dracut-044/modules.d/98dracut-systemd/dracut-emergency.sh +@@ -17,20 +17,26 @@ source_hook "$hook" + + if getargbool 1 rd.shell -d -y rdshell || getarg rd.break -d rdbreak; then + FSTXT="/usr/share/fsck/fsck_help_$fstype.txt" ++ RDSOSREPORT="$(rdsosreport)" + echo +- rdsosreport +- echo +- echo +- echo 'Entering emergency mode. Exit the shell to continue.' +- echo 'Type "journalctl" to view system logs.' +- echo 'You might want to save "/run/initramfs/rdsosreport.txt" to a USB stick or /boot' +- echo 'after mounting them and attach it to a bug report.' +- echo +- echo +- [ -f $FSTXT ] && cat $FSTXT ++ while read _tty rest; do ++ ( ++ echo ++ echo $RDSOSREPORT ++ echo ++ echo ++ echo 'Entering emergency mode. Exit the shell to continue.' ++ echo 'Type "journalctl" to view system logs.' ++ echo 'You might want to save "/run/initramfs/rdsosreport.txt" to a USB stick or /boot' ++ echo 'after mounting them and attach it to a bug report.' ++ echo ++ echo ++ [ -f "$FSTXT" ] && cat "$FSTXT" ++ ) > /dev/$_tty ++ done < /dev/consoles + [ -f /etc/profile ] && . /etc/profile + [ -z "$PS1" ] && export PS1="$_name:\${PWD}# " +- exec sh -i -l ++ exec sulogin -e + else + warn "$action has failed. To debug this issue add \"rd.shell rd.debug\" to the kernel command line." + exit 1 +Index: dracut-044/modules.d/98dracut-systemd/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/98dracut-systemd/module-setup.sh ++++ dracut-044/modules.d/98dracut-systemd/module-setup.sh +@@ -59,5 +59,7 @@ install() { + done + + inst_simple "$moddir/dracut-tmpfiles.conf" "$tmpfilesdir/dracut-tmpfiles.conf" ++ ++ inst_multiple sulogin + } + +Index: dracut-044/modules.d/99base/module-setup.sh +=================================================================== +--- dracut-044.orig/modules.d/99base/module-setup.sh ++++ dracut-044/modules.d/99base/module-setup.sh +@@ -26,9 +26,13 @@ install() { + (ln -s bash "${initdir}/bin/sh" || :) + fi + +- #add common users in /etc/passwd, it will be used by nfs/ssh currently +- egrep '^root:' "$initdir/etc/passwd" 2>/dev/null || echo 'root:x:0:0::/root:/bin/sh' >> "$initdir/etc/passwd" +- egrep '^nobody:' /etc/passwd >> "$initdir/etc/passwd" ++ # add common users in /etc/passwd, it will be used by nfs/ssh currently ++ # use password for hostonly images to facilitate secure sulogin in emergency console ++ [[ $hostonly ]] && pwshadow='x' ++ grep '^root:' "$initdir/etc/passwd" 2>/dev/null || echo "root:$pwshadow:0:0::/root:/bin/sh" >> "$initdir/etc/passwd" ++ grep '^nobody:' /etc/passwd >> "$initdir/etc/passwd" ++ ++ [[ $hostonly ]] && grep '^root:' /etc/shadow >> "$initdir/etc/shadow" + + # install our scripts and hooks + inst_script "$moddir/init.sh" "/init" diff --git a/0586-95zfcp_rules-parse-zfcp.sh-remove-rule-existence-check.patch b/0586-95zfcp_rules-parse-zfcp.sh-remove-rule-existence-check.patch new file mode 100644 index 0000000..5f00488 --- /dev/null +++ b/0586-95zfcp_rules-parse-zfcp.sh-remove-rule-existence-check.patch @@ -0,0 +1,12 @@ +diff -ur dracut-044.orig/modules.d/95zfcp_rules/parse-zfcp.sh dracut-044/modules.d/95zfcp_rules/parse-zfcp.sh +--- dracut-044.orig/modules.d/95zfcp_rules/parse-zfcp.sh 2018-12-21 11:52:21.457034071 +0100 ++++ dracut-044/modules.d/95zfcp_rules/parse-zfcp.sh 2018-12-21 11:56:19.179414976 +0100 +@@ -22,8 +22,6 @@ + return 0; + fi + +- [ -e ${_rule} ] && return 0 +- + if [ ! -f "$_rule" ] ; then + cat > $_rule < +Date: Sun, 20 Jan 2019 21:56:05 +0100 +Subject: [PATCH] Fix a missing space in example configs + +It has + +omit_drivers+=" i2o_scsi" + +which would break the next omit_drivers+="foo " if it's +missing a space at the beginning. + +Reference: boo#1121251 +--- + dracut.conf.d/gentoo.conf.example | 2 +- + dracut.conf.d/suse.conf.example | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/dracut.conf.d/gentoo.conf.example b/dracut.conf.d/gentoo.conf.example +index 26e73147..df102e00 100644 +--- a/dracut.conf.d/gentoo.conf.example ++++ b/dracut.conf.d/gentoo.conf.example +@@ -12,4 +12,4 @@ ro_mnt=yes + i18n_vars="/etc/conf.d/keymaps:keymap-KEYMAP,extended_keymaps-EXT_KEYMAPS /etc/conf.d/consolefont:consolefont-FONT,consoletranslation-FONT_MAP /etc/rc.conf:unicode-UNICODE" + i18n_default_font="LatArCyrHeb-16" + +-omit_drivers+=" i2o_scsi" ++omit_drivers+=" i2o_scsi " +diff --git a/dracut.conf.d/suse.conf.example b/dracut.conf.d/suse.conf.example +index 37ffd72b..e1d800c8 100644 +--- a/dracut.conf.d/suse.conf.example ++++ b/dracut.conf.d/suse.conf.example +@@ -10,7 +10,7 @@ hostonly_cmdline="yes" + compress="xz -0 --check=crc32 --memlimit-compress=50%" + + i18n_vars="/etc/sysconfig/language:RC_LANG-LANG,RC_LC_ALL-LC_ALL /etc/sysconfig/console:CONSOLE_UNICODEMAP-FONT_UNIMAP,CONSOLE_FONT-FONT,CONSOLE_SCREENMAP-FONT_MAP /etc/sysconfig/keyboard:KEYTABLE-KEYMAP" +-omit_drivers+=" i2o_scsi" ++omit_drivers+=" i2o_scsi " + + # Below adds additional tools to the initrd which are not urgently necessary to + # bring up the system, but help to debug problems. +-- +2.16.4 + diff --git a/0588-Ensure-mmc-host-modules-get-included-properly.patch b/0588-Ensure-mmc-host-modules-get-included-properly.patch new file mode 100644 index 0000000..99470f9 --- /dev/null +++ b/0588-Ensure-mmc-host-modules-get-included-properly.patch @@ -0,0 +1,41 @@ +From 68777f36a4041f520197531e94a1b909801e67d9 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Mon, 21 Jan 2019 14:21:14 +0100 +Subject: [PATCH] Ensure mmc host modules get included properly + +This fixes an in incorrect part of the backport in +1229cbc091ac11434b0b628d58630ce4c8fbe8e3 +aka Adjust-driver-list-to-modern-kernels.patch + +Patch is not applicable for 049 + +Reference: bsc#1119037 +--- + modules.d/90kernel-modules/module-setup.sh | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/modules.d/90kernel-modules/module-setup.sh b/modules.d/90kernel-modules/module-setup.sh +index cc6a9309..79e615a6 100755 +--- a/modules.d/90kernel-modules/module-setup.sh ++++ b/modules.d/90kernel-modules/module-setup.sh +@@ -5,6 +5,9 @@ installkernel() { + if [[ -z $drivers ]]; then + block_module_filter() { + local _blockfuncs='ahci_platform_get_resources|ata_scsi_ioctl|scsi_add_host|blk_cleanup_queue|register_mtd_blktrans|scsi_esp_register|register_virtio_device|usb_stor_disconnect|mmc_add_host|sdhci_add_host' ++ if [[ "$(uname -m)" == arm* || "$(uname -m)" == aarch64 ]]; then ++ _blockfuncs+='|dw_mc_probe|dw_mci_pltfm_register' ++ fi + # subfunctions inherit following FDs + local _merge=8 _side2=9 + function bmf1() { +@@ -59,7 +62,6 @@ installkernel() { + + if [[ "$(uname -m)" == arm* || "$(uname -m)" == aarch64 ]]; then + # arm/aarch64 specific modules +- _blockfuncs+='|dw_mc_probe|dw_mci_pltfm_register' + instmods \ + "=drivers/clk" \ + "=drivers/dma" \ +-- +2.16.4 + diff --git a/0589-Fix-98dracut-systemd-dracut-emergency.sh.patch b/0589-Fix-98dracut-systemd-dracut-emergency.sh.patch new file mode 100644 index 0000000..97e57a0 --- /dev/null +++ b/0589-Fix-98dracut-systemd-dracut-emergency.sh.patch @@ -0,0 +1,31 @@ +From 0d08f43d7137e10cbbf7390809c4659128f8a2ea Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?B=C3=B6sz=C3=B6rm=C3=A9nyi=20Zolt=C3=A1n?= +Date: Tue, 12 Feb 2019 12:55:32 +0100 +Subject: [PATCH] Fix 98dracut-systemd/dracut-emergency.sh +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +/dev/consoles does not exist. It's /proc/consoles. + +Signed-off-by: Böszörményi Zoltán +--- + modules.d/98dracut-systemd/dracut-emergency.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/98dracut-systemd/dracut-emergency.sh b/modules.d/98dracut-systemd/dracut-emergency.sh +index 1a11220b..864f13ba 100755 +--- a/modules.d/98dracut-systemd/dracut-emergency.sh ++++ b/modules.d/98dracut-systemd/dracut-emergency.sh +@@ -31,7 +31,7 @@ if getargbool 1 rd.shell -d -y rdshell || getarg rd.break -d rdbreak; then + echo + [ -f "$FSTXT" ] && cat "$FSTXT" + ) > /dev/$_tty +- done < /dev/consoles ++ done < /proc/consoles + [ -f /etc/profile ] && . /etc/profile + [ -z "$PS1" ] && export PS1="$_name:\${PWD}# " + exec sulogin -e +-- +2.16.4 + diff --git a/0590-00systemd-check-if-systemd-version-is-a-number.patch b/0590-00systemd-check-if-systemd-version-is-a-number.patch new file mode 100644 index 0000000..7d1b4f1 --- /dev/null +++ b/0590-00systemd-check-if-systemd-version-is-a-number.patch @@ -0,0 +1,37 @@ +From 53cb081b4c3afa843022d8e6156bdbd4808db4a2 Mon Sep 17 00:00:00 2001 +From: Frantisek Sumsal +Date: Fri, 4 Jan 2019 16:51:15 +0100 +Subject: [PATCH] 00systemd: check if systemd version is a number + +The recent systemd upstream introduced a slightly modified version +string which included information about a git commit, which however +broke the version check in dracut. Unfortunately, the (( )) bash syntax +went along with it in certain cases and introduced a pretty nasty issue, +when the systemd would boot up but with slightly changed environment. + +To prevent this from happening in the future, let's at least check if +the version parsed from the `systemd --version` output is a comparable +number. +--- + modules.d/00systemd/module-setup.sh | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/modules.d/00systemd/module-setup.sh b/modules.d/00systemd/module-setup.sh +index 1ed4b34f..3583062b 100755 +--- a/modules.d/00systemd/module-setup.sh ++++ b/modules.d/00systemd/module-setup.sh +@@ -5,6 +5,11 @@ check() { + [[ $mount_needs ]] && return 1 + if require_binaries $systemdutildir/systemd; then + SYSTEMD_VERSION=$($systemdutildir/systemd --version | { read a b a; echo $b; }) ++ # Check if the systemd version is a valid number ++ if ! [[ $SYSTEMD_VERSION =~ ^[0-9]+$ ]]; then ++ dfatal "systemd version is not a number ($SYSTEMD_VERSION)" ++ exit 1 ++ fi + (( $SYSTEMD_VERSION >= 198 )) && return 0 + return 255 + fi +-- +2.16.4 + diff --git a/0591-91zipl-Don-t-use-contents-of-commented-lines.patch b/0591-91zipl-Don-t-use-contents-of-commented-lines.patch new file mode 100644 index 0000000..6572cd0 --- /dev/null +++ b/0591-91zipl-Don-t-use-contents-of-commented-lines.patch @@ -0,0 +1,36 @@ +From 38ccf7c8e5e19b1e7ef400ff0a77eb92531754c0 Mon Sep 17 00:00:00 2001 +From: Thomas Abraham +Date: Wed, 19 Dec 2018 18:24:41 -0500 +Subject: [PATCH] 91zipl: Don't use contents of commented lines + +Comment lines should be ignored. They should not be used for determining +the /boot/zipl device +--- + modules.d/91zipl/module-setup.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/modules.d/91zipl/module-setup.sh b/modules.d/91zipl/module-setup.sh +index d0cd75da..2f95fd55 100755 +--- a/modules.d/91zipl/module-setup.sh ++++ b/modules.d/91zipl/module-setup.sh +@@ -22,7 +22,7 @@ depends() { + installkernel() { + local _boot_zipl + +- _boot_zipl=$(sed -n 's/\(.*\)\w*\/boot\/zipl.*/\1/p' /etc/fstab) ++ _boot_zipl=$(sed -n -e '/^[[:space:]]*#/d' -e 's/\(.*\)\w*\/boot\/zipl.*/\1/p' /etc/fstab) + if [ -n "$_boot_zipl" ] ; then + eval $(blkid -s TYPE -o udev ${_boot_zipl}) + if [ -n "$ID_FS_TYPE" ] ; then +@@ -40,7 +40,7 @@ installkernel() { + cmdline() { + local _boot_zipl + +- _boot_zipl=$(sed -n 's/\(.*\)\w*\/boot\/zipl.*/\1/p' /etc/fstab) ++ _boot_zipl=$(sed -n -e '/^[[:space:]]*#/d' -e 's/\(.*\)\w*\/boot\/zipl.*/\1/p' /etc/fstab) + if [ -n "$_boot_zipl" ] ; then + echo "rd.zipl=${_boot_zipl}" + fi +-- +2.16.4 + diff --git a/0592-95iscsi-handle-qedi-like-bnx2i.patch b/0592-95iscsi-handle-qedi-like-bnx2i.patch new file mode 100644 index 0000000..9a44507 --- /dev/null +++ b/0592-95iscsi-handle-qedi-like-bnx2i.patch @@ -0,0 +1,48 @@ +From 8095b250d173b0e12f9826e7124c0781086be891 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Tue, 12 Feb 2019 16:55:26 +0100 +Subject: [PATCH] 95iscsi: handle qedi like bnx2i + +The new qedi driver needs to be handled just like +the bnx2i driver, so update 95iscsi scripts to do this. + +References: bsc#1113712 + +Signed-off-by: Lee Duncan +--- + modules.d/95iscsi/cleanup-iscsi.sh | 5 +++-- + modules.d/95iscsi/iscsiroot.sh | 9 ++++++--- + 2 files changed, 9 insertions(+), 5 deletions(-) + +Index: dracut-044/modules.d/95iscsi/cleanup-iscsi.sh +=================================================================== +--- dracut-044.orig/modules.d/95iscsi/cleanup-iscsi.sh ++++ dracut-044/modules.d/95iscsi/cleanup-iscsi.sh +@@ -1,4 +1,5 @@ + #!/bin/sh + +-[ -z "${DRACUT_SYSTEMD}" ] && [ -e /sys/module/bnx2i ] && killproc iscsiuio +- ++if [[ -z "${DRACUT_SYSTEMD}" ]] && ( [[ -e /sys/module/bnx2i ]] || [[ -e /sys/module/qedi ]] ) ; then ++ killproc iscsiuio ++fi +Index: dracut-044/modules.d/95iscsi/iscsiroot.sh +=================================================================== +--- dracut-044.orig/modules.d/95iscsi/iscsiroot.sh ++++ dracut-044/modules.d/95iscsi/iscsiroot.sh +@@ -36,9 +36,12 @@ iroot=${iroot#:} + # figured out a way how to check whether this is built-in or not + modprobe crc32c 2>/dev/null + +-if [ -z "${DRACUT_SYSTEMD}" ] && [ -e /sys/module/bnx2i ] && ! [ -e /tmp/iscsiuio-started ]; then +- iscsiuio +- > /tmp/iscsiuio-started ++# start iscsiuio if needed ++if [[ -z "${DRACUT_SYSTEMD}" ]] && \ ++ ( [[ -e /sys/module/bnx2i ]] || [[ -e /sys/module/qedi ]] ) && \ ++ ! [ -e /tmp/iscsiuio-started ]; then ++ iscsiuio ++ > /tmp/iscsiuio-started + fi + + #set value for initial login retry diff --git a/0593-dracut-only-copy-xattr-if-root.patch b/0593-dracut-only-copy-xattr-if-root.patch new file mode 100644 index 0000000..8cca39a --- /dev/null +++ b/0593-dracut-only-copy-xattr-if-root.patch @@ -0,0 +1,33 @@ +From 97b36b154ce40f91b1c73a610c796965a569b637 Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Mon, 18 Feb 2019 14:21:05 +0100 +Subject: [PATCH] dracut: only copy xattr, if root + +(Cherry-picked from 076fcd1652af25f57aae063fda3b8c39ef828ac6) +--- + install/dracut-install.c | 9 +++++++-- + 1 file changed, 7 insertions(+), 2 deletions(-) + +diff --git a/install/dracut-install.c b/install/dracut-install.c +index a7bfdb8c..381327c2 100644 +--- a/install/dracut-install.c ++++ b/install/dracut-install.c +@@ -222,8 +222,13 @@ static int cp(const char *src, const char *dst) + if (ret == 0) { + struct timeval tv[2]; + if (fchown(dest_desc, sb.st_uid, sb.st_gid) != 0) +- if(fchown(dest_desc, (uid_t) - 1, sb.st_gid) != 0) +- log_error("Failed to chown %s: %m", dst); ++ if(fchown(dest_desc, (uid_t) - 1, sb.st_gid) != 0) { ++ if (geteuid() == 0) ++ log_error("Failed to chown %s: %m", dst); ++ else ++ log_info("Failed to chown %s: %m", dst); ++ } ++ + tv[0].tv_sec = sb.st_atime; + tv[0].tv_usec = 0; + tv[1].tv_sec = sb.st_mtime; +-- +2.16.4 + diff --git a/0594-Check-SUSE-kernel-module-dependencies-recursively.patch b/0594-Check-SUSE-kernel-module-dependencies-recursively.patch new file mode 100644 index 0000000..5343e13 --- /dev/null +++ b/0594-Check-SUSE-kernel-module-dependencies-recursively.patch @@ -0,0 +1,28 @@ +From 6ead8ad47fa141eca039c45f09805808a5ff7d4d Mon Sep 17 00:00:00 2001 +From: Daniel Molkentin +Date: Mon, 11 Mar 2019 17:35:14 +0100 +Subject: [PATCH] Check SUSE kernel module dependencies recursively + +This fixes commit f29f334cf1638594f90bbf3e775917c610232785 + +Reference: bsc#1127891 +--- + dracut-init.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dracut-init.sh b/dracut-init.sh +index 65597ffa..74e2086d 100644 +--- a/dracut-init.sh ++++ b/dracut-init.sh +@@ -954,7 +954,7 @@ for_each_kmod_dep() { + for suse_mod_dep in ${suse_mod_deps["${_kmod%.ko*}"]}; do + _modpath=$(modinfo -k "$kernel" -F filename "$suse_mod_dep" 2> /dev/null) + [ -n "$_modpath" ] || continue +- for_each_kmod_dep "$_func" "$_modpath" "$@" ++ for_each_kmod_dep "$_func" $(basename "${_modpath%.ko*}") "$@" + $_func ${_modpath} || exit $? + done + } +-- +2.16.4 + diff --git a/0595-iscsi-don-t-continue-waiting-if-the-root-device-is-p.patch b/0595-iscsi-don-t-continue-waiting-if-the-root-device-is-p.patch new file mode 100644 index 0000000..7ac47cf --- /dev/null +++ b/0595-iscsi-don-t-continue-waiting-if-the-root-device-is-p.patch @@ -0,0 +1,42 @@ +From 06d95ed6eb72ad9b1a4666b3d7cb6977e5b83ca5 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Thu, 21 Mar 2019 16:27:04 +0100 +Subject: [PATCH 1/6] iscsi: don't continue waiting if the root device is + present + +dracut waits for every iscsiroot connection to be established +before switching root. This is not necessary in multipath scenarios, +where a single path is usually sufficient to set up the root device, +and where users expect booting to succeed unless all paths are down. + +Don't wait for the iscsi portal to start if the root device has +already been found. +--- + modules.d/95iscsi/parse-iscsiroot.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/modules.d/95iscsi/parse-iscsiroot.sh b/modules.d/95iscsi/parse-iscsiroot.sh +index f884e684..b96605ef 100755 +--- a/modules.d/95iscsi/parse-iscsiroot.sh ++++ b/modules.d/95iscsi/parse-iscsiroot.sh +@@ -84,7 +84,7 @@ if [ -n "$iscsi_firmware" ]; then + modprobe -b -q iscsi_boot_sysfs 2>/dev/null + modprobe -b -q iscsi_ibft + # if no ip= is given, but firmware +- echo "[ -f '/tmp/iscsistarted-firmware' ]" > $hookdir/initqueue/finished/iscsi_started.sh ++ echo "${DRACUT_SYSTEMD+systemctl is-active initrd-root-device.target || }[ -f '/tmp/iscsistarted-firmware' ]" > $hookdir/initqueue/finished/iscsi_started.sh + initqueue --unique --online /sbin/iscsiroot online "iscsi:" "$NEWROOT" + initqueue --unique --onetime --timeout /sbin/iscsiroot timeout "iscsi:" "$NEWROOT" + initqueue --unique --onetime --settled /sbin/iscsiroot online "iscsi:" "'$NEWROOT'" +@@ -147,7 +147,7 @@ for nroot in $(getargs netroot); do + type parse_iscsi_root >/dev/null 2>&1 || . /lib/net-lib.sh + parse_iscsi_root "$nroot" || return 1 + netroot_enc=$(str_replace "$nroot" '/' '\2f') +- echo "[ -f '/tmp/iscsistarted-$netroot_enc' ]" > $hookdir/initqueue/finished/iscsi_started.sh ++ echo "${DRACUT_SYSTEMD+systemctl is-active initrd-root-device.target || }[ -f '/tmp/iscsistarted-$netroot_enc' ]" > $hookdir/initqueue/finished/iscsi_started.sh + done + + # Done, all good! +-- +2.16.4 + diff --git a/0596-network-stop-waiting-for-interfaces-if-root-device-i.patch b/0596-network-stop-waiting-for-interfaces-if-root-device-i.patch new file mode 100644 index 0000000..427c41b --- /dev/null +++ b/0596-network-stop-waiting-for-interfaces-if-root-device-i.patch @@ -0,0 +1,26 @@ +From 9aeceb14e010d68f8ee92f60664eef39d57552c2 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Thu, 21 Mar 2019 21:31:15 +0100 +Subject: [PATCH 2/6] network: stop waiting for interfaces if root device is + present + +--- + modules.d/40network/net-genrules.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules.d/40network/net-genrules.sh b/modules.d/40network/net-genrules.sh +index 843bd988..a5a9ae22 100755 +--- a/modules.d/40network/net-genrules.sh ++++ b/modules.d/40network/net-genrules.sh +@@ -86,7 +86,7 @@ command -v fix_bootif >/dev/null || . /lib/net-lib.sh + + for iface in $wait_ifaces; do + if [ "$bootdev" = "$iface" ] || [ "$NEEDNET" = "1" ]; then +- echo "[ -f /tmp/net.${iface}.did-setup ]" >$hookdir/initqueue/finished/wait-$iface.sh ++ echo "${DRACUT_SYSTEMD+systemctl is-active initrd-root-device.target || }[ -f /tmp/net.${iface}.did-setup ]" >$hookdir/initqueue/finished/wait-$iface.sh + fi + done + # Default: We don't know the interface to use, handle all +-- +2.16.4 + diff --git a/0597-iscsiroot-parse_iscsi_root-overwrites-command-line-a.patch b/0597-iscsiroot-parse_iscsi_root-overwrites-command-line-a.patch new file mode 100644 index 0000000..2d60e45 --- /dev/null +++ b/0597-iscsiroot-parse_iscsi_root-overwrites-command-line-a.patch @@ -0,0 +1,38 @@ +From a9ef0960799ad8d95de2e13a9f8773e88826e83e Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Thu, 4 Apr 2019 15:29:04 +0200 +Subject: [PATCH 3/6] iscsiroot: parse_iscsi_root overwrites command line args + +iscsi_target_name, iscsi_target_ip, iscsi_target_port are +unconditionally overwritten by parse_iscsi_root. Don't set +them here, for code clarity. +--- + modules.d/95iscsi/iscsiroot.sh | 8 ++------ + 1 file changed, 2 insertions(+), 6 deletions(-) + +Index: dracut-044/modules.d/95iscsi/iscsiroot.sh +=================================================================== +--- dracut-044.orig/modules.d/95iscsi/iscsiroot.sh ++++ dracut-044/modules.d/95iscsi/iscsiroot.sh +@@ -102,12 +102,6 @@ handle_netroot() + # override conf settings by command line options + arg=$(getarg rd.iscsi.initiator -d iscsi_initiator=) + [ -n "$arg" ] && iscsi_initiator=$arg +- arg=$(getargs rd.iscsi.target.name -d iscsi_target_name=) +- [ -n "$arg" ] && iscsi_target_name=$arg +- arg=$(getarg rd.iscsi.target.ip -d iscsi_target_ip) +- [ -n "$arg" ] && iscsi_target_ip=$arg +- arg=$(getarg rd.iscsi.target.port -d iscsi_target_port=) +- [ -n "$arg" ] && iscsi_target_port=$arg + arg=$(getarg rd.iscsi.target.group -d iscsi_target_group=) + [ -n "$arg" ] && iscsi_target_group=$arg + arg=$(getarg rd.iscsi.username -d iscsi_username=) +@@ -122,6 +116,8 @@ handle_netroot() + iscsi_param="$iscsi_param $p" + done + ++ # this sets iscsi_target_name and possibly overwrites most ++ # parameters read from the command line above + parse_iscsi_root "$1" || return 1 + + # Bail out early, if there is no route to the destination diff --git a/0598-iscsiroot-there-s-never-more-than-one-target-per-cal.patch b/0598-iscsiroot-there-s-never-more-than-one-target-per-cal.patch new file mode 100644 index 0000000..2b2393d --- /dev/null +++ b/0598-iscsiroot-there-s-never-more-than-one-target-per-cal.patch @@ -0,0 +1,27 @@ +From 04657e60f00d53f52d47b7fd02b53618762340e4 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Thu, 4 Apr 2019 15:40:14 +0200 +Subject: [PATCH 4/6] iscsiroot: there's never more than one target per call + +iscsi_target_name is set by iscsi_root, and thus can't have +more than one member. This allows us to get rid of one bashism +in iscsiroot.sh. +--- + modules.d/95iscsi/iscsiroot.sh | 9 +++------ + 1 file changed, 3 insertions(+), 6 deletions(-) + +Index: dracut-044/modules.d/95iscsi/iscsiroot.sh +=================================================================== +--- dracut-044.orig/modules.d/95iscsi/iscsiroot.sh ++++ dracut-044/modules.d/95iscsi/iscsiroot.sh +@@ -221,8 +221,8 @@ handle_netroot() + [ -z "$targets" ] && echo "Target discovery to $iscsi_target_ip:${iscsi_target_port:+$iscsi_target_port} failed with status $?" && exit 1 + fi + +- for target in $iscsi_target_name; do +- if [[ "$targets" =~ "$target" ]]; then ++ for target in $targets; do ++ if [ "$target" = "$iscsi_target_name" ]; then + if [ -n "$iscsi_iface_name" ]; then + $(iscsiadm -m iface -I $iscsi_iface_name --op=new) + [ -n "$iscsi_initiator" ] && $(iscsiadm -m iface -I $iscsi_iface_name --op=update --name=iface.initiatorname --value=$iscsi_initiator) diff --git a/0599-iscsiroot-try-targets-only-once.patch b/0599-iscsiroot-try-targets-only-once.patch new file mode 100644 index 0000000..82a0fce --- /dev/null +++ b/0599-iscsiroot-try-targets-only-once.patch @@ -0,0 +1,37 @@ +From 1fd34ae26591701e27577e381dc284248e3bf6e2 Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Thu, 4 Apr 2019 16:16:40 +0200 +Subject: [PATCH 5/6] iscsiroot: try targets only once + +In multipath scenarios, "iscsiadm -m node" may contain +several records with the same target. +There's no point in trying "iscsiadm --login" multiple +time for the same target, through the same portal. + +Moreover, warn if the desired target is not on the node +list. +--- + modules.d/95iscsi/iscsiroot.sh | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +Index: dracut-044/modules.d/95iscsi/iscsiroot.sh +=================================================================== +--- dracut-044.orig/modules.d/95iscsi/iscsiroot.sh ++++ dracut-044/modules.d/95iscsi/iscsiroot.sh +@@ -97,7 +97,7 @@ handle_netroot() + local iscsi_in_username iscsi_in_password + local iscsi_iface_name iscsi_netdev_name + local iscsi_param param +- local p ++ local p found + + # override conf settings by command line options + arg=$(getarg rd.iscsi.initiator -d iscsi_initiator=) +@@ -221,6 +221,7 @@ handle_netroot() + [ -z "$targets" ] && echo "Target discovery to $iscsi_target_ip:${iscsi_target_port:+$iscsi_target_port} failed with status $?" && exit 1 + fi + ++ found= + for target in $targets; do + if [ "$target" = "$iscsi_target_name" ]; then + if [ -n "$iscsi_iface_name" ]; then diff --git a/0600-iscsiroot-remove-bashisms.patch b/0600-iscsiroot-remove-bashisms.patch new file mode 100644 index 0000000..96f0c8a --- /dev/null +++ b/0600-iscsiroot-remove-bashisms.patch @@ -0,0 +1,69 @@ +From c14a550d54b408088fd0aa14a4f2088f8b45237e Mon Sep 17 00:00:00 2001 +From: Martin Wilck +Date: Thu, 4 Apr 2019 17:12:07 +0200 +Subject: [PATCH 6/6] iscsiroot: remove bashisms + +According to the dracut README, module code to be run in +the initrd must be POSIX-compliant. Replace remaining +bashisms (as reported by checkbashisms) with POSIX compliant +code. + +The use of "type" is not strictly POSIX compliant, but it's +all over the place in dracut code. dash supports it, anyway. +--- + modules.d/95iscsi/iscsiroot.sh | 16 +++++++++------- + 1 file changed, 9 insertions(+), 7 deletions(-) + +diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh +index 73dd8c20..c00a9f58 100755 +--- a/modules.d/95iscsi/iscsiroot.sh ++++ b/modules.d/95iscsi/iscsiroot.sh +@@ -61,11 +61,11 @@ handle_firmware() + if ! iscsiadm -m fw; then + warn "iscsiadm: Could not get list of targets from firmware." + else +- ifaces=( $(echo /sys/firmware/ibft/ethernet*) ) ++ ifaces=$(set -- /sys/firmware/ibft/ethernet*; echo $#) + retry=$(cat /tmp/session-retry) + +- if [ $retry -lt ${#ifaces[*]} ]; then +- let retry++ ++ if [ $retry -lt $ifaces ]; then ++ retry=$((retry+1)) + echo $retry > /tmp/session-retry + return 1 + else +@@ -95,6 +95,7 @@ handle_netroot() + local iscsi_iface_name iscsi_netdev_name + local iscsi_param param + local p found ++ local login_retry_max_seen= + + # override conf settings by command line options + arg=$(getarg rd.iscsi.initiator -d iscsi_initiator=) +@@ -110,7 +111,9 @@ handle_netroot() + arg=$(getarg rd.iscsi.in.password -d iscsi_in_password=) + [ -n "$arg" ] && iscsi_in_password=$arg + for p in $(getargs rd.iscsi.param -d iscsi_param); do +- iscsi_param="$iscsi_param $p" ++ [ "${p%=*}" = node.session.initial_login_retry_max ] && \ ++ login_retry_max_seen=yes ++ iscsi_param="$iscsi_param $p" + done + + # this sets iscsi_target_name and possibly overwrites most +@@ -123,9 +126,8 @@ handle_netroot() + fi + + #limit iscsistart login retries +- if [[ ! "$iscsi_param" =~ "node.session.initial_login_retry_max" ]]; then +- set_login_retries +- retries=$? ++ if [ "$login_retry_max_seen" != yes ]; then ++ retries=$(getargnum 3 0 10000 rd.iscsi.login_retry_max) + if [ $retries -gt 0 ]; then + iscsi_param="${iscsi_param% } node.session.initial_login_retry_max=$retries" + fi +-- +2.16.4 + diff --git a/0601-base-dracut-lib.sh-dev_unit_name-guard-against-dev-b.patch b/0601-base-dracut-lib.sh-dev_unit_name-guard-against-dev-b.patch new file mode 100644 index 0000000..c43484f --- /dev/null +++ b/0601-base-dracut-lib.sh-dev_unit_name-guard-against-dev-b.patch @@ -0,0 +1,32 @@ +From 33348c63393d6fca3b6070dfdf108bff7b59d53b 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 89235b04..45ef31b6 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.16.4 + diff --git a/99-debug.conf b/99-debug.conf new file mode 100644 index 0000000..c356fc8 --- /dev/null +++ b/99-debug.conf @@ -0,0 +1,10 @@ +# Below adds additional tools to the initrd which are not urgently necessary to +# bring up the system, but help to debug problems. +# See /usr/lib/dracut/modules.d/95debug/module-setup.sh which additional tools +# are installed and add more if you need them. This specifically helps if you +# use: +# rd.break=[cmdline|pre-udev|pre-trigger|initqueue|pre-mount| +# mount|pre-pivot|cleanup] +# boot parameter or if you are forced to enter the dracut emergency shell. + +# add_dracutmodules+=debug diff --git a/README.susemaint b/README.susemaint deleted file mode 100644 index bcc47b5..0000000 --- a/README.susemaint +++ /dev/null @@ -1,25 +0,0 @@ -Maintaining Dracut -================== - -1. Adding/Submitting patches: - -Patches get added as merge requests on Github against the respective maintenance branch. -If the dracut version is 049, the maintenance branch is SUSE/049. Please make sure -to provide an adiquate patch description. If you fix a modules, please prepend the module -name in the first line. Also add bugzilla and fate references in their own line: - - 99example: Provide a useful description - - Explain the use cases for the module in more detail, give a general summary of - its purpose. - - Reference: bsc#4566 - -2. Updating the OBS repo from git: - - rm dracut*.xz - rm dracut*.obscpio - osc service localrun - osc ar - osc commit - osc sr diff --git a/_service b/_service deleted file mode 100644 index 0a3e84c..0000000 --- a/_service +++ /dev/null @@ -1,17 +0,0 @@ - - - git - https://github.com/opensuse/dracut.git - SUSE/049 - @PARENT_TAG@+git@TAG_OFFSET@.%h - suse/dracut.spec - suse/README.susemaint - enable - - - - *.tar - xz - - - diff --git a/_servicedata b/_servicedata deleted file mode 100644 index 7fb677b..0000000 --- a/_servicedata +++ /dev/null @@ -1,4 +0,0 @@ - - - https://github.com/opensuse/dracut.git - aef7a52b5e7daf33d87e46e82d581d35847bc3eb \ No newline at end of file diff --git a/dracut-044.tar.xz b/dracut-044.tar.xz new file mode 100644 index 0000000..37f03da --- /dev/null +++ b/dracut-044.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84b97c9b0120e9fde06c3b9cf2ede1c4632cccd8e085e980b9ec9c788655af05 +size 280004 diff --git a/dracut-049+git94.aef7a52b.obscpio b/dracut-049+git94.aef7a52b.obscpio deleted file mode 100644 index 11907e3..0000000 --- a/dracut-049+git94.aef7a52b.obscpio +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cb8f356ffa5272e1a980be60c84647095ef6edaad088607b426b67ec71ad115f -size 1658892 diff --git a/dracut-049+git94.aef7a52b.tar.xz b/dracut-049+git94.aef7a52b.tar.xz deleted file mode 100644 index c7b6755..0000000 --- a/dracut-049+git94.aef7a52b.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:17a3bbd4f1c342c8d6837a31afbe16bd7659179e104281a93e80039bd2712570 -size 293576 diff --git a/dracut-installkernel b/dracut-installkernel new file mode 100644 index 0000000..9a3ec99 --- /dev/null +++ b/dracut-installkernel @@ -0,0 +1,112 @@ +#! /bin/sh +# +# /sbin/installkernel - written by tyson@rwii.com +# +# May 21, 2003 - agruen@suse.de +# * Adapted for SuSE and cleaned up. +# November 21, 2018 - jdelvare@suse.de +# * Stop creating .old files. +# + +: ${INSTALL_PATH:=/boot} +KERNEL_VERSION=$1 +BOOTIMAGE=$2 +MAPFILE=$3 +CONFIGFILE=config-$KERNEL_VERSION + +case "$(uname -m)" in + s390|s390x) + BOOTFILE=image + ;; + ppc|ppc64) + BOOTFILE=vmlinux + ;; + aarch64) + BOOTFILE=Image + ;; + armv*) + BOOTFILE=zImage + ;; + *) + BOOTFILE=vmlinuz + ;; +esac + +# +# Install new files +# + +cp -fp $BOOTIMAGE $INSTALL_PATH/$BOOTFILE-$KERNEL_VERSION +cp -fp $MAPFILE $INSTALL_PATH/System.map-$KERNEL_VERSION +[ -f .config ] && cp -fp .config $INSTALL_PATH/$CONFIGFILE + + +# If the kernel has module support, recreate modules.dep using depmod +# since the contents of modules.dep do not have a consistent format across +# releases. + +if [ -x /sbin/depmod -a -d /lib/modules/$KERNEL_VERSION ]; then + /sbin/depmod $KERNEL_VERSION; +fi + +function check_supported() +{ + local MOD_SUPP_FILE="/etc/modprobe.d/10-unsupported-modules.conf" + local MOD_SUPP_REGEX="^\s*allow_unsupported_modules\s+0\s*$" + local cfg="$1" + + if [ ! -e "$cfg" ]; then return; fi + + local tmp=$(modprobe --showconfig | grep -Eq $MOD_SUPP_REGEX) + if [ -n "$tmp" ]; then + CHECK_SUPPORTED="--check-supported" + return; + fi + + if grep -q "^CONFIG_SUSE_KERNEL_SUPPORTED=y" $cfg ; then + if [ -e $MOD_SUPP_FILE ] && grep -Eq $MOD_SUPP_REGEX $MOD_SUPP_FILE; then + CHECK_SUPPORTED="--check-supported" + fi + fi +} + +CONFIG=$(dirname $MAPFILE)/.config +CHECK_SUPPORTED= + +check_supported $CONFIG + +KERNTYPES=$(dirname $MAPFILE)/init/kerntypes.o +if [ -e $KERNTYPES ]; then + cp -fp $KERNTYPES $INSTALL_PATH/Kerntypes-$KERNEL_VERSION +fi + +case "$(uname -m)" in +i?86 | x86_64) + KERNBIN=$(dirname $MAPFILE)/vmlinux + if [ -e $KERNBIN ]; then + gzip -c $KERNBIN > $INSTALL_PATH/vmlinux-$KERNEL_VERSION.gz + fi + ;; +esac + +# +# Generate initial ramdisk +# +if [ -x /usr/bin/dracut -a -d /lib/modules/$KERNEL_VERSION ]; then + /usr/bin/dracut --hostonly --force $CHECK_SUPPORTED \ + $INSTALL_PATH/initrd-$KERNEL_VERSION $KERNEL_VERSION +else + echo "You may need to create an initial ramdisk now." +fi + +# +# Update boot loader +# +if [ -x /sbin/update-bootloader ]; then + opt_initrd= + [ -e $INSTALL_PATH/initrd-$KERNEL_VERSION ] \ + && opt_initrd="--initrd $INSTALL_PATH/initrd-$KERNEL_VERSION" + /sbin/update-bootloader --name $KERNEL_VERSION \ + --image $INSTALL_PATH/$BOOTFILE-$KERNEL_VERSION \ + $opt_initrd --add --force +fi diff --git a/dracut.changes b/dracut.changes index 05562a6..f2145e5 100644 --- a/dracut.changes +++ b/dracut.changes @@ -1,239 +1,3 @@ -------------------------------------------------------------------- -Mon Jun 17 11:41:01 UTC 2019 - ext-linus.larsson@se.fujitsu.com - -- Update to version 049+git94.aef7a52b: - * ucode: properly include early only ucode - * keep network device naming scheme on upgrade (bsc#1136927) - -------------------------------------------------------------------- -Sat May 25 19:40:09 UTC 2019 - Daniel Molkentin - -- Bump to 049 -- Patches are now maintained in git - * Removed 0012-40network-Fix-race-condition-when-wait-for-networks.patch - * Removed 0013-40network-always-start-netroot-in-ifup.sh.patch - * Removed 0015-40network-replace-dhclient-with-wickedd-dhcp-supplic.patch - * Removed 0016-Add-new-s390x-specific-rule-files.patch - * Removed 0017-45ifcfg-use-distro-specific-scripts.patch - * Removed 0020-00warpclock-Set-correct-timezone.patch - * Removed 0021-95dcssblk-Add-new-module-for-DCSS-block-devices.patch - * Removed 0048-40network-Only-enable-network-interfaces-if-explicit.patch - * Removed 0053-01fips-fixup-loading-issues.patch - * Removed 0056-81cio_ignore-handle-cio_ignore-commandline.patch - * Removed 0057-01fips-Include-some-more-hmacs.patch - * Removed 0058-dracut-add-warning-when-including-unsupported-module.patch - * Removed 0059-99suse-Add-SUSE-specific-initrd-parsing.patch - * Removed 0060-45ifcfg-Add-SUSE-specific-write-ifcfg-file.patch - * Removed 0061-45ifcfg-Fixup-error-message-in-write-ifcfg-suse.patch - * Removed 0075-95dasd_rules-enable-parsing-of-rd.dasd-commandline-p.patch - * Removed 0076-Correctly-set-cio_ignore-for-dynamic-s390-rules.patch - * Removed 0079-95dasd_rules-fixup-rd.dasd-parsing.patch - * Removed 0080-95dasd_rules-print-out-rd.dasd-commandline.patch - * Removed 0081-95dasd_mod-do-not-set-module-parameters-if-dasd_cio_.patch - * Removed 0083-95zfcp_rules-Fixup-rd.zfcp-parsing.patch - * Removed 0085-95zfcp_rules-print-out-rd.zfcp-commandline-parameter.patch - * Removed 0086-95zfcp_rules-Auto-generate-udev-rule-for-ipl-device.patch - * Removed 0087-95dasd_rules-Auto-generate-udev-rule-for-ipl-device.patch - * Removed 0088-91zipl-Add-new-module-to-update-s390x-configuration.patch - * Removed 0089-40network-create-var-lib-wicked-in-ifup.sh.patch - * Removed 0090-dracut-caps-Remove-whole-caps-module.patch - * Removed 0091-dracut-biosdevname-In-SUSE-biosdevname-package-is-in.patch - * Removed 0094-Implement-shortcut-ip-ifname-static-for-static-confi.patch - * Removed 0107-Fixup-typo-firmare-instead-of-firmware.patch - * Removed 0108-91zipl-Store-commandline-correctly.patch - * Removed 0109-95dasd_rules-Store-all-devices-in-commandline.patch - * Removed 0110-95zfcp_rules-Store-all-devices-in-commandline.patch - * Removed 0113-91zipl-Install-script-as-executable.patch - * Removed 0114-91zipl-Translate-ext2-3-into-ext4.patch - * Removed 0116-Mark-scripts-as-executable.patch - * Removed 0117-95dasd_rules-Enable-the-device-before-checking-devic.patch - * Removed 0118-95zfcp_rules-Enable-the-device-before-checking-devic.patch - * Removed 0121-Adjust-initramfs-kernel.img-to-SUSE-default-initrd-k.patch - * Removed 0123-95zfcp_rules-fix-typo-in-module_setup.patch - * Removed 0124-40network-Update-iBFT-scanning-code-to-handle-IPv6.patch - * Removed 0125-40network-separate-mask-and-prefix.patch - * Removed 0126-01fips-Add-drbg-module-to-force-loaded-modules.patch - * Removed 0128-90lvm-Install-dm-snapshot-module.patch - * Removed 0130-nfs-Always-add-all-kernel-modules-for-kdump.patch - * Removed 0131-40network-handle-prefixed-IP-addresses-correctly.patch - * Removed 0132-40network-fixup-static-network-configuration.patch - * Removed 0133-Allow-multiple-configurations-per-network-interface-.patch - * Removed 0137-Switch-from-Mozilla-NSS-sha256hmac-checking-to-fipsc.patch - * Removed 0138-fips_add_aesni-intel.patch - * Removed 0139-fips-kernel-4.4-fixes.patch - * Removed 0142-40network-Don-t-report-error-for-etc-sysconfig-netwo.patch - * Removed 0144-90crypt-Fixed-crypttab_contains-to-also-work-with-de.patch - * Removed 0145-40network-handle-ip-ifname-static-correctly.patch - * Removed 0150-Find-kernel-modules-in-extra-and-weak-updates-path-a.patch - * Removed 0157-Add-boot-zipl-to-host-devs-if-it-is-a-mount-point.patch - * Removed 0158-Add-SUSE-kernel-module-dependencies-in-etc-modprobe.patch - * Removed 0159-network-Try-to-load-xennet.patch - * Removed 0160-s390-update_active_devices_initrd.patch - * Removed 0161-95zfcp_rules-simplified-rd.zfcp-commandline-for-NPIV.patch - * Removed 0162-network-Request-DHCP-lease-instead-of-getting-applyi.patch - * Removed 0163-Install-etc-sysconfig-console-to-see-specific-fonts.patch - * Removed 0164-Fix-initramfs-ver.img-vs-initrd-ver-in-dracut-initra.patch - * Removed 0168-remove_plymouth_logo_file.patch - * Removed 0169-network_set_mtu_macaddr_for_dhcp.patch - * Removed 0170-iscsi-skip-ibft-invalid-dhcp.patch - * Removed 0180-i18n_add_correct_fontmaps.patch - * Removed 0182-fix-include-parsing.patch - * Removed 0183-fix_add_drivers_hang.patch - * Removed 0188-95dasd_rules-Install-collect-udev-helper-binary.patch - * Removed 0190-replace-iscsistart-with-systemd-service-files.patch - * Removed 0191-static_network_setup_return_zero.patch - * Removed 0192-iscsi_set_boot_protocol_from_ifcfg.patch - * Removed 0193-95iscsi-Set-number-of-login-retries.patch - * Removed 0196-ibft-wait-for-session-on-all-paths.patch - * Removed 0197-95iscsi-Do-not-require-network-for-qla4xxx-flash-ses.patch - * Removed 0198-95iscsi-set-rd.iscsi.firmware-for-qla4xxx-sessions.patch - * Removed 0199-rd-iscsi-waitnet-default-false.patch - * Removed 0200-dracut_fix_multipath_without_config.patch - * Removed 0201-fix_nfs_with_ip_instead_of_hostname.patch - * Removed 0202-dracut_dmraid_use_udev.patch - * Removed 0203-no-fail-builtin-module.patch - * Removed 0204-mkinitrd-fix-monster.patch - * Removed 0205-mdraid_ignore_hostonly.patch - * Removed 0206-nfs_dns_alias.patch - * Removed 0207-handle_module_aliases.patch - * Removed 0208-no_forced_virtnet.patch - * Removed 0209-fix_modules_load_d_hostonly.patch - * Removed 0210-add_fcoe_uefi_check.patch - * Removed 0212-fcoe_reorder_init_path.patch - * Removed 0213-Fix-wrong-keymap-inclusion.patch - * Removed 0214-95fcoe-Do-not-overwrite-FCoE-configuration.patch - * Removed 0215-95fcoe-Do-not-complain-about-missing-etc-hba.conf.patch - * Removed 0216-95fcoe-silence-lldpad-warnings.patch - * Removed 0217-95fcoe-Allow-to-specify-the-FCoE-mode-via-the-fcoe-p.patch - * Removed 0218-40network-allow-persistent-interface-names.patch - * Removed 0219-95fcoe-use-interface-names-instead-of-MAC-addresses.patch - * Removed 0220-95fcoe-always-set-AUTO_VLAN-for-fcoemon.patch - * Removed 0221-95fcoe-Add-shutdown-script.patch - * Removed 0222-90dm-Fixup-shutdown-script.patch - * Removed 0223-90dm-fixup-dependency-cycle-between-MD-and-DM-shutdo.patch - * Removed 0224-95iscsi-setup-bnx2i-offload-connections-properly.patch - * Removed 0225-95fcoe-do-not-start-fcoemon-twice.patch - * Removed 0300-dracut_dont_use_dpkg_defaults_on_SUSE.patch - * Removed 0301-include_sysconfig_language.patch - * Removed 0302-Revert-90multipath-add-hostonly-multipath.conf-in-ca.patch - * Removed 0303-fix_multipath_check_hostonly.patch - * Removed 0304-90multipath-Start-daemon-after-udev-settle.patch - * Removed 0305-90multipath-load-dm_multipath-module-during-startup.patch - * Removed 0306-90multipath-add-shutdown-script.patch - * Removed 0307-90multipath-parse-kernel-commandline-option-multipat.patch - * Removed 0308-mdraid_add_IMSM_NO_PLATFORM_env.patch - * Removed 0309-90dmraid-do-not-delete-partitions.patch - * Removed 0310-95resume-Do-not-resume-on-iSCSI.patch - * Removed 0311-95iscsi-ip-ibft-is-deprecated.patch - * Removed 0312-40network-Do-not-print-message-about-tmp-net.ibft0.c.patch - * Removed 0313-90mdraid-Use-stock-MD-rules-to-assemble-RAID-arrays.patch - * Removed 0314-nfs_do_not_pass_ifname_for_bonding_devices.patch - * Removed 0402-driver-fail-summary.patch - * Removed 0403-95lunmask-Add-module-to-handle-LUN-masking.patch - * Removed 0404-dracut-emergency-optionally-print-fs-help.patch - * Removed 0450-Strip-NUL-bytes-in-stream-before-push-in-string.patch - * Removed 0451-systemd-initrd-add-initrd-root-device.target.patch - * Removed 0452-Always-try-to-add-pinctrl-cherryview.patch - * Removed 0453-Resolve-symbolic-links-for-i-and-k-parameters-bsc-90.patch - * Removed 0454-Add-md4-and-arc4-modules-for-ntlm.patch - * Removed 0500-Reset-IFS-variable.patch - * Removed 0501-dasd_fix_ssid_bigger_zero.patch - * Removed 0502-persistent_device_policy_param_enhance.patch - * Removed 0503-dracut.sh-create-the-initramfs-non-world-readable-al.patch - * Removed 0504-ibft-fix-boot-flag-check.patch - * Removed 0505-Allow-booting-from-degraded-MD-RAID-arrays.patch - * Removed 0506-Boot-on-s390x-with-fips-1-on-the-kernel-commnad-line.patch - * Removed 0507-Set-TaskMax-inifinite-for-the-emergency-shell.patch - * Removed 0508-90multipath-start-before-local-fs-pre.target.patch - * Removed 0509-01fips-Remove-zlib-module-as-requirement.patch - * Removed 0510-01fips-Some-modules-use-separators-other-than.patch - * Removed 0511-01fips-ensure-fips-initialization-succeeds-on-s390-x.patch - * Removed 0512-Make-binutils-optional-when-elfutils-are-available.patch - * Removed 0513-Fix-regression-caused-by-6f9bf2b8ac436259bdccb110545.patch - * Removed 0514-man-make-the-k-option-clear-using-mkinitrd.patch - * Removed 0515-90kernel-modules-also-add-block-device-driver-revers.patch - * Removed 0516-mkinitrd-suse.sh-Fix-prefix-calculation.patch - * Removed 0517-95fcoe-fixup-fcoe-genrules.sh-for-VN2VN-mode.patch - * Removed 0518-90kernel-modules-Fix-backlight-on-Cherrytrail-device.patch - * Removed 0519-90kernel-modules-Ensure-phy-drivers-are-loaded-in-in.patch - * Removed 0520-Ignore-module-resolution-errors.patch - * Removed 0521-Ensure-udev-persistent-storage-compat-rules-get-crea.patch - * Removed 0522-Fix-typo-from-commit-3f1cdb520.patch - * Removed 0523-98dracut-systemd-Fix-module-force-loading-with-syste.patch - * Removed 0524-Suppress-nonsensical-error-message-bsc-1032029.patch - * Removed 0525-backport-bail-out-if-module-directory-does-not-exist.patch - * Removed 0526-iscsiroot-call-handle_firmware-only-for-non-iface-in.patch - * Removed 0527-switch-fips-checking-to-use-the-libkcapi-based-fipsc.patch - * Removed 0528-Ensure-dracut.sh-responds-properly-to-hostonly_cmdli.patch - * Removed 0529-systemd-add-missing-.slice-unit.patch - * Removed 0530-dracut-systemd-dracut-cmdline-ask-fix-dracut-kernel-.patch - * Removed 0531-dracut-systemd-.service-conflict-with-shutdown-targe.patch - * Removed 0532-List-drivers-rather-than-looking-for-reverse-depende.patch - * Removed 0533-instmods-check-modules.builtin-in-srcmods.patch - * Removed 0534-ssh-client-Include-nss_-libraries.patch - * Removed 0535-Sync-initramfs-after-creation.patch - * Removed 0536-90multipath-drop-67-kpartx-compat.rules.patch - * Removed 0537-dracut-init.sh-ignore-crc32.ko-in-builtin-test.patch - * Removed 0538-Enable-core-dumps-with-systemd-from-initrd.patch - * Removed 0539-Add-IMA-functionality-fate-323289.patch - * Removed 0540-Check-the-proper-variable-for-a-custom-IMA-keys-dire.patch - * Removed 0541-Make-sure-70-persistent-net.rules-is-included-in-ini.patch - * Removed 0542-Include-crc32c-intel-module-when-using-btrfs.patch - * Removed 0543-Remove-00systemd-bootchart.patch - * Removed 0544-40network-Make-ip-dhcp-work.patch - * Removed 0545-Add-early-microcode-support-for-AMD-family-16h.patch - * Removed 0546-Support-Microcode-Updates-for-AMD-CPU-Family-0x17.patch - * Removed 0547-Fix-task-limit-in-emergency.service-the-same-change-.patch - * Removed 0548-95fcoe-Switch-back-to-using-fipvlan-for-bnx2fc.patch - * Removed 0549-fcoe-up-Increase-sleeptime-to-13s.patch - * Removed 0550-95fcoe-add-timeout-initqueue-entries.patch - * Removed 0551-fips-use-lib-modules-uname-r-modules.fips.patch - * Removed 0552-98integrity-support-validating-the-IMA-policy-file-s.patch - * Removed 0553-98integrity-support-loading-x509-into-the-trusted-bu.patch - * Removed 0554-98integrity-support-X.509-only-EVM-configuration.patch - * Removed 0555-Avoid-executing-emergency-hooks-twice.patch - * Removed 0556-95qeth_rules-Add-new-module-to-copy-qeth-rules.patch - * Removed 0557-40network-make-arping-optional.patch - * Removed 0558-40network-remove-brctl-dependency.patch - * Removed 0559-Add-wickedd-duid.xml-and-iaid.xml-if-available.patch - * Removed 0560-90kernel-modules-Ensure-PCI-host-modules-are-include.patch - * Removed 0561-Add-the-qedi-driver-to-driver-list-for-iscsi-boot.patch - * Removed 0562-Adjust-driver-list-to-modern-kernels.patch - * Removed 0563-40network-collapse-arping-and-dhcp-calls-into-wicked.patch - * Removed 0564-40network-Always-set-the-gw-variable.patch - * Removed 0565-90kernel-modules-Include-Intel-Volume-Management-Dev.patch - * Removed 0566-95nfs-If-no-server-is-configured-read-BOOTSERVERADDR.patch - * Removed 0567-Fix-booting-with-fips-1-on-SLES-15.patch - * Removed 0568-95multipath-Pickup-files-in-etc-multipath-conf.d.patch - * Removed 0569-10i18n-Load-all-keymaps-for-a-given-locale.patch - * Removed 0570-10i18n-Fix-possible-infinite-recursion.patch - * Removed 0571-40network-Fix-static-network-setup.patch - * Removed 0572-lsinitrd-no-more-cat-write-error-Broken-pipe.patch - * Removed 0573-lsinitrd.sh-quote-filename-in-extract_files.patch - * Removed 0574-s-find_btrfs_devs-btrfs_devs.patch - * Removed 0580-check_for_CONFIG_ACPI_TABLE_UPGRADE.patch - * Removed 0581-kernel-modules-add-nfit.patch - * Removed 0582-98dracut-systemd-Start-systemd-vconsole-setup-before.patch - * Removed 0583-99base-Allow-files-with-backslashes-in-hostonly-file.patch - * Removed 0584-95dasd_rules-mark-dasd-rules-host_only.patch - * Removed 0585-emergency-mode-use-sulogin.patch - * Removed 0586-95zfcp_rules-parse-zfcp.sh-remove-rule-existence-check.patch - * Removed 0587-Fix-a-missing-space-in-example-configs.patch - * Removed 0588-Ensure-mmc-host-modules-get-included-properly.patch - * Removed 0589-Fix-98dracut-systemd-dracut-emergency.sh.patch - * Removed 0590-00systemd-check-if-systemd-version-is-a-number.patch - * Removed 0591-91zipl-Don-t-use-contents-of-commented-lines.patch - * Removed 0592-95iscsi-handle-qedi-like-bnx2i.patch - * Removed 0593-dracut-only-copy-xattr-if-root.patch - * Removed 0594-Check-SUSE-kernel-module-dependencies-recursively.patch - * Removed 0595-iscsi-don-t-continue-waiting-if-the-root-device-is-p.patch - * Removed 0596-network-stop-waiting-for-interfaces-if-root-device-i.patch - * Removed 0597-iscsiroot-parse_iscsi_root-overwrites-command-line-a.patch - * Removed 0598-iscsiroot-there-s-never-more-than-one-target-per-cal.patch - * Removed 0599-iscsiroot-try-targets-only-once.patch - * Removed 0600-iscsiroot-remove-bashisms.patch - * Removed 0601-base-dracut-lib.sh-dev_unit_name-guard-against-dev-b.patch - ------------------------------------------------------------------- Thu Apr 25 23:40:25 UTC 2019 - Daniel Molkentin diff --git a/dracut.obsinfo b/dracut.obsinfo deleted file mode 100644 index cd451e8..0000000 --- a/dracut.obsinfo +++ /dev/null @@ -1,5 +0,0 @@ -name: dracut -version: 049+git94.aef7a52b -mtime: 1560766531 -commit: aef7a52b5e7daf33d87e46e82d581d35847bc3eb - diff --git a/dracut.spec b/dracut.spec index 558620a..5c1bf40 100644 --- a/dracut.spec +++ b/dracut.spec @@ -12,28 +12,441 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# Please submit bugfixes or comments via http://bugs.opensuse.org/ # %define dracutlibdir %{_libexecdir}/dracut +%define _pkg_version 044 Name: dracut -Version: 049+git94.aef7a52b +# Need minor increase for reliable conflicts by systemd, use %{_pkg_version} for real version +Version: 044.2 Release: 0 Summary: Initramfs generator using udev License: GPL-2.0-or-later AND LGPL-2.1-or-later Group: System/Base Url: https://dracut.wiki.kernel.org/ -Source0: dracut-%{version}.tar.xz +Source0: http://www.kernel.org/pub/linux/utils/boot/dracut/dracut-%{_pkg_version}.tar.xz Source1: dracut-rpmlintrc -Source2: README.susemaint +Source3: mkinitrd_setup_dummy +Source4: purge-kernels +Source5: purge-kernels.service +Source6: dracut-installkernel +Source7: 99-debug.conf +Source8: s390x_persistent_device.conf + +# Network +# Applied upstream as f0094476fd889b27b391e063f456bf8683670bf0 +Patch12: 0012-40network-Fix-race-condition-when-wait-for-networks.patch +# None are upstream yet: +Patch13: 0013-40network-always-start-netroot-in-ifup.sh.patch +Patch15: 0015-40network-replace-dhclient-with-wickedd-dhcp-supplic.patch +Patch17: 0017-45ifcfg-use-distro-specific-scripts.patch +Patch48: 0048-40network-Only-enable-network-interfaces-if-explicit.patch +Patch60: 0060-45ifcfg-Add-SUSE-specific-write-ifcfg-file.patch +Patch61: 0061-45ifcfg-Fixup-error-message-in-write-ifcfg-suse.patch +Patch89: 0089-40network-create-var-lib-wicked-in-ifup.sh.patch +Patch94: 0094-Implement-shortcut-ip-ifname-static-for-static-confi.patch +Patch124: 0124-40network-Update-iBFT-scanning-code-to-handle-IPv6.patch +Patch125: 0125-40network-separate-mask-and-prefix.patch +Patch131: 0131-40network-handle-prefixed-IP-addresses-correctly.patch +Patch132: 0132-40network-fixup-static-network-configuration.patch +Patch133: 0133-Allow-multiple-configurations-per-network-interface-.patch +Patch142: 0142-40network-Don-t-report-error-for-etc-sysconfig-netwo.patch +Patch145: 0145-40network-handle-ip-ifname-static-correctly.patch +Patch159: 0159-network-Try-to-load-xennet.patch +Patch162: 0162-network-Request-DHCP-lease-instead-of-getting-applyi.patch +Patch169: 0169-network_set_mtu_macaddr_for_dhcp.patch +Patch170: 0170-iscsi-skip-ibft-invalid-dhcp.patch + +#S390 +# Applied upstream as 55c763b1ff37405da390ab1ef5765683f3a7838e +Patch16: 0016-Add-new-s390x-specific-rule-files.patch +# Submitted to upstream as d43cccf5885a84d688a3b526d5fc57865369da57 +Patch21: 0021-95dcssblk-Add-new-module-for-DCSS-block-devices.patch +# Submitted to upstream as d0c97fdf4c33bb422f0a13a8752751d3054de143 +Patch56: 0056-81cio_ignore-handle-cio_ignore-commandline.patch +# Applied upstream as 856d039ba4716ba080fc8d823b3329a4470a60ef +Patch75: 0075-95dasd_rules-enable-parsing-of-rd.dasd-commandline-p.patch +# Applied upstream as 5d1ea2d72616ec7ed9cf5e1f3bc99d7d5bc4f003 +Patch76: 0076-Correctly-set-cio_ignore-for-dynamic-s390-rules.patch +# Applied upstream as e5d21b80c054235114c4167e0bf7769aa698b4d4 +Patch79: 0079-95dasd_rules-fixup-rd.dasd-parsing.patch +# Applied upstream as 13626413107b67ab493ccfc4f6a1c6bef228a74e +Patch80: 0080-95dasd_rules-print-out-rd.dasd-commandline.patch +# Applied upstream as 6f1b5c0dabe57259d7e67ab9b643b11b70deb388 +Patch81: 0081-95dasd_mod-do-not-set-module-parameters-if-dasd_cio_.patch +# Applied upstream as 9be4be7aa72af312c6b0588ddb008da7632612bc +Patch83: 0083-95zfcp_rules-Fixup-rd.zfcp-parsing.patch +# Applied upstream as 624f173cbd49b7389577aac10a887f16d4f89b7a +Patch85: 0085-95zfcp_rules-print-out-rd.zfcp-commandline-parameter.patch +# Applied upstream as c8e531239bf314ae532ca1bc820285250a3b35d7 +Patch86: 0086-95zfcp_rules-Auto-generate-udev-rule-for-ipl-device.patch +# Applied upstream as bd355f8643555762acf02c6dd6179b683cd0a6aa +Patch87: 0087-95dasd_rules-Auto-generate-udev-rule-for-ipl-device.patch +# Submitted to upstream as 73f89bbadbd61ffb4cb485e11b630571185b7ef2 +Patch88: 0088-91zipl-Add-new-module-to-update-s390x-configuration.patch +# Applied upstream as 2600b54c187e5668f5b55d5d73f49e99c7b33212 +Patch107: 0107-Fixup-typo-firmare-instead-of-firmware.patch +# Submitted to upstream as 73f89bbadbd61ffb4cb485e11b630571185b7ef2 +Patch108: 0108-91zipl-Store-commandline-correctly.patch +# Applied upstream as 05bf32097201c24c56dc6bb7a59a428293247d61 +Patch109: 0109-95dasd_rules-Store-all-devices-in-commandline.patch +# Applied upstream as 3a8ba440265696ce1279dc12eb5a7acda14c1712 +Patch110: 0110-95zfcp_rules-Store-all-devices-in-commandline.patch +# Submitted to upstream as d118e9d94050ea65cb4514dda5fda10ef30275fe +Patch113: 0113-91zipl-Install-script-as-executable.patch +# Submitted to upstream as 403f2c3e1dbb681c27b1279b9d023449cfc6d007 +Patch114: 0114-91zipl-Translate-ext2-3-into-ext4.patch +# TODO: Apply upstream, already incorporated where original patches have been upstreamed +Patch116: 0116-Mark-scripts-as-executable.patch +# Applied upstream as cf9c8c5fe3fdb899b57c25867bf54b74adc3272f +Patch117: 0117-95dasd_rules-Enable-the-device-before-checking-devic.patch +# Applied upstream as 5e7bbe43a349a9d3ef0300c61f62a49a2e44c0a0 +Patch118: 0118-95zfcp_rules-Enable-the-device-before-checking-devic.patch +# Applied upstream as 5f923256e33893bead8233852a741a4b0036f709 +Patch123: 0123-95zfcp_rules-fix-typo-in-module_setup.patch +# Submitted to upstream as 33260dac6e0980da2d6577a29d83644b6637745c +Patch157: 0157-Add-boot-zipl-to-host-devs-if-it-is-a-mount-point.patch +# Submitted to upstream as 8bae047a4e096e69a34c520dae15458e210eecdb +Patch160: 0160-s390-update_active_devices_initrd.patch +# Applied upstream as c8aa1d949aecaf146b0a0e1ce269f69e6048dc5a +Patch161: 0161-95zfcp_rules-simplified-rd.zfcp-commandline-for-NPIV.patch +# Applied upstream as e5bf1cecd635897e5f2c8ae373494d33af3b1996 +Patch188: 0188-95dasd_rules-Install-collect-udev-helper-binary.patch +# TODO: Apply upstream (??) +Patch506: 0506-Boot-on-s390x-with-fips-1-on-the-kernel-commnad-line.patch + +#FIPS +Patch53: 0053-01fips-fixup-loading-issues.patch +Patch57: 0057-01fips-Include-some-more-hmacs.patch +Patch126: 0126-01fips-Add-drbg-module-to-force-loaded-modules.patch +Patch137: 0137-Switch-from-Mozilla-NSS-sha256hmac-checking-to-fipsc.patch +Patch138: 0138-fips_add_aesni-intel.patch +Patch139: 0139-fips-kernel-4.4-fixes.patch +Patch509: 0509-01fips-Remove-zlib-module-as-requirement.patch +Patch510: 0510-01fips-Some-modules-use-separators-other-than.patch +Patch511: 0511-01fips-ensure-fips-initialization-succeeds-on-s390-x.patch + +# Others, partly SUSE specific. Not submitted unless annotated otherwise + +# Submitted to upstream as 7ce2872be28a5463757651cc30049c3f4e81559a +Patch20: 0020-00warpclock-Set-correct-timezone.patch +Patch58: 0058-dracut-add-warning-when-including-unsupported-module.patch +Patch59: 0059-99suse-Add-SUSE-specific-initrd-parsing.patch +# TODO: This should not be a patch, but be removed in the install section +Patch90: 0090-dracut-caps-Remove-whole-caps-module.patch +Patch91: 0091-dracut-biosdevname-In-SUSE-biosdevname-package-is-in.patch +Patch121: 0121-Adjust-initramfs-kernel.img-to-SUSE-default-initrd-k.patch +Patch130: 0130-nfs-Always-add-all-kernel-modules-for-kdump.patch +# Applied upstream as c3b6970394ad677f05a42bef420bf34b1d0652e0 +Patch144: 0144-90crypt-Fixed-crypttab_contains-to-also-work-with-de.patch +Patch150: 0150-Find-kernel-modules-in-extra-and-weak-updates-path-a.patch +Patch158: 0158-Add-SUSE-kernel-module-dependencies-in-etc-modprobe.patch +Patch163: 0163-Install-etc-sysconfig-console-to-see-specific-fonts.patch +# TODO: Verify: Should be obsolete due to fixes in systemd +Patch164: 0164-Fix-initramfs-ver.img-vs-initrd-ver-in-dracut-initra.patch +# Applied upstream as ed2cc8c9b96438be4527dbc9f5814196554abec4 +Patch168: 0168-remove_plymouth_logo_file.patch +# Applied upstream as 251afd36b2be35b7b27011b6f90b5ab3bbbbff84 +Patch180: 0180-i18n_add_correct_fontmaps.patch +# Applied upstream as dcacd2b072c301a51c114256e8bb696346879a2b +Patch182: 0182-fix-include-parsing.patch +# Applied upstream as d53bb5c01737270049fde82559ae72aae1943b81 +Patch183: 0183-fix_add_drivers_hang.patch + +# iscsiadm +# TODO: Apply all patches in this section upstream +Patch190: 0190-replace-iscsistart-with-systemd-service-files.patch +Patch191: 0191-static_network_setup_return_zero.patch +Patch192: 0192-iscsi_set_boot_protocol_from_ifcfg.patch +Patch193: 0193-95iscsi-Set-number-of-login-retries.patch +Patch196: 0196-ibft-wait-for-session-on-all-paths.patch +Patch197: 0197-95iscsi-Do-not-require-network-for-qla4xxx-flash-ses.patch +Patch198: 0198-95iscsi-set-rd.iscsi.firmware-for-qla4xxx-sessions.patch +Patch199: 0199-rd-iscsi-waitnet-default-false.patch + +# Submit mainline asap + +# Applied upstream as 5c84d51b3f258af9035a4031c6b482103adea4d9 +Patch128: 0128-90lvm-Install-dm-snapshot-module.patch +# Applied upstream as d12ce1da8551c065616f81f158b6425b20ee191c +Patch200: 0200-dracut_fix_multipath_without_config.patch +# Applied upstream as f5c10673de18d84f3b054df9a68ffa8d43f9571c +Patch201: 0201-fix_nfs_with_ip_instead_of_hostname.patch +# TODO: Apply upstream +Patch202: 0202-dracut_dmraid_use_udev.patch +# TODO: Check if still an issue with C-style insmod logic +Patch203: 0203-no-fail-builtin-module.patch +# Applied upstream as 51d2436c22d64e45376c64ad3b6c90c48cc88d78 +Patch204: 0204-mkinitrd-fix-monster.patch +# TODO: Apply upstream +Patch205: 0205-mdraid_ignore_hostonly.patch +# Applied upstream as 8602e5986702f6118f8b30f1053a45af1df892bd +Patch206: 0206-nfs_dns_alias.patch +# Applied upstream as 43819af68c7789ec932c25e699c56889fdf7276c +Patch207: 0207-handle_module_aliases.patch +# TODO: Possibly made redundant by changes done by upstream +Patch208: 0208-no_forced_virtnet.patch +# Applied upstream as 9fd3e045d5b41ba5cf9fb0c51db9750ce0e530d8 +Patch209: 0209-fix_modules_load_d_hostonly.patch +# Applied upstream as 22836a092191c1abc0e04e4c6d68856f2603d6e8 +Patch210: 0210-add_fcoe_uefi_check.patch +# Applied upstream as 6b96b50d2cd92d6598240e6061a81b29b889ecdd +Patch212: 0212-fcoe_reorder_init_path.patch +# Applied upstream as 18729719a7091c35ffe377b21b860a60a352def8 +Patch213: 0213-Fix-wrong-keymap-inclusion.patch +# Applied upstream as d066fcc3fb9080ffff412c8dc5177ca1dcc08e75 +Patch214: 0214-95fcoe-Do-not-overwrite-FCoE-configuration.patch +# Applied upstream as 1279a9e1a0a28107e0a240ab344f700b465c96b3 by upstream +Patch215: 0215-95fcoe-Do-not-complain-about-missing-etc-hba.conf.patch +# Applied upstream as d71c9ee286def5d1a5e90f549b65e21d0f18c9ac +Patch216: 0216-95fcoe-silence-lldpad-warnings.patch +# Applied upstream as c75196e11ec4325fc76bb11aeb884ceade62df48 +Patch217: 0217-95fcoe-Allow-to-specify-the-FCoE-mode-via-the-fcoe-p.patch +# Probably not upstreamable? +Patch218: 0218-40network-allow-persistent-interface-names.patch +# Applied upstream as 164760f4b075ff564c349cb40d1fa308c139432d +Patch219: 0219-95fcoe-use-interface-names-instead-of-MAC-addresses.patch +# Applied upstream as 2aac3194100b903740bb9057aed71a35ce92a2e3 +Patch220: 0220-95fcoe-always-set-AUTO_VLAN-for-fcoemon.patch +# Applied upstream as a3f91db4768451a10fbbc3e28270c29e1368df6c +Patch221: 0221-95fcoe-Add-shutdown-script.patch +# Applied upstream as 07e635748342aa70a76bc1a2237339f6a897d841 +Patch222: 0222-90dm-Fixup-shutdown-script.patch +# Applied upstream as 870591acec41e854071129e7bf834cdfe43ae716 +Patch223: 0223-90dm-fixup-dependency-cycle-between-MD-and-DM-shutdo.patch +# TODO: Apply upstream +Patch224: 0224-95iscsi-setup-bnx2i-offload-connections-properly.patch +# Applied upstream as part of 36a8b2e3058518255dbd39e33bf2c72b7889cfae +Patch225: 0225-95fcoe-do-not-start-fcoemon-twice.patch + +# SUSE-specific fixes +Patch300: 0300-dracut_dont_use_dpkg_defaults_on_SUSE.patch +Patch301: 0301-include_sysconfig_language.patch +Patch302: 0302-Revert-90multipath-add-hostonly-multipath.conf-in-ca.patch +Patch303: 0303-fix_multipath_check_hostonly.patch +Patch304: 0304-90multipath-Start-daemon-after-udev-settle.patch +Patch305: 0305-90multipath-load-dm_multipath-module-during-startup.patch +Patch306: 0306-90multipath-add-shutdown-script.patch +Patch307: 0307-90multipath-parse-kernel-commandline-option-multipat.patch +Patch308: 0308-mdraid_add_IMSM_NO_PLATFORM_env.patch +Patch309: 0309-90dmraid-do-not-delete-partitions.patch +Patch310: 0310-95resume-Do-not-resume-on-iSCSI.patch +Patch311: 0311-95iscsi-ip-ibft-is-deprecated.patch +Patch312: 0312-40network-Do-not-print-message-about-tmp-net.ibft0.c.patch +Patch313: 0313-90mdraid-Use-stock-MD-rules-to-assemble-RAID-arrays.patch +Patch314: 0314-nfs_do_not_pass_ifname_for_bonding_devices.patch + +# New features/improvements +# TODO: Apply upstream +Patch402: 0402-driver-fail-summary.patch +# Applied upstream as 10f06425a597ca797b8efbf45e8838c4d30651e9 +Patch403: 0403-95lunmask-Add-module-to-handle-LUN-masking.patch +# Applied upstream as 1f8a7ae799effed1e57033167beca4281389391c +Patch404: 0404-dracut-emergency-optionally-print-fs-help.patch + +# Workarounds/Patches no longer relevant in 045 +Patch450: 0450-Strip-NUL-bytes-in-stream-before-push-in-string.patch +# Patch from upstream: d4efc0aeeecc470d9a267b7f3c130f472488905c +Patch451: 0451-systemd-initrd-add-initrd-root-device.target.patch +# Applied upstream as 9ffab3f3a5105691b4b640649c3a99e3cce39c1a +Patch452: 0452-Always-try-to-add-pinctrl-cherryview.patch +# Applied upstream as 7957bd01b097507a601495ed7cd2c8480c2af67b +Patch453: 0453-Resolve-symbolic-links-for-i-and-k-parameters-bsc-90.patch +# Applied upstream as e69da98de1a4175fb3c745570471fc3a7d567a33 +Patch454: 0454-Add-md4-and-arc4-modules-for-ntlm.patch + +# On top patches/fixes which have to be applied late +# Applied upstream as 8b0791fa010cf7e5fde3a37a8c2bb6d6f1264f59 +Patch500: 0500-Reset-IFS-variable.patch +# Applied upstream as e0c3b0793f92c24d442f543a755aed8cc218ab20 +Patch501: 0501-dasd_fix_ssid_bigger_zero.patch +# TODO: Apply upstream +Patch502: 0502-persistent_device_policy_param_enhance.patch +# Applied upstream as 0db98910a11c12a454eac4c8e86dc7a7bbc764a4 +Patch503: 0503-dracut.sh-create-the-initramfs-non-world-readable-al.patch +# TODO: Apply upstream +Patch504: 0504-ibft-fix-boot-flag-check.patch +# Applied upstream as f1c790495baa017ec48b266a33b0dd558e760dde +Patch505: 0505-Allow-booting-from-degraded-MD-RAID-arrays.patch +# Applied upstream as 649619f6a5775d1c94d9c4f3fec627c747633275 +Patch507: 0507-Set-TaskMax-inifinite-for-the-emergency-shell.patch +# Applied upstream as 8008d47fafcecd27c456215e910be33a23546519 +Patch508: 0508-90multipath-start-before-local-fs-pre.target.patch +# Applied upstream as 8b6d136e625cb538f8845e858b37e9f6c67a5f1c +Patch512: 0512-Make-binutils-optional-when-elfutils-are-available.patch +# TODO: Apply upstream +Patch513: 0513-Fix-regression-caused-by-6f9bf2b8ac436259bdccb110545.patch +# Applied upstream as 4a739be99c409719e76078ece55e7ba3c817b054 +Patch514: 0514-man-make-the-k-option-clear-using-mkinitrd.patch +# Reverted later. Do not submit! +Patch515: 0515-90kernel-modules-also-add-block-device-driver-revers.patch +# Applied upstream as 7cf2c21798b537a5553ecc23df5ce8cfda631e9c +Patch516: 0516-mkinitrd-suse.sh-Fix-prefix-calculation.patch +# Applied upstream as fd13d5d4d50dd837be393c4b7dc1859237f6daac +Patch517: 0517-95fcoe-fixup-fcoe-genrules.sh-for-VN2VN-mode.patch +# Fixed more generically in upstream as feaaee4278077dd67fe24acebfbe47ba20738955 +Patch518: 0518-90kernel-modules-Fix-backlight-on-Cherrytrail-device.patch +# TODO: Apply upstream if correct +Patch519: 0519-90kernel-modules-Ensure-phy-drivers-are-loaded-in-in.patch +# TODO: Check if still relevant and apply upstream +Patch520: 0520-Ignore-module-resolution-errors.patch +# TODO: Apply upstream +Patch521: 0521-Ensure-udev-persistent-storage-compat-rules-get-crea.patch +# TODO: belongs with FIPS commits +Patch522: 0522-Fix-typo-from-commit-3f1cdb520.patch +# Applied upstream as e3189ab1235748cda136b564668b697d1c87847b +Patch523: 0523-98dracut-systemd-Fix-module-force-loading-with-syste.patch +# Fixes SUSE Patch +Patch524: 0524-Suppress-nonsensical-error-message-bsc-1032029.patch +# Applied from upstream commit 106255afd46ea2be1d035aca0c5695186a3f2c41 +Patch525: 0525-backport-bail-out-if-module-directory-does-not-exist.patch +# TODO: apply upstream +Patch526: 0526-iscsiroot-call-handle_firmware-only-for-non-iface-in.patch +# TODO: belongs with FIPS commits +Patch527: 0527-switch-fips-checking-to-use-the-libkcapi-based-fipsc.patch +# TODO: apply upstream +Patch528: 0528-Ensure-dracut.sh-responds-properly-to-hostonly_cmdli.patch +# Applied from upstream commit 8261d2367ee673e24d03306b9623f4f3070dae5b +Patch529: 0529-systemd-add-missing-.slice-unit.patch +# Applied from upstream commit eddca3c9c24e4cb9c5def0b98920e36b16fafaac +Patch530: 0530-dracut-systemd-dracut-cmdline-ask-fix-dracut-kernel-.patch +# Applied from upstream commit c000a21c25bd436f2b3cc2076cb7025cc82d2807 +Patch531: 0531-dracut-systemd-.service-conflict-with-shutdown-targe.patch +# Do not submit, reverts bogus patch +Patch532: 0532-List-drivers-rather-than-looking-for-reverse-depende.patch +# TODO: check if still relevant +Patch533: 0533-instmods-check-modules.builtin-in-srcmods.patch +# Applied upstream as 348935e3b65b5058e65f66682df6a5b184eaacb2 +Patch534: 0534-ssh-client-Include-nss_-libraries.patch +# Applied upstream as e316ae0e4309726b2c067a70ac41f7b22011c063 +Patch535: 0535-Sync-initramfs-after-creation.patch +# TODO: apply upstream +Patch536: 0536-90multipath-drop-67-kpartx-compat.rules.patch +# TODO: check how to submit upstream +Patch537: 0537-dracut-init.sh-ignore-crc32.ko-in-builtin-test.patch +# Applied upstream as afe4e2844ffa7c06160434430f0ce9e493c112e0 +Patch538: 0538-Enable-core-dumps-with-systemd-from-initrd.patch +# Not eligable for submit, unless specfile gets submitted +Patch539: 0539-Add-IMA-functionality-fate-323289.patch +# Applied from upstream commit 551cc3694e32be97084b1f198f76f4daf908d503 +Patch540: 0540-Check-the-proper-variable-for-a-custom-IMA-keys-dire.patch +# SLE and Leap have persistent net names, but not Factory/TW +%if 0%{?suse_version} && ! 0%{?sle_version} +# TODO: Unsure if this can be sumbmitted +Patch541: 0541-Make-sure-70-persistent-net.rules-is-included-in-ini.patch +%endif +# Applied upstream as 9f2916cce13d584610295e001394274e823c3f15 +Patch542: 0542-Include-crc32c-intel-module-when-using-btrfs.patch +# Applied upstream as b36d322bd2ccb6ef4eb31384c86a75572184bba1 +Patch543: 0543-Remove-00systemd-bootchart.patch +# TODO: Check if still relevant +Patch544: 0544-40network-Make-ip-dhcp-work.patch +# More generic fix upstream +Patch545: 0545-Add-early-microcode-support-for-AMD-family-16h.patch +# More generic fix upstream +Patch546: 0546-Support-Microcode-Updates-for-AMD-CPU-Family-0x17.patch +# Applied upstream as df96cccc8f562f8aeab7c09248c204f21ed42c4a +Patch547: 0547-Fix-task-limit-in-emergency.service-the-same-change-.patch +# Applied upstream as 36a8b2e3058518255dbd39e33bf2c72b7889cfae +Patch548: 0548-95fcoe-Switch-back-to-using-fipvlan-for-bnx2fc.patch +# Same patch applied by upstream: 3966a1e1ee0e3d27197258f446f54b683c415208 +Patch549: 0549-fcoe-up-Increase-sleeptime-to-13s.patch +# Applied upstream as fd13d5d4d50dd837be393c4b7dc1859237f6daac +Patch550: 0550-95fcoe-add-timeout-initqueue-entries.patch +# Patch adopted from upstream commit 7c29d205f4bfb465f1618fdb8984798522c8eb4a +Patch551: 0551-fips-use-lib-modules-uname-r-modules.fips.patch +# Patch adopted from upstream commit 479b5cd94f16052cf6ea28d0e8abba2b926fff83 +Patch552: 0552-98integrity-support-validating-the-IMA-policy-file-s.patch +# Patch submitted to upstream as 9e451d4770ec3a98816fcf97fdd745d6af135336 +Patch553: 0553-98integrity-support-loading-x509-into-the-trusted-bu.patch +# Patch submitted to upstream as cb2c9a4338ddc15d55c6c524276a1807bec23485 +Patch554: 0554-98integrity-support-X.509-only-EVM-configuration.patch +# Applied upstream as 94f61235d760337fdef692fac5ead589e8f3ab0e +Patch555: 0555-Avoid-executing-emergency-hooks-twice.patch +# Patch submitted to upstream as 62ceddfd3e3b9da8bdceb1be72dae55abdf35498 +Patch556: 0556-95qeth_rules-Add-new-module-to-copy-qeth-rules.patch +# Patch not upstream, better fix depends on wicked +Patch557: 0557-40network-make-arping-optional.patch +# Applied upstream as 285495814becd9310bab3ab268a84ff54f43ed35 +Patch558: 0558-40network-remove-brctl-dependency.patch +# Patch specific to SUSE, not upstream +Patch559: 0559-Add-wickedd-duid.xml-and-iaid.xml-if-available.patch +# Patch submitted to upstream as c68c28af2f140522e1dfae98ad62c56b01cbf175 +Patch560: 0560-90kernel-modules-Ensure-PCI-host-modules-are-include.patch +# Patch submitted to upstream as 446c3bb2e25238f499bec875bbe4978a31d4e3d6 +Patch561: 0561-Add-the-qedi-driver-to-driver-list-for-iscsi-boot.patch +# Patches taken from upstream (squashed) +Patch562: 0562-Adjust-driver-list-to-modern-kernels.patch +# Patch specific to SUSE, not upstream +Patch563: 0563-40network-collapse-arping-and-dhcp-calls-into-wicked.patch +# Patch specific to SUSE, not upstream +Patch564: 0564-40network-Always-set-the-gw-variable.patch +# Patch submitted to upstream as 774090d2223cc58db259f5670bde17bd37b286ea +Patch565: 0565-90kernel-modules-Include-Intel-Volume-Management-Dev.patch +# Patch specific to SUSE, not upstream +Patch566: 0566-95nfs-If-no-server-is-configured-read-BOOTSERVERADDR.patch +# Patch specific to SUSE, upstream only documentation +Patch567: 0567-Fix-booting-with-fips-1-on-SLES-15.patch +# Applied upstream as d000b9a2c7837be7d1c71fb730675f822cf96fc1 +Patch568: 0568-95multipath-Pickup-files-in-etc-multipath-conf.d.patch +# Applied upstream as afd09c9a87ef09e2595f71fdae1d38ac00cfd071 +Patch569: 0569-10i18n-Load-all-keymaps-for-a-given-locale.patch +# Applied upstream as a4e11a0e4d6fbed25244cc0f01732f81841bd642 +Patch570: 0570-10i18n-Fix-possible-infinite-recursion.patch +Patch571: 0571-40network-Fix-static-network-setup.patch +# Patch adopted from upstream commit bce6823a19b3fc0be50ff5c29c5ef90fa58b3430 +Patch572: 0572-lsinitrd-no-more-cat-write-error-Broken-pipe.patch +# Patch adopted from upstream commit 8379784a0e8e38b85f36cb605a323dce02fd76b5 +Patch573: 0573-lsinitrd.sh-quote-filename-in-extract_files.patch +# Applied upstream as bfa4e45fa74fabf70ca0d80869e3b209f300ef6d +Patch574: 0574-s-find_btrfs_devs-btrfs_devs.patch +# Patch adopted from upstream commit 940169e8d8e500498a3f350b2b3f341ae6548492 +Patch580: 0580-check_for_CONFIG_ACPI_TABLE_UPGRADE.patch +# Patch adopted from upstream commit 09ba1b289f2cba613c1950b03f0f549ebb7eb83f +Patch581: 0581-kernel-modules-add-nfit.patch +# Patch adopted from upstream commit e9a84e0a215fb5a79e563f665bc406c0ea177d32 +Patch582: 0582-98dracut-systemd-Start-systemd-vconsole-setup-before.patch +# Patch adopted from upstream commit 7117bf627028298970d8a6a5e153e1942f3430f3 +Patch583: 0583-99base-Allow-files-with-backslashes-in-hostonly-file.patch +# Patch adopted from upstream commit b38b7fef36333a59890233dccfbbb6d2c40ebe83 +Patch584: 0584-95dasd_rules-mark-dasd-rules-host_only.patch +# Patch adopted from upstream commit 32f68c1f9ac3720e8ce4b95a09c0ce680d5da786 +Patch585: 0585-emergency-mode-use-sulogin.patch +# Patch adopted from git commit 69198cba654cb81093e36cca242481d26bec4b40 +Patch586: 0586-95zfcp_rules-parse-zfcp.sh-remove-rule-existence-check.patch +# Patch adopted from upstream commit 58e0d2d5b5b3a5e7d6dbf74baa2f08f041de5a81 +Patch587: 0587-Fix-a-missing-space-in-example-configs.patch +# Fix for 0562-Adjust-driver-list-to-modern-kernels.patch +Patch588: 0588-Ensure-mmc-host-modules-get-included-properly.patch +# Patch adopted from upstream commit 0d08f43d7137e10cbbf7390809c4659128f8a2ea +Patch589: 0589-Fix-98dracut-systemd-dracut-emergency.sh.patch +# Patch adopted from upstream commit 53cb081b4c3afa843022d8e6156bdbd4808db4a2 +Patch590: 0590-00systemd-check-if-systemd-version-is-a-number.patch +# Patch adopted from upstream commit 38ccf7c8e5e19b1e7ef400ff0a77eb92531754c0 +Patch591: 0591-91zipl-Don-t-use-contents-of-commented-lines.patch +# Patch submitted to upstream +Patch592: 0592-95iscsi-handle-qedi-like-bnx2i.patch +# Patch adopted from upstream commit e7ba1392e180eb6f5e19dfd28a340a98cf09a3cd +Patch593: 0593-dracut-only-copy-xattr-if-root.patch +# Patch specific to SUSE, not upstream +Patch594: 0594-Check-SUSE-kernel-module-dependencies-recursively.patch +# Patches 595-600 submitted upstream https://github.com/dracutdevs/dracut/pull/562 +Patch595: 0595-iscsi-don-t-continue-waiting-if-the-root-device-is-p.patch +Patch596: 0596-network-stop-waiting-for-interfaces-if-root-device-i.patch +Patch597: 0597-iscsiroot-parse_iscsi_root-overwrites-command-line-a.patch +Patch598: 0598-iscsiroot-there-s-never-more-than-one-target-per-cal.patch +Patch599: 0599-iscsiroot-try-targets-only-once.patch +Patch600: 0600-iscsiroot-remove-bashisms.patch +Patch601: 0601-base-dracut-lib.sh-dev_unit_name-guard-against-dev-b.patch + BuildRequires: asciidoc BuildRequires: bash BuildRequires: docbook-xsl-stylesheets BuildRequires: libxslt BuildRequires: suse-module-tools -BuildRequires: pkgconfig(libkmod) BuildRequires: pkgconfig(systemd) >= 219 Requires: %{_bindir}/get_kernel_version Requires: bash @@ -72,6 +485,7 @@ NFS, iSCSI, NBD, FCoE. %package fips Summary: Dracut modules to build a dracut initramfs with an integrity check Group: System/Base +Requires(post): coreutils Requires: %{name} = %{version}-%{release} Requires: fipscheck Requires: libcryptsetup12-hmac @@ -105,21 +519,261 @@ Provides: %{name}:%{_bindir}/dracut-catimages This package contains tools to assemble the local initrd and host configuration. %prep -%setup -q +%setup -q -n dracut-%{_pkg_version} + +%patch12 -p1 +%patch13 -p1 +%patch15 -p1 +%patch16 -p1 +%patch17 -p1 +%patch20 -p1 +chmod a+x modules.d/00warpclock/module-setup.sh +%patch21 -p1 +%patch48 -p1 +%patch53 -p1 +%patch56 -p1 +%patch57 -p1 +%patch58 -p1 +%patch59 -p1 +%patch60 -p1 +chmod a+x modules.d/45ifcfg/write-ifcfg-suse.sh +%patch61 -p1 +%patch75 -p1 +%patch76 -p1 +%patch79 -p1 +%patch80 -p1 +%patch81 -p1 +%patch83 -p1 +%patch85 -p1 +%patch86 -p1 +%patch87 -p1 +%patch88 -p1 +chmod a+x modules.d/91zipl/install_zipl_cmdline.sh +%patch89 -p1 +%patch90 -p1 +%patch91 -p1 +%patch94 -p1 +%patch107 -p1 +%patch108 -p1 +%patch109 -p1 +%patch110 -p1 +%patch113 -p1 +%patch114 -p1 +%patch116 -p1 +%patch117 -p1 +%patch118 -p1 +%patch121 -p1 +%patch123 -p1 +%patch124 -p1 +%patch125 -p1 +%patch126 -p1 +%patch128 -p1 +%patch130 -p1 +%patch131 -p1 +%patch132 -p1 +%patch133 -p1 + +%patch137 -p1 +%patch138 -p1 +%patch139 -p1 + +%patch142 -p1 +%patch144 -p1 +%patch145 -p1 +%patch150 -p1 +%patch157 -p1 +%patch158 -p1 +%patch159 -p1 +%patch160 -p1 +%patch161 -p1 +%patch162 -p1 +%patch163 -p1 +%patch164 -p1 +%patch168 -p1 +%patch169 -p1 +%patch170 -p1 + +%patch180 -p1 +%patch182 -p1 +%patch183 -p1 +%patch188 -p1 + +%patch190 -p1 +%patch191 -p1 +%patch192 -p1 +%patch193 -p1 +%patch196 -p1 +%patch197 -p1 +%patch198 -p1 +%patch199 -p1 + +%patch200 -p1 +%patch201 -p1 +%patch202 -p1 +%patch203 -p1 +%patch204 -p1 +%patch205 -p1 +%patch206 -p1 +%patch207 -p1 +%patch208 -p1 +%patch209 -p1 +%patch210 -p1 +%patch212 -p1 +%patch213 -p1 +%patch214 -p1 +%patch215 -p1 +%patch216 -p1 +%patch217 -p1 +%patch218 -p1 +%patch219 -p1 +%patch220 -p1 +%patch221 -p1 +%patch222 -p1 +%patch223 -p1 +%patch224 -p1 +%patch225 -p1 + +%patch300 -p1 +%patch301 -p1 +%patch302 -p1 +%patch303 -p1 +%patch304 -p1 +%patch305 -p1 +%patch306 -p1 +%patch307 -p1 +%patch308 -p1 +%patch309 -p1 +%patch310 -p1 +%patch311 -p1 +%patch312 -p1 +%patch313 -p1 +%patch314 -p1 + +%patch402 -p1 +%patch403 -p1 +%patch404 -p1 + +%patch450 -p1 +%patch451 -p1 +%patch452 -p1 +%patch453 -p1 +%patch454 -p1 + +%patch500 -p1 +%patch501 -p1 +%patch502 -p1 +%patch503 -p1 +%patch504 -p1 +%patch505 -p1 + +%patch506 -p1 +%patch507 -p1 +%patch508 -p1 +%patch509 -p1 +%patch510 -p1 +%patch511 -p1 +%patch512 -p1 +%patch513 -p1 +%patch514 -p1 +%patch515 -p1 +%patch516 -p1 +%patch517 -p1 +%patch518 -p1 +%patch519 -p1 +%patch520 -p1 +%patch521 -p1 +%patch522 -p1 +%patch523 -p1 +%patch524 -p1 +%patch525 -p1 +%patch526 -p1 +%patch527 -p1 +%patch528 -p1 +%patch529 -p1 +%patch530 -p1 +%patch531 -p1 +%patch532 -p1 +%patch533 -p1 +%patch534 -p1 +%patch535 -p1 +%patch536 -p1 +%patch537 -p1 +%patch538 -p1 +%patch539 -p1 +%patch540 -p1 +%if 0%{?suse_version} && ! 0%{?sle_version} +%patch541 -p1 +%endif +%patch542 -p1 +%patch543 -p1 +%patch544 -p1 +%patch545 -p1 +%patch546 -p1 +%patch547 -p1 +%patch548 -p1 +%patch549 -p1 +%patch550 -p1 +%patch551 -p1 +%patch552 -p1 +%patch553 -p1 +%patch554 -p1 +%patch555 -p1 +%patch556 -p1 +chmod a+x modules.d/95qeth_rules/module-setup.sh +%patch557 -p1 +%patch558 -p1 +%patch559 -p1 +%patch560 -p1 +%patch561 -p1 +%patch562 -p1 +%patch563 -p1 +%patch564 -p1 +%patch565 -p1 +%patch566 -p1 +%patch567 -p1 +%patch568 -p1 +%patch569 -p1 +%patch570 -p1 +%patch571 -p1 +%patch572 -p1 +%patch573 -p1 +%patch574 -p1 +%patch580 -p1 +%patch581 -p1 +%patch582 -p1 +%patch583 -p1 +%patch584 -p1 +%patch585 -p1 +%patch586 -p1 +%patch587 -p1 +%patch588 -p1 +%patch589 -p1 +%patch590 -p1 +%patch591 -p1 +%patch592 -p1 +%patch593 -p1 +%patch594 -p1 +%patch595 -p1 +%patch596 -p1 +%patch597 -p1 +%patch598 -p1 +%patch599 -p1 +%patch600 -p1 +%patch601 -p1 %build %configure\ --systemdsystemunitdir=%{_unitdir}\ - --bashcompletiondir=%{_datarootdir}/bash-completion/completions \ + --bashcompletiondir=%{_sysconfdir}/bash_completion.d\ --libdir=%{_prefix}/lib make all CFLAGS="%{optflags}" %{?_smp_mflags} %install -make DESTDIR=%{buildroot} install %{?_smp_mflags} +%make_install %{?_smp_mflags} -echo -e "#!/bin/bash\nDRACUT_VERSION=%{version}-%{release}" > %{buildroot}/%{dracutlibdir}/dracut-version.sh +echo -e "#!/bin/bash\nDRACUT_VERSION=%{_pkg_version}-%{release}" > %{buildroot}/%{dracutlibdir}/dracut-version.sh -# use systemd-analyze instead, does not need dracut support +# no longer needed, use the (built-in) systemd-analyze instead rm -fr %{buildroot}/%{dracutlibdir}/modules.d/00bootchart # not supported @@ -140,12 +794,16 @@ mkdir -p %{buildroot}%{_localstatedir}/log touch %{buildroot}%{_localstatedir}/log/dracut.log install -D -m 0644 dracut.conf.d/suse.conf.example %{buildroot}/usr/lib/dracut/dracut.conf.d/01-dist.conf -install -m 0644 suse/99-debug.conf %{buildroot}%{_sysconfdir}/dracut.conf.d/99-debug.conf +install -m 0644 %{SOURCE7} %{buildroot}%{_sysconfdir}/dracut.conf.d/99-debug.conf install -m 0644 dracut.conf.d/fips.conf.example %{buildroot}%{_sysconfdir}/dracut.conf.d/40-fips.conf install -m 0644 dracut.conf.d/ima.conf.example %{buildroot}%{_sysconfdir}/dracut.conf.d/40-ima.conf # bsc#915218 %ifarch s390 s390x -install -m 0644 suse/s390x_persistent_device.conf %{buildroot}%{_sysconfdir}/dracut.conf.d/10-s390x_persistent_device.conf +install -m 0644 %{SOURCE8} %{buildroot}%{_sysconfdir}/dracut.conf.d/10-s390x_persistent_device.conf +%endif + +%ifarch %ix86 x86_64 +echo 'early_microcode="yes"' > %{buildroot}%{_sysconfdir}/dracut.conf.d/02-early-microcode.conf %endif rm %{buildroot}%{_bindir}/mkinitrd @@ -153,19 +811,19 @@ rm %{buildroot}%{_bindir}/mkinitrd mkdir -p %{buildroot}/sbin install -m 0755 mkinitrd-suse.sh %{buildroot}/sbin/mkinitrd mv %{buildroot}%{_mandir}/man8/mkinitrd-suse.8 %{buildroot}%{_mandir}/man8/mkinitrd.8 -install -m 0755 suse/mkinitrd_setup_dummy %{buildroot}/sbin/mkinitrd_setup +install -m 0755 %{SOURCE3} %{buildroot}/sbin/mkinitrd_setup mkdir -p %{buildroot}%{_sysconfdir}/logrotate.d install -m 0644 dracut.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/dracut -install -D -m 0755 suse/purge-kernels %{buildroot}/sbin/purge-kernels -install -m 644 suse/purge-kernels.service %{buildroot}/%{_unitdir}/purge-kernels.service +install -D -m 0755 %{SOURCE4} %{buildroot}/sbin/purge-kernels +install -m 644 %{SOURCE5} %{buildroot}/%{_unitdir}/purge-kernels.service -install -D -m 0755 suse/dracut-installkernel %{buildroot}/sbin/installkernel +install -D -m 0755 %{SOURCE6} %{buildroot}/sbin/installkernel %if 0%{?suse_version} -#rm -f %%{buildroot}/%%{dracutlibdir}/modules.d/45ifcfg/write-ifcfg.sh -#ln -s %%{dracutlibdir}/modules.d/45ifcfg/write-ifcfg-suse.sh %%{buildroot}/%%{dracutlibdir}/modules.d/45ifcfg/write-ifcfg.sh +rm -f %{buildroot}/%{dracutlibdir}/modules.d/45ifcfg/write-ifcfg.sh +ln -s %{dracutlibdir}/modules.d/45ifcfg/write-ifcfg-suse.sh %{buildroot}/%{dracutlibdir}/modules.d/45ifcfg/write-ifcfg.sh %else mv %{buildroot}/%{dracutlibdir}/modules.d/45ifcfg/write-ifcfg.sh %{buildroot}/%{dracutlibdir}/modules.d/45ifcfg/write-ifcfg-redhat.sh ln -s %{dracutlibdir}/modules.d/45ifcfg/write-ifcfg-redhat.sh %{buildroot}/%{dracutlibdir}/modules.d/45ifcfg/write-ifcfg.sh @@ -177,6 +835,10 @@ ln -s %{dracutlibdir}/modules.d/45ifcfg/write-ifcfg-redhat.sh %{buildroot}/%{dra %post %service_add_post purge-kernels.service %{?regenerate_initrd_post} +# Due to a bug in YaST and subsequent work by the migration script, /etc/vconsole.conf +# may contain "FONT_MAP=none" which is invalid. While systemd will silently ignore this, +# dracut will complain. Eliminate the entry (bsc#1096771, bsc#1013573). +sed -i '/^FONT_MAP=none/d' %{_sysconfdir}/vconsole.conf || : %post fips %{?regenerate_initrd_post} @@ -211,6 +873,7 @@ ln -s %{dracutlibdir}/modules.d/45ifcfg/write-ifcfg-redhat.sh %{buildroot}/%{dra %license COPYING %config %{_sysconfdir}/dracut.conf.d/40-fips.conf %{dracutlibdir}/modules.d/01fips +%{dracutlibdir}/modules.d/02fips-aesni %files ima %defattr(-,root,root,0755) @@ -238,7 +901,7 @@ ln -s %{dracutlibdir}/modules.d/45ifcfg/write-ifcfg-redhat.sh %{buildroot}/%{dra /sbin/installkernel /sbin/mkinitrd /sbin/mkinitrd_setup -%{_datarootdir}/bash-completion/completions/lsinitrd +%config %{_sysconfdir}/bash_completion.d/lsinitrd %{_datadir}/pkgconfig/dracut.pc %config(noreplace) %{_sysconfdir}/dracut.conf @@ -248,6 +911,9 @@ ln -s %{dracutlibdir}/modules.d/45ifcfg/write-ifcfg-redhat.sh %{buildroot}/%{dra %if 0%{?fedora} || 0%{?suse_version} || 0%{?rhel} /usr/lib/dracut/dracut.conf.d/01-dist.conf %endif +%ifarch %ix86 x86_64 +%config %{_sysconfdir}/dracut.conf.d/02-early-microcode.conf +%endif %ifarch s390 s390x %config %{_sysconfdir}/dracut.conf.d/10-s390x_persistent_device.conf %endif @@ -285,79 +951,69 @@ ln -s %{dracutlibdir}/modules.d/45ifcfg/write-ifcfg-redhat.sh %{buildroot}/%{dra %{dracutlibdir}/dracut-install %dir %{dracutlibdir}/modules.d - %{dracutlibdir}/modules.d/00bash -%{dracutlibdir}/modules.d/00systemd %{dracutlibdir}/modules.d/00warpclock +%{dracutlibdir}/modules.d/00systemd %{dracutlibdir}/modules.d/01systemd-initrd -%{dracutlibdir}/modules.d/02caps %{dracutlibdir}/modules.d/02systemd-networkd %{dracutlibdir}/modules.d/03modsign %{dracutlibdir}/modules.d/03rescue %{dracutlibdir}/modules.d/04watchdog %{dracutlibdir}/modules.d/10i18n %{dracutlibdir}/modules.d/30convertfs -%{dracutlibdir}/modules.d/35network-legacy -%{dracutlibdir}/modules.d/35network-manager %{dracutlibdir}/modules.d/40network -%{dracutlibdir}/modules.d/45ifcfg %{dracutlibdir}/modules.d/45url-lib +%{dracutlibdir}/modules.d/45ifcfg %{dracutlibdir}/modules.d/50drm %{dracutlibdir}/modules.d/50plymouth %{dracutlibdir}/modules.d/80cms -%{dracutlibdir}/modules.d/80lvmmerge %{dracutlibdir}/modules.d/81cio_ignore +%{dracutlibdir}/modules.d/90livenet %{dracutlibdir}/modules.d/90btrfs %{dracutlibdir}/modules.d/90crypt %{dracutlibdir}/modules.d/90dm %{dracutlibdir}/modules.d/90dmraid %{dracutlibdir}/modules.d/90dmsquash-live -%{dracutlibdir}/modules.d/90dmsquash-live-ntfs -%{dracutlibdir}/modules.d/90kernel-modules-extra %{dracutlibdir}/modules.d/90kernel-modules -%{dracutlibdir}/modules.d/90kernel-network-modules -%{dracutlibdir}/modules.d/90livenet %{dracutlibdir}/modules.d/90lvm %{dracutlibdir}/modules.d/90mdraid %{dracutlibdir}/modules.d/90multipath %{dracutlibdir}/modules.d/90qemu -%{dracutlibdir}/modules.d/90qemu-net -%{dracutlibdir}/modules.d/90stratis +%{dracutlibdir}/modules.d/90kernel-network-modules %{dracutlibdir}/modules.d/91crypt-gpg %{dracutlibdir}/modules.d/91crypt-loop %{dracutlibdir}/modules.d/91zipl -%{dracutlibdir}/modules.d/95cifs -%{dracutlibdir}/modules.d/95dasd_mod -%{dracutlibdir}/modules.d/95dasd_rules -%{dracutlibdir}/modules.d/95dcssblk -%{dracutlibdir}/modules.d/95debug -%{dracutlibdir}/modules.d/95fcoe %{dracutlibdir}/modules.d/95fcoe-uefi -%{dracutlibdir}/modules.d/95fstab-sys -%{dracutlibdir}/modules.d/95iscsi -%{dracutlibdir}/modules.d/95lunmask %{dracutlibdir}/modules.d/95nbd %{dracutlibdir}/modules.d/95nfs -%{dracutlibdir}/modules.d/95qeth_rules +%{dracutlibdir}/modules.d/95ssh-client +%{dracutlibdir}/modules.d/95fcoe +%{dracutlibdir}/modules.d/95iscsi +%{dracutlibdir}/modules.d/95cifs +%{dracutlibdir}/modules.d/95debug %{dracutlibdir}/modules.d/95resume %{dracutlibdir}/modules.d/95rootfs-block -%{dracutlibdir}/modules.d/95ssh-client +%{dracutlibdir}/modules.d/95dcssblk +%{dracutlibdir}/modules.d/95dasd_mod +%{dracutlibdir}/modules.d/95dasd_rules +%{dracutlibdir}/modules.d/95fstab-sys +%{dracutlibdir}/modules.d/95lunmask +%{dracutlibdir}/modules.d/95zfcp_rules +%{dracutlibdir}/modules.d/95qeth_rules %{dracutlibdir}/modules.d/95terminfo %{dracutlibdir}/modules.d/95udev-rules %{dracutlibdir}/modules.d/95virtfs -%{dracutlibdir}/modules.d/95zfcp_rules %{dracutlibdir}/modules.d/97biosdevname -%{dracutlibdir}/modules.d/98dracut-systemd %{dracutlibdir}/modules.d/98ecryptfs %{dracutlibdir}/modules.d/98pollcdrom %{dracutlibdir}/modules.d/98selinux %{dracutlibdir}/modules.d/98syslog +%{dracutlibdir}/modules.d/98dracut-systemd %{dracutlibdir}/modules.d/98usrmount %{dracutlibdir}/modules.d/99base %{dracutlibdir}/modules.d/99fs-lib %{dracutlibdir}/modules.d/99img-lib %{dracutlibdir}/modules.d/99shutdown -%{dracutlibdir}/modules.d/99squash %{dracutlibdir}/modules.d/99suse %{dracutlibdir}/modules.d/99uefi-lib @@ -383,6 +1039,6 @@ ln -s %{dracutlibdir}/modules.d/45ifcfg/write-ifcfg-redhat.sh %{buildroot}/%{dra %dir %{_unitdir}/sysinit.target.wants %{_unitdir}/*.service %{_unitdir}/*/*.service -%{_datarootdir}/bash-completion/completions/dracut +%config %{_sysconfdir}/bash_completion.d/dracut %changelog diff --git a/mkinitrd_setup_dummy b/mkinitrd_setup_dummy new file mode 100644 index 0000000..6461f02 --- /dev/null +++ b/mkinitrd_setup_dummy @@ -0,0 +1,3 @@ +#!/bin/bash + +true diff --git a/purge-kernels b/purge-kernels new file mode 100644 index 0000000..141ae3c --- /dev/null +++ b/purge-kernels @@ -0,0 +1,403 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Getopt::Long; + +sub usage { + print "Usage: $0 [--test]\n"; + print "Reads list of kernels to keep from /etc/zypp/zypp.conf:multiversion.kernels\n"; + print "kernels can be given as , latest(-N), running, oldest(+N).\n"; +} + +# arch/flavor => version-release => [ subpackages ] +my %kernels; + +my @keep_spec; +my ($want_running, $running_version, $running_flavor); + +# do not actually delete anything +my $test_only; + +# undocumented debugging options +my ($fake_config, $fake_rpm_qa, $fake_uname_r, $fake_uname_m); + +sub get_config_line { + my $file = "/etc/zypp/zypp.conf"; + + if ($fake_config) { + return $fake_config; + } + if (!-e $file) { + print STDERR "$0: /etc/zypp/zypp.conf does not exist, exiting.\n"; + exit 0; + } + open(my $fh, '<', $file) or die "$0: $file: $!\n"; + while (<$fh>) { + chomp; + next unless /^\s*multiversion\.kernels\b/; + s/^[^=]*=\s*//; + close($fh); + return $_; + } + close($fh); + return ""; +} + +sub load_config { + my @kernels; + + @kernels = split(/,\s*/, get_config_line()); + for my $kernel (@kernels) { + if ($kernel =~ /^\s*(latest|oldest|running)(\s*[-+]\s*\d+)?\s*$/) { + my $new = { whence => $1, offset => $2 || 0 }; + $new->{offset} =~ s/\s*//g; + if ($new->{whence} eq "running") { + $want_running = 1; + } + push (@keep_spec, $new); + } elsif ($kernel =~ /^\d+\.\d+/) { + my $new = { version => $kernel }; + push (@keep_spec, $new); + } elsif ($kernel =~ /^\s*$/) { + next; + } else { + print STDERR "$0: Ignoring unknow kernel specification in\n"; + print STDERR "/etc/zypp/zypp.conf:multiversion.kernels: $kernel\n"; + } + } +} + +sub add_package { + my ($name, $vr, $arch) = @_; + (my $flavor = $name) =~ s/^kernel-//; + + #print STDERR "add_package: $name $vr $arch\n"; + if ($name eq "kernel-firmware" || $name eq "kernel-coverage") { + return; + } + # Put all subpackages into the same group, except for + # kernel-source-{vanilla,rt}, which are packages on their own + if ($flavor !~ /^source/) { + $flavor =~ s/-.*//; # XXX: No dashes in flavor names + } + # kernel-devel is a subpackage of kernel-source + $flavor =~ s/^devel/source/; + $kernels{"$arch/$flavor"} ||= {}; + $kernels{"$arch/$flavor"}{$vr} ||= []; + push(@{$kernels{"$arch/$flavor"}{$vr}}, "$name-$vr.$arch"); +} + +sub load_packages { + my $pipe; + + if ($fake_rpm_qa) { + open($pipe, '<', $fake_rpm_qa) or die "$fake_rpm_qa: $!\n"; + } else { + open($pipe, '-|', 'rpm', '-qa', '--qf', + '%{n} %{v}-%{r} %{arch}\n', 'kernel-*') or die "rpm: $!\n"; + } + while (<$pipe>) { + chomp; + my ($name, $vr, $arch) = split; + add_package($name, $vr, $arch); + } + close($pipe) +} + +sub sort_versions { + my @versions = @_; + + pipe (my $read, my $write); + my $pid = fork(); + if (!defined($pid)) { + die "Cannot fork: $!\n"; + } elsif ($pid == 0) { + # child + close($read); + open STDOUT, '>&', $write; + open(my $fh, '|-', "/usr/lib/rpm/rpmsort") or die "/usr/lib/rpm/rpmsort: $!\n"; + print $fh join("\n", @versions), "\n"; + close($fh); + die "rpmsort failed ($?)\n" if $? != 0; + + exit 0; + } + # parent + close($write); + @versions = <$read>; + chomp @versions; + close($read); + waitpid($pid, 0); + die "rpmsort failed ($?)\n" if $? != 0; + + return @versions; +} + +# return true if VER1 == VER2 or VER1 == (VER2 minus rebuild counter) +sub version_match { + my ($ver1, $ver2) = @_; + + return 1 if $ver1 eq $ver2; + + # copied from kernel-source/rpm/kernel-spec-macros + $ver2 =~ s/\.[0-9]+($|\.[^.]*[^.0-9][^.]*$)/$1/; + return $ver1 eq $ver2; +} + +sub list_old_versions { + my ($flavor) = @_; + + my $is_source = $flavor =~ /\/(source|syms)/; + my $kernels = $kernels{$flavor}; + my @versions = sort_versions(keys(%$kernels)); + my %idx = ( + oldest => 0, + latest => scalar(@versions) - 1, + ); + if ($want_running && ($running_flavor eq $flavor || $is_source)) { + for (my $i = scalar(@versions) - 1; $i >= 0; $i--) { + if (version_match($running_version, $versions[$i])) { + $idx{running} = $i; + last; + } + } + if (!exists($idx{running}) && !$is_source) { + print STDERR "$0: Running kernel $running_version-$running_flavor not installed.\n"; + print "NOT removing any packages for flavor $flavor.\n"; + return; + } + } + my %delete = map { $_ => 1 } @versions; + for my $keep (@keep_spec) { + if ($keep->{version}) { + for my $ver (@versions) { + if (version_match($keep->{version}, $ver)) { + $delete{$ver} = 0; + } + } + } elsif ($keep->{whence}) { + next unless exists($idx{$keep->{whence}}); + my $idx = $idx{$keep->{whence}}; + $idx += $keep->{offset}; + next unless $idx >= 0 && $idx < scalar(@versions); + $delete{$versions[$idx]} = 0; + } else { + die "??"; + } + } + return grep { $delete{$_} } @versions; +} + +sub package_exists { + my ($version, $archs, $flavors) = @_; + + for my $arch (@$archs) { + for my $flavor (@$flavors) { + my $config = "$arch/$flavor"; + if (exists($kernels{$config}) + && exists($kernels{$config}->{$version})) { + return 1; + } + } + } + return 0; +} + +sub list_old_packages { + my (@packages, @archs, @flavors); + my (@syms_flavors, @binary_flavors, @source_configs); + + # there are some inter-dependencies among the kernel packages, + # so we have to be careful + my %t = map { s:/.*::; $_ => 1 } keys(%kernels); + @archs = sort(keys(%t)); + %t = map { s:.*/::; $_ => 1 } keys(%kernels); + @flavors = sort(keys(%t)); + @syms_flavors = grep { /^syms/ } @flavors; + @binary_flavors = grep { !/^(source|syms)/ } @flavors; + @source_configs = grep { /\/source/ } sort(keys(%kernels)); + + for my $arch (@archs) { + for my $flavor (@syms_flavors) { + my $config = "$arch/$flavor"; + next unless exists($kernels{$config}); + my @versions = list_old_versions($config); + for my $ver (@versions) { + push(@packages, @{$kernels{$config}->{$ver}}); + delete($kernels{$config}->{$ver}); + } + } + for my $flavor (@binary_flavors) { + my $config = "$arch/$flavor"; + next unless exists($kernels{$config}); + my @versions = list_old_versions($config); + for my $ver (@versions) { + my @pacs = @{$kernels{$config}->{$ver}}; + my $remove_all = 1; + # do not remove kernel-$flavor-devel-$ver + # if kernel-syms-$ver still exists + if (grep { /-devel$/ } @pacs) { + my $syms = "syms"; + if ($flavor =~ /^rt/) { + $syms = "syms-rt"; + } + if (exists($kernels{$syms}->{$ver})) { + $remove_all = 0; + @pacs = grep { !/-devel$/ } + @pacs; + } + } + push(@packages, @pacs); + if ($remove_all) { + delete($kernels{$config}->{$ver}); + } + } + } + } + for my $config (@source_configs) { + my @versions = list_old_versions($config); + for my $ver (@versions) { + # Remove kernel-{devel,source} only if no other package + # of the same version exists + next if package_exists($ver, \@archs, \@binary_flavors); + push(@packages, @{$kernels{$config}->{$ver}}); + } + } + return @packages; +} + +sub find_package { + my $name = shift @_; + my $version = shift @_; + my @packages = @_; + my $expr = "^" . quotemeta($version ? "$name-$version" : $name); + my @found = grep { $_ =~ $expr } @packages; + return @found if @found; + $expr = "^" . quotemeta($name) . " = " . quotemeta($version) . "\$"; + @found = grep { + my @provides = qx/rpm -q --provides $_/; + chomp (@provides); + grep { $_ =~ $expr} @provides; + } @packages; + return @found; +} + +# Try to remove a list of packages. +# +# If there is a KMP or livepatch depending on the package remove it as well. If +# there is another package depending on the kernel keep the kernel. If there is +# a package that depends on a KMP keep the KMP and a kernel required to use the +# KMP. +# In each step a KMP or livepatch may be added or a package which cannot be +# removed due to dependencies is marked as taboo and removed from the list. +# +# Finish when packages uninstall successfully or we can't find any packages to +# add or remove from the list to make it uninstallable. + +sub remove_packages { + my @packages = @_; + my %taboo_packages; + + while (1) { + pipe(my $read, my $write); + my $pid = fork(); + if (!defined($pid)) { + die "Cannot fork: $!\n"; + } elsif($pid == 0) { + # child + close($read); + open STDOUT, '>&', $write; + open STDERR, '>&', $write; + $ENV{LC_ALL} = "C"; + my @cmd = qw(rpm -e); + push(@cmd, "--test") if $test_only; + exec(@cmd, @packages) or die "rpm: $!\n"; + } + # parent + close($write); + my @out = <$read>; + chomp @out; + close($read); + waitpid($pid, 0); + if ($? == 0) { + print "Removed:\n ", join("\n ", @packages), "\n"; + return 1; + } + my $retry = 0; + my %old_packages = map { $_ => 1 } @packages; + my %new_packages; + for (@out) { + if (/ is needed by \(installed\) (kernel-syms-.*|kgraft-patch-.*|kernel-livepatch-.*|.*-kmp-.*)/ && + !$old_packages{$1} && !$taboo_packages{$1}) { + push(@packages, $1) unless $new_packages{$1}; + $new_packages{$1} = 1; + $retry = 1; + } elsif (/([^ \t]*)(?: = ([^ \t]*))? is needed by \(installed\) /) { + my @unremovable = find_package($1, $2, @packages); + my $match = $unremovable[$#unremovable]; + if ($match) { + print STDERR "$0: $_\n"; + print STDERR "$0: Keeping " . ($2 ? "$1 = $2" : $1) . " ($match)\n"; + @packages = grep { $_ !~ $match } @packages; + $taboo_packages{$match} = 1; + $retry = 1; + last; # Only remove one package providing the dependency from the list + } + } + } + if (!$retry) { + print STDERR join("\n", @out), "\n"; + print STDERR "$0: giving up.\n"; + return 0; + } + } +} + +if (!GetOptions( + "h|help" => sub { usage(); exit; }, + "--test" => \$test_only, + "--fake-config=s" => \$fake_config, + "--fake-rpm-qa=s" => \$fake_rpm_qa, + "--fake-uname-r=s" => \$fake_uname_r, + "--fake-uname-m=s" => \$fake_uname_m)) { + usage(); + exit 1; +} +load_config(); +if (!@keep_spec) { + print STDERR "$0: multiversion.kernels not configured in /etc/zypp/zypp.conf, exiting.\n"; + exit 0; +} + +load_packages(); +if ($want_running) { + $running_version = $fake_uname_r ? $fake_uname_r : `uname -r`; + chomp($running_version); + ($running_flavor = $running_version) =~ s/.*-//; + $running_version =~ s/-[^-]*$//; + (my $release = $running_version) =~ s/.*-//; + $running_version =~ s/-[^-]*$//; + + # copied from kernel-source/rpm/mkspec + $running_version =~ s/\.0-rc/.rc/; + $running_version =~ s/-rc\d+//; + $running_version =~ s/-/./g; + + $running_version .= "-$release"; + + my $arch = $fake_uname_m ? $fake_uname_m : `uname -m`; + chomp($arch); + $arch =~ s/^i.86$/i586/; + $running_flavor = "$arch/$running_flavor"; +} +my @remove = list_old_packages(); +if (!@remove) { + print STDERR "$0: Nothing to do.\n"; + exit 0; +} +if (remove_packages(@remove)) { + exit 0; +} +exit 1; diff --git a/purge-kernels.service b/purge-kernels.service new file mode 100644 index 0000000..b08daae --- /dev/null +++ b/purge-kernels.service @@ -0,0 +1,15 @@ +[Unit] +Description=Purge old kernels +After=local-fs.target +ConditionPathExists=/boot/do_purge_kernels +ConditionPathIsReadWrite=/ + +[Service] +Type=oneshot +Nice=19 +IOSchedulingClass=idle +ExecStartPre=/bin/rm -f /boot/do_purge_kernels +ExecStart=/sbin/purge-kernels + +[Install] +WantedBy=multi-user.target diff --git a/s390x_persistent_device.conf b/s390x_persistent_device.conf new file mode 100644 index 0000000..e28dadd --- /dev/null +++ b/s390x_persistent_device.conf @@ -0,0 +1,10 @@ +# Set persistent policy by-path on s390 platforms, to prevent +# the system from hanging during the boot when vDISKs are used +# as swap devices (bsc#915218). +# +# Indeed, they are required to be present early in the boot +# process to possibly resume the system. However, since +# they are cleared after logoff/logon and the UUID will likely +# change after reinitialization, these will not be found with +# the default by-uuid policy. +persistent_policy=by-path