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> Contrary to the original patch, this one has been modified to check for /boot/zipl, the location of the first stage kernel in indirect boot, in order not to install on systems booting directly via zipl. Signed-off-by: Daniel Molkentin <daniel.molkentin@suse.com>master
parent
577f109243
commit
ea7ffef13e
|
@ -1001,6 +1001,20 @@ be mounted read only through a higher level transient overlay directory, has
|
|||
been implemented through the multiple lower layers feature of OverlayFS.
|
||||
|
||||
|
||||
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**::
|
||||
|
|
|
@ -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
|
|
@ -0,0 +1,48 @@
|
|||
#!/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)
|
||||
# Only for systems on s390 using indirect booting via userland grub
|
||||
[ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1
|
||||
# /boot/zipl contains a first stage kernel used to launch grub in initrd
|
||||
[ -d /boot/zipl ] || 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
|
||||
}
|
|
@ -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
|
Loading…
Reference in New Issue