File s390-tools-ALP-zdev-live.patch of Package s390-tools.34875

---
 zdev/dracut/96zdev-live/module-setup.sh    |   32 +++++++++++++++++++++++++
 zdev/dracut/96zdev-live/parse-zdev-live.sh |   36 +++++++++++++++++++++++++++++
 zdev/dracut/96zdev-live/write-udev-live.sh |   11 ++++++++
 zdev/dracut/Makefile                       |   15 ++++++++++--
 4 files changed, 92 insertions(+), 2 deletions(-)

Index: s390-tools-2.30.0/zdev/dracut/96zdev-live/module-setup.sh
===================================================================
--- /dev/null
+++ s390-tools-2.30.0/zdev/dracut/96zdev-live/module-setup.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+# called by dracut
+check() {
+    arch=${DRACUT_ARCH:-$(uname -m)}
+    [ "$arch" = "s390" -o "$arch" = "s390x" ] || return 1
+
+    require_binaries chzdev || return 1
+
+    [[ $hostonly ]] || return 0
+
+    # or on request
+    return 255
+}
+
+# called by dracut
+depends() {
+    echo bash
+    return 0
+}
+
+# called by dracut
+installkernel() {
+    instmods ctcm lcs qeth qeth_l2 qeth_l3  dasd_diag_mod dasd_eckd_mod dasd_fba_mod
+}
+
+# called by dracut
+install() {
+    inst_hook cmdline     41 "$moddir/parse-zdev-live.sh"
+    inst_hook cleanup     41 "$moddir/write-udev-live.sh"
+    inst_multiple chzdev
+}
Index: s390-tools-2.30.0/zdev/dracut/96zdev-live/parse-zdev-live.sh
===================================================================
--- /dev/null
+++ s390-tools-2.30.0/zdev/dracut/96zdev-live/parse-zdev-live.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+#
+# 96zdev-live/parse-zdev-live.sh
+#   Parse the kernel command line for rd.zdev kernel parameters. These
+#   parameters are evaluated and used to configure z Systems specific devices
+#   with chzdev(8), especially for use on live/installation type media.
+#   Note: this is only active on no-hostonly initrds (by default).
+#
+# Format:
+#   rd.zdev=TYPE,DEVICE[,SETTINGS]
+#
+#     where
+#
+#   TYPE:      all device types supported by chzdev(8), like qeth and dasd
+#   DEVICE:    device specification as supported by chzdev(8) '--enable',
+#              with the exception of specifying multiple devices, which
+#              need to be separated by commas.  Channel group members
+#              (or zFCP parameters) in turn are separated by colons.
+#   SETTINGS:  Settings are positional arguments of chzdev in the form
+#              KEY=VALUE separated by commas.
+
+zdev_enable="--persistent --enable"
+zdev_base_args="--yes --no-root-update --no-settle"
+
+for zdevs in $(getargs rd.zdev) ; do
+    IFS=',' read -r -a zdev <<< "$zdevs"
+    if [ -n "$zdev" ] && [ "$zdev" = "no-auto" -o "$zdev" = "auto" ] ; then
+        : # ignore, as it's handled by 95zdev
+    elif [ -z "$zdev" ] || [ -z "${zdev[1]}" ] ; then
+        warn "Unsupported usage of rd.zdev=$zdevs"
+    else
+        info "+ chzdev $zdev_enable [...] ${zdev[@]}"
+        chzdev $zdev_enable $zdev_base_args "${zdev[@]}"
+    fi
+done
+
Index: s390-tools-2.30.0/zdev/dracut/96zdev-live/write-udev-live.sh
===================================================================
--- /dev/null
+++ s390-tools-2.30.0/zdev/dracut/96zdev-live/write-udev-live.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+#
+# 96zdev-live/write-udev-live.sh
+#   Copy udeve rules generated by chzdev for device activation starting with 41
+#   to a *writable* /sysroot -- this is primarily useful for live/installation-
+#   type media (and by default only active on no-hostonly initrds)
+#
+
+if [ -w /sysroot/etc/udev/rules.d ]; then
+  cp -p /etc/udev/rules.d/41-* /sysroot/etc/udev/rules.d
+fi
Index: s390-tools-2.30.0/zdev/dracut/Makefile
===================================================================
--- s390-tools-2.30.0.orig/zdev/dracut/Makefile
+++ s390-tools-2.30.0/zdev/dracut/Makefile
@@ -3,17 +3,23 @@ include ../../common.mak
 
 ZDEVDIR := 95zdev
 ZDEVKDUMPDIR := 95zdev-kdump
+ZDEVLIVEDIR := 96zdev-live
 
 # HAVE_DRACUT
 #
-# This install time parameter determines whether the zdev dracut module is
-# installed (HAVE_DRACUT=1) or not (default). When installed, the module
+# This install time parameter determines whether the zdev dracut modules are
+# installed (HAVE_DRACUT=1) or not (default). When installed, the 95zdev module
 # performs the following functions when dracut is run:
 #
 #  - copy the persistent root device configuration to the initial ram disk
 #  - install a boot-time hook to apply firmware-provided configuration data
 #    to the system
 #
+# The 96zdev-live module performs the following functions when dracut is run:
+#
+#  - install a boot-time hook to apply command-line-provided configuration data
+#    to a no-hostonly built initial ram disk for use in live/installation media
+#
 ifeq ($(HAVE_DRACUT),1)
 install:
 	$(INSTALL) -m 755 -d $(DESTDIR)$(DRACUTMODDIR)/
@@ -25,4 +31,9 @@ install:
 	$(INSTALL) -m 755 -d $(DESTDIR)$(DRACUTMODDIR)/$(ZDEVKDUMPDIR)
 	$(INSTALL) -m 755 $(ZDEVKDUMPDIR)/module-setup.sh \
 		$(DESTDIR)$(DRACUTMODDIR)/$(ZDEVKDUMPDIR)/
+	$(INSTALL) -m 755 -d $(DESTDIR)$(DRACUTMODDIR)/$(ZDEVLIVEDIR)
+	$(INSTALL) -m 755 $(ZDEVLIVEDIR)/module-setup.sh \
+		$(ZDEVLIVEDIR)/parse-zdev-live.sh \
+		$(ZDEVLIVEDIR)/write-udev-live.sh \
+		$(DESTDIR)$(DRACUTMODDIR)/$(ZDEVLIVEDIR)/
 endif
openSUSE Build Service is sponsored by