Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.1:Staging:C
dracut
0088-91zipl-Add-new-module-to-update-s390x-conf...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0088-91zipl-Add-new-module-to-update-s390x-configuration.patch of Package dracut
From 78329f4df2afc9fae11ea30dd11839d956d4af08 Mon Sep 17 00:00:00 2001 From: Hannes Reinecke <hare@suse.de> 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 <hare@suse.de> --- 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 diff --git a/dracut.cmdline.7.asc b/dracut.cmdline.7.asc index 0f1ef82..c7508ca 100644 --- a/dracut.cmdline.7.asc +++ b/dracut.cmdline.7.asc @@ -726,6 +726,20 @@ CIO_IGNORE rd.cio_accept=0.0.0180,0.0.0800,0.0.0801,0.0.0802 -- +ZIPL +~~~~ +**rd.zipl=**__<path to blockdevice>__:: + 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**:: diff --git a/modules.d/91zipl/install_zipl_cmdline.sh b/modules.d/91zipl/install_zipl_cmdline.sh new file mode 100644 index 0000000..8b454b8 --- /dev/null +++ b/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 diff --git a/modules.d/91zipl/module-setup.sh b/modules.d/91zipl/module-setup.sh new file mode 100644 index 0000000..a8d95c5 --- /dev/null +++ b/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 +} diff --git a/modules.d/91zipl/parse-zipl.sh b/modules.d/91zipl/parse-zipl.sh new file mode 100644 index 0000000..f8c2ca4 --- /dev/null +++ b/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 -- 1.8.4.5
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor