SUSE S/390 integration
v2 cover SUSE S/390 integration
SUSE is keeping the S/390 device configuration in udev rules, on rule per device.
And it doesn't have the RH-specific configuration scripts (obviously). This patchset abstracts away the RH-specific configuration and adds modules to make dracut boot on SLES installations.
I've also added a new SUSE-specific mkinitrd compability script, as the SUSE mkinitrd is quite different.
And some minor fixes which came up during package build.
Please apply.
Hannes Reinecke (13):
95dasd: Install kernel modules only once
95dasd: Only install module if normalize_dasd_arg is present 95dasd_mod: make dasd_cio_free optional
95zfcp: Make installation optional
95znet: Make installation optional
Add DASD configuration for SuSE
Add zfcp scripts for SUSE
Make logfile configurable
mkinitrd-suse: Add SUSE compability wrapper for dracut mkinitrd-suse.8.asc: Add manpage for SUSE compat mkinitrd Fixup keymap setting for openSUSE
Fixup script permissions
Remove shebang from shell-completion files
Makefile | 1 + dracut-bash-completion.sh | 2 +- dracut-functions.sh | 28 +++ dracut.8.asc | 6 + dracut.sh | 4 + lsinitrd-bash-completion.sh | 2 +- mkinitrd-suse.8.asc | 106 +++++++++ mkinitrd-suse.sh | 354 +++++++++++++++++++++++++++++++ modules.d/03modsign/load-modsign-keys.sh | 0 modules.d/03modsign/module-setup.sh | 0 modules.d/10i18n/module-setup.sh | 3 + modules.d/40network/net-lib.sh | 0 modules.d/40network/parse-vlan.sh | 0 modules.d/50drm/module-setup.sh | 0 modules.d/91crypt-loop/crypt-loop-lib.sh | 0 modules.d/95dasd/module-setup.sh | 7 +- modules.d/95dasd_mod/module-setup.sh | 3 +- modules.d/95dasd_mod/parse-dasd-mod.sh | 4 +- modules.d/95dasd_rules/module-setup.sh | 27 +++ modules.d/95dasd_rules/parse-dasd.sh | 56 +++++ modules.d/95zfcp/module-setup.sh | 4 +- modules.d/95zfcp_rules/module-setup.sh | 25 +++ modules.d/95zfcp_rules/parse-zfcp.sh | 65 ++++++ modules.d/95znet/module-setup.sh | 1 + modules.d/98pollcdrom/pollcdrom.sh | 0 25 files changed, 686 insertions(+), 12 deletions(-) create mode 100644 mkinitrd-suse.8.asc create mode 100755 mkinitrd-suse.sh mode change 100644 => 100755 modules.d/03modsign/load-modsign-keys.sh mode change 100644 => 100755 modules.d/03modsign/module-setup.sh mode change 100644 => 100755 modules.d/40network/net-lib.sh mode change 100644 => 100755 modules.d/40network/parse-vlan.sh mode change 100644 => 100755 modules.d/50drm/module-setup.sh mode change 100644 => 100755 modules.d/91crypt-loop/crypt-loop-lib.sh create mode 100755 modules.d/95dasd_rules/module-setup.sh create mode 100755 modules.d/95dasd_rules/parse-dasd.sh create mode 100755 modules.d/95zfcp_rules/module-setup.sh create mode 100755 modules.d/95zfcp_rules/parse-zfcp.sh mode change 100644 => 100755 modules.d/98pollcdrom/pollcdrom.sh
Signature · 1 line
1.8.1.4
A message that is not in the archive (sent off-list or not yet received): 1385727234-5001-1-git-send-email-hare-l3A5Bk7waGM@public.gmane.org
PATCH v2 1/13 95dasd: Install kernel modules only once
Move kernel module selection to 95dasd_mod and make 95dasd depend on that module.
--- modules.d/95dasd/module-setup.sh | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-)
modules.d/95dasd/module-setup.sh +1 -5
@@ -11,15 +11,11 @@ check() { # called by dracut depends() { + echo "dasd_mod" return 0 } # called by dracut -installkernel() { - instmods dasd_mod dasd_eckd_mod dasd_fba_mod dasd_diag_mod -} - -# called by dracut install() { inst_hook cmdline 30 "$moddir/parse-dasd.sh" inst_multiple dasdinfo dasdconf.sh normalize_dasd_arg
Signature · 1 line
1.8.1.4
PATCH v2 2/13 95dasd: Only install module if normalize_dasd_arg is present
In reply to a message not in the archivenormalize_dasd_arg is a RedHat specific script, so no point installing this module if the script isn't present.
--- modules.d/95dasd/module-setup.sh | 1 + 1 file changed, 1 insertion(+)
modules.d/95dasd/module-setup.sh +1 -0
@@ -5,6 +5,7 @@ # called by dracut check() { local _arch=$(uname -m) + [ -x /sbin/normalize_dasd_arg ] || return 1 [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1 return 0 }
Signature · 1 line
1.8.1.4
PATCH v2 3/13 95dasd_mod: make dasd_cio_free optional
In reply to a message not in the archivedasd_cio_free is a RedHat-specific tool, so make it optional.
--- modules.d/95dasd_mod/module-setup.sh | 3 ++- modules.d/95dasd_mod/parse-dasd-mod.sh | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-)
modules.d/95dasd_mod/module-setup.sh +2 -1
@@ -23,6 +23,7 @@ installkernel() { # called by dracut install() { inst_hook cmdline 31 "$moddir/parse-dasd-mod.sh" - inst_multiple dasd_cio_free grep sed seq + inst_multiple grep sed seq + inst_multiple -o dasd_cio_free }
modules.d/95dasd_mod/parse-dasd-mod.sh +3 -1
@@ -15,4 +15,6 @@ if [ -n "$mod_args" ]; then fi unset dasd_arg -dasd_cio_free +if [ -x /sbin/dasd_cio_free ] ; then + dasd_cio_free +fi
Signature · 1 line
1.8.1.4
PATCH v2 4/13 95zfcp: Make installation optional
In reply to a message not in the archivezfcp_cio_free is a RedHat-specific tool, so do not install this module if the program isn't present.
--- modules.d/95zfcp/module-setup.sh | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
modules.d/95zfcp/module-setup.sh +1 -3
@@ -5,6 +5,7 @@ # called by dracut check() { arch=$(uname -m) + [ -x /sbin/zfcp_cio_free ] || return 1 [ "$arch" = "s390" -o "$arch" = "s390x" ] || return 1 return 0
@@ -12,9 +13,6 @@ check() { # called by dracut depends() { - arch=$(uname -m) - [ "$arch" = "s390" -o "$arch" = "s390x" ] || return 1 - return 0 }
Signature · 1 line
1.8.1.4
PATCH v2 5/13 95znet: Make installation optional
In reply to a message not in the archiveznet_cio_free is a RedHat-specific tool, so do not install this module on systems where the program is missing.
--- modules.d/95znet/module-setup.sh | 1 + 1 file changed, 1 insertion(+)
modules.d/95znet/module-setup.sh +1 -0
@@ -5,6 +5,7 @@ # called by dracut check() { arch=$(uname -m) + [ -z /sbin/znet_cio_free ] || return 1 [ "$arch" = "s390" -o "$arch" = "s390x" ] || return 1 return 0
Signature · 1 line
1.8.1.4
PATCH v2 6/13 Add DASD configuration for SuSE
In reply to a message not in the archiveOn SuSE the DASD configuration is kept in udev rules, one rule file per device. So add a new module for copying and creating these rules during boot.
--- dracut-functions.sh | 28 +++++++++++++++++ modules.d/95dasd_rules/module-setup.sh | 27 ++++++++++++++++ modules.d/95dasd_rules/parse-dasd.sh | 56 ++++++++++++++++++++++++++++++++++ 3 files changed, 111 insertions(+) create mode 100755 modules.d/95dasd_rules/module-setup.sh create mode 100755 modules.d/95dasd_rules/parse-dasd.sh
dracut-functions.sh +28 -0
@@ -899,6 +899,34 @@ inst_rules() { done } +inst_rules_wildcard() { + local _target=/etc/udev/rules.d _rule _found + + inst_dir "${udevdir}/rules.d" + inst_dir "$_target" + for _rule in ${udevdir}/rules.d/$1 ${dracutbasedir}/rules.d/$1 ; do + if [[ -e $_rule ]]; then + inst_rule_programs "$_rule" + inst_rule_group_owner "$_rule" + inst_rule_initqueue "$_rule" + inst_simple "$_rule" + _found=$_rule + fi + done + if [ -n ${hostonly} ] ; then + for _rule in ${_target}/$1 ; do + if [[ -f $_rule ]]; then + inst_rule_programs "$_rule" + inst_rule_group_owner "$_rule" + inst_rule_initqueue "$_rule" + inst_simple "$_rule" + _found=$_rule + fi + done + fi + [[ $_found ]] || dinfo "Skipping udev rule: $_rule" +} + prepare_udev_rules() { [ -z "$UDEVVERSION" ] && export UDEVVERSION=$(udevadm --version)
modules.d/95dasd_rules/module-setup.sh new file +27 -0
@@ -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() { + local _arch=$(uname -m) + [ -x /sbin/dasd_configure ] || return 1 + [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1 + return 0 +} + +# called by dracut +depends() { + echo 'dasd_mod' + return 0 +} + +# 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 + fi + inst_rules 59-dasd.rules +}
modules.d/95dasd_rules/parse-dasd.sh new file +56 -0
56 lines not on this page · raw message
Signature · 1 line
1.8.1.4
PATCH v2 7/13 Add zfcp scripts for SUSE
In reply to a message not in the archiveSuSE is storing the zfcp configuration in udev files, so we should be including these.
--- modules.d/95zfcp_rules/module-setup.sh | 25 +++++++++++++ modules.d/95zfcp_rules/parse-zfcp.sh | 65 ++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100755 modules.d/95zfcp_rules/module-setup.sh create mode 100755 modules.d/95zfcp_rules/parse-zfcp.sh
modules.d/95zfcp_rules/module-setup.sh new file +25 -0
@@ -0,0 +1,25 @@ +#!/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) + [ -x /sbin/zfcp_disk_configure ] || return 1 + [ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1 + return 0 +} + +# called by dracut +depends() { + return 0 +} + +# called by dracut +install() { + inst_multiple /usr/lib/udev/collect + inst_hook cmdline 30 "$moddir/parse-zfcp.sh" + if [[ $hostonly ]] ; then + inst_rules_wildcard 51-zfcp-*.rules + fi +}
modules.d/95zfcp_rules/parse-zfcp.sh new file +65 -0
65 lines not on this page · raw message
Signature · 1 line
1.8.1.4
PATCH v2 8/13 Make logfile configurable
In reply to a message not in the archiveAdd '--logfile' option to make the log file configurable during runtime.
--- dracut.8.asc | 6 ++++++ dracut.sh | 4 ++++ 2 files changed, 10 insertions(+)
dracut.8.asc +6 -0
@@ -275,6 +275,12 @@ Default: **--sshkey** _<sshkey file>_:: ssh key file used with ssh-client module. +**--logfile** _<logfile>_:: logfile to use; overrides any setting from + the configuration files. ++ +Default: + _/var/log/dracut.log_ + **-l, --local**:: activates the local mode. dracut will use modules from the current working directory instead of the system-wide installed modules in
dracut.sh +4 -0
@@ -183,6 +183,7 @@ Creates initial ramdisk images for preloading modules --keep Keep the temporary initramfs for debugging purposes --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) If [LIST] has multiple arguments, then you have to put these in quotes.
@@ -335,6 +336,7 @@ TEMP=$(unset POSIXLY_CORRECT; getopt \ --long debug \ --long profile \ --long sshkey: \ + --long logfile: \ --long verbose \ --long quiet \ --long local \
@@ -418,6 +420,7 @@ while :; do --debug) debug="yes";; --profile) profile="yes";; --sshkey) sshkey="$2"; shift;; + --logfile) logfile_l="$2"; shift;; -v|--verbose) ((verbosity_mod_l++));; -q|--quiet) ((verbosity_mod_l--));; -l|--local)
@@ -690,6 +693,7 @@ stdloglvl=$((stdloglvl + verbosity_mod_l)) [[ $ro_mnt_l ]] && ro_mnt="yes" [[ $early_microcode_l ]] && early_microcode=$early_microcode_l [[ $early_microcode ]] || early_microcode=no +[[ $logfile_l ]] && logfile="$logfile_l" # eliminate IFS hackery when messing with fw_dir fw_dir=${fw_dir//:/ }
Signature · 1 line
1.8.1.4
PATCH v2 9/13 mkinitrd-suse: Add SUSE compability wrapper for dracut
In reply to a message not in the archiveSUSE has its own mkinitrd system. As the arguments clash with the dracut-provided mkinitrd script I've added a new mkinitrd-suse.sh wrapper.
--- mkinitrd-suse.sh | 354 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 354 insertions(+) create mode 100755 mkinitrd-suse.sh
mkinitrd-suse.sh new file +354 -0
@@ -0,0 +1,354 @@ +#!/bin/bash --norc +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh +# +# mkinitrd compability wrapper for SUSE. +# +# Copyright (c) 2013 SUSE Linux Products GmbH. All rights reserved. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +boot_dir="/boot" +quiet=0 +host_only=1 +force=0 +logfile=/var/log/YaST2/mkinitrd.log +dracut_cmd=dracut + +error() { echo "$@" >&2; } + +usage () { + [[ $1 = '-n' ]] && cmd=echo || cmd=error + + $cmd "usage: ${0##*/} [options]" + $cmd "" + $cmd " Create initial ramdisk images that contain all kernel modules needed" + $cmd " in the early boot process, before the root file system becomes" + $cmd " available." + $cmd " This usually includes SCSI and/or RAID modules, a file system module" + $cmd " for the root file system, or a network interface driver module for dhcp." + $cmd "" + $cmd " options:" + $cmd " -f \"feature list\" Features to be enabled when generating initrd." + $cmd " Available features are:" + $cmd " iscsi, md, multipath, lvm, lvm2," + $cmd " ifup, fcoe, dcbd" + $cmd " -k \"kernel list\" List of kernel images for which initrd files are" + $cmd " created. Defaults to all kernels found in /boot." + $cmd " -i \"initrd list\" List of file names for the initrd; position have" + $cmd " match to \"kernel list\". Defaults to all kernels" + $cmd " found in /boot." + $cmd " -b boot_dir Boot directory. Defaults to /boot." + $cmd " -t tmp_dir Temporary directory. Defaults to /var/tmp." + $cmd " -M map System.map file to use." + $cmd " -A Create a so called \"monster initrd\" which" + $cmd " includes all features and modules possible." + $cmd " -B Do not update bootloader configuration." + $cmd " -v Verbose mode." + $cmd " -L Disable logging." + $cmd " -h This help screen." + $cmd " -m \"module list\" Modules to include in initrd. Defaults to the" + $cmd " INITRD_MODULES variable in /etc/sysconfig/kernel" + $cmd " -u \"DomU module list\" Modules to include in initrd. Defaults to the" + $cmd " DOMU_INITRD_MODULES variable in" + $cmd " /etc/sysconfig/kernel." + $cmd " -d root_device Root device. Defaults to the device from" + $cmd " which / is mounted. Overrides the rootdev" + $cmd " enviroment variable if set." + $cmd " -j device Journal device" + $cmd " -D interface Run dhcp on the specified interface." + $cmd " -I interface Configure the specified interface statically." + $cmd " -a acpi_dsdt Attach compiled ACPI DSDT (Differentiated" + $cmd " System Description Table) to initrd. This" + $cmd " replaces the DSDT of the BIOS. Defaults to" + $cmd " the ACPI_DSDT variable in /etc/sysconfig/kernel." + $cmd " -s size Add splash animation and bootscreen to initrd." + + [[ $1 = '-n' ]] && exit 0 + exit 1 +} + +# Little helper function for reading args from the commandline. +# it automatically handles -a b and -a=b variants, and returns 1 if +# we need to shift $3. +read_arg() { + # $1 = arg name + # $2 = arg value + # $3 = arg parameter + param="$1" + local rematch='^[^=]*=(.*)$' result + if [[ $2 =~ $rematch ]]; then + read "$param" <<< "${BASH_REMATCH[1]}" + else + for ((i=3; $i <= $#; i++)); do + # Only read next arg if it not an arg itself. + if [[ ${@:$i:1} = -* ]];then + break + fi + result="$result ${@:$i:1}" + # There is no way to shift our callers args, so + # return "no of args" to indicate they should do it instead. + done + read "$1" <<< "$result" + return $(($i - 3)) + fi +} + +# Helper functions to calculate ipconfig command line +calc_netmask() { + local prefix=$1 + + [ -z "$prefix" ] && return + mask=$(echo "(2 ^ 32) - (2 ^ $prefix)" | bc -l) + byte1=$(( mask >> 24 )) + byte2=$(( mask >> 16 )) + byte3=$(( mask >> 8 )) + byte4=$(( mask & 0xff )) + netmask=$(printf "%d.%d.%d.%d" $(( byte1 & 0xff )) $(( byte2 & 0xff )) $(( byte3 & 0xff )) $byte4); + + echo $netmask +} + +ipconfig() { + local interface=$1 + local iplink macaddr broadcast gateway ipaddr prefix netmask + + iplink=$(ip addr show dev $interface | sed -n 's/ *inet \(.*\) brd.*/\1/p') + macaddr=$(ip addr show dev $interface | sed -n 's/.*ether \(.*\) brd.*/\1/p') + broadcast=$(ip addr show dev $interface | sed -n 's/.*brd \(.*\) scope.*/\1/p') + gateway=$(ip route show dev $interface | sed -n 's/default via \([0-9\.]*\).*/\1/p') + + ipaddr=${iplink%%/*} + prefix=${iplink##*/} + netmask=$(calc_netmask $prefix) + + echo "${ipaddr}:${serveraddr}:${gateway}:${netmask}:${hostname}:${interface}:none::${macaddr}" +} + +is_xen_kernel() { + local kversion=$1 + local root_dir=$2 + local cfg + + for cfg in ${root_dir}/boot/config-$kversion $root_dir/lib/modules/$kversion/build/.config + do + test -r $cfg || continue + grep -q "^CONFIG_XEN=y\$" $cfg + return + done + test $kversion != "${kversion%-xen*}" + return +} + + +# Taken over from SUSE mkinitrd +default_kernel_images() { + local regex kernel_image kernel_version version_version initrd_image + local qf='%{NAME}-%{VERSION}-%{RELEASE}\n' + + case "$(uname -m)" in + s390|s390x) + regex='image' + ;; + ppc|ppc64) + regex='vmlinux' + ;; + i386|x86_64) + regex='vmlinuz' + ;; + arm*) + regex='[uz]Image' + ;; + aarch64) + regex='Image' + ;; + *) regex='vmlinu.' + ;; + esac + + kernel_images="" + initrd_images="" + for kernel_image in $(ls $boot_dir \ + | sed -ne "\|^$regex\(-[0-9.]\+-[0-9]\+-[a-z0-9]\+$\)\?|p" \ + | grep -v kdump$ ) ; do + + # Note that we cannot check the RPM database here -- this + # script is itself called from within the binary kernel + # packages, and rpm does not allow recursive calls. + + [ -L "$boot_dir/$kernel_image" ] && continue + [ "${kernel_image%%.gz}" != "$kernel_image" ] && continue + kernel_version=$(/usr/bin/get_kernel_version \ + $boot_dir/$kernel_image 2> /dev/null) + initrd_image=$(echo $kernel_image | sed -e "s|${regex}|initrd|") + if [ "$kernel_image" != "$initrd_image" -a \ + -n "$kernel_version" -a \ + -d "/lib/modules/$kernel_version" ]; then + kernel_images="$kernel_images $boot_dir/$kernel_image" + initrd_images="$initrd_images $boot_dir/$initrd_image" + fi + done + for kernel_image in $kernel_images;do + kernels="$kernels ${kernel_image#*-}" + done + for initrd_image in $initrd_images;do + targets="$targets $initrd_image" + done + host_only=1 + force=1 +} + +while (($# > 0)); do + case ${1%%=*} in + -f) read_arg feature_list "$@" || shift $? + # Could be several features + ;; + -k) # Would be nice to get a list of images here + read_arg kernel_images "$@" || shift $? + for kernel_image in $kernel_images;do + kernels="$kernels ${kernel_image#*-}" + done + host_only=1 + force=1 + ;; + -i) read_arg initrd_images "$@" || shift $? + for initrd_image in $initrd_images;do + # Check if the initrd_image contains a path. + # if not, then add the default boot_dir + dname=`dirname $initrd_image` + if [ "$dname" == "." ]; then + targets="$targets $boot_dir/$initrd_image"; + else + targets="$targets $initrd_image"; + fi + done + ;; + -b) read_arg boot_dir "$@" || shift $? + if [ ! -d $boot_dir ];then + error "Boot directory $boot_dir does not exist" + exit 1 + fi + ;; + -t) read_arg tmp_dir "$@" || shift $? + dracut_args="${dracut_args} --tmpdir $tmp_dir" + ;; + -M) read_arg map_file "$@" || shift $? + ;; + -A) host_only=0;; + -B) skip_update_bootloader=1;; + -v|--verbose) dracut_args="${dracut_args} -v";; + -L) logfile=;; + -h|--help) usage -n;; + -m) read_arg module_list "$@" || shift $? ;; + -u) read_arg domu_module_list "$@" || shift $? + echo "mkinitrd: DomU modules not yet supported" ;; + -d) read_arg rootfs "$@" || shift $? + dracut_args="${dracut_args} --filesystems $rootfs" ;; + -D) read_arg dhcp_if "$@" || shift $? + dracut_cmdline="${dracut_cmdline} ip=${dhcp_if}:dhcp" + ;; + -I) read_arg static_if "$@" || shift $? + dracut_cmdline="${dracut_cmdline} ip=$(ipconfig $static_if)": + ;; + -a) read_arg acpi_dsdt "$@" || shift $? + echo "mkinitrd: custom DSDT not yet supported" + exit 1 + ;; + -s) read_arg boot_splash "$@" || shift $? + echo "mkinitrd: boot splash not yet supported" + exit 1 + ;; + -V) echo "mkinitrd: vendor scipts are no longer supported" + exit 1;; + --dracut) + read_arg dracut_cmd "$@" || shift $? ;; + --version|-R) + echo "mkinitrd: dracut compatibility wrapper" + exit 0;; + --force) force=1;; + --quiet|-q) quiet=1;; + *) if [[ ! $targets ]]; then + targets=$1 + elif [[ ! $kernels ]]; then + kernels=$1 + else + usage + fi;; + esac + shift +done + +[[ $targets && $kernels ]] || default_kernel_images +[[ $targets && $kernels ]] || (error "No kernel found in $boot_dir" && usage) + +# We can have several targets/kernels, transform the list to an array +targets=( $targets ) +[[ $kernels ]] && kernels=( $kernels ) + +[[ $logfile ]] && dracut_args="${dracut_args} --logfile $logfile" +[[ $host_only == 1 ]] && dracut_args="${dracut_args} --hostonly" +[[ $force == 1 ]] && dracut_args="${dracut_args} --force" +[[ $dracut_cmdline ]] && dracut_args="${dracut_args} --kernel-cmdline ${dracut_cmdline}" +[ -z "$(type -p update-bootloader)" ] && skip_update_bootloader=1 + +# Update defaults from /etc/sysconfig/kernel +if [ -f /etc/sysconfig/kernel ] ; then + . /etc/sysconfig/kernel +fi +[[ $module_list ]] || module_list="${INITRD_MODULES}" +basicmodules="$basicmodules ${module_list}" +[[ $domu_module_list ]] || domu_module_list="${DOMU_INITRD_MODULES}" +[[ $acpi_dsdt ]] || acpi_dsdt="${ACPI_DSDT}" + +echo "Creating: target|kernel|dracut args|basicmodules " +for ((i=0 ; $i<${#targets[@]} ; i++)); do + + if [[ $img_vers ]];then + target="${targets[$i]}-${kernels[$i]}" + else + target="${targets[$i]}" + fi + kernel="${kernels[$i]}" + + # Duplicate code: No way found how to redirect output based on $quiet + if [[ $quiet == 1 ]];then + echo "$target|$kernel|$dracut_args|$basicmodules" + if is_xen_kernel $kernel $rootfs ; then + basicmodules="$basicmodules ${domu_module_list}" + fi + if [[ $basicmodules ]]; then + $dracut_cmd $dracut_args --add-drivers "$basicmodules" "$target" \ + "$kernel" &>/dev/null + else + $dracut_cmd $dracut_args "$target" "$kernel" &>/dev/null + fi + else + if is_xen_kernel $kernel $rootfs ; then + basicmodules="$basicmodules ${domu_module_list}" + fi + if [[ $basicmodules ]]; then + $dracut_cmd $dracut_args --add-drivers "$basicmodules" "$target" \ + "$kernel" + else + $dracut_cmd $dracut_args "$target" "$kernel" + fi + fi +done + +if [ "$skip_update_bootloader" ] ; then + echo 2>&1 "Did not refresh the bootloader. You might need to refresh it manually." +else + update-bootloader --refresh +fi
Signature · 1 line
1.8.1.4
PATCH v2 10/13 mkinitrd-suse.8.asc: Add manpage for SUSE compat mkinitrd
In reply to a message not in the archive--- Makefile | 1 + mkinitrd-suse.8.asc | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 107 insertions(+) create mode 100644 mkinitrd-suse.8.asc
Makefile +1 -0
@@ -27,6 +27,7 @@ man7pages = dracut.cmdline.7 \ man8pages = dracut.8 \ dracut-catimages.8 \ mkinitrd.8 \ + mkinitrd-suse.8 \ modules.d/98systemd/dracut-cmdline.service.8 \ modules.d/98systemd/dracut-initqueue.service.8 \ modules.d/98systemd/dracut-mount.service.8 \
mkinitrd-suse.8.asc new file +106 -0
106 lines not on this page · raw message
Signature · 1 line
1.8.1.4
PATCH v2 11/13 Fixup keymap setting for openSUSE
In reply to a message not in the archiveopenSUSE is using compressed keymaps.
--- modules.d/10i18n/module-setup.sh | 3 +++ 1 file changed, 3 insertions(+)
modules.d/10i18n/module-setup.sh +3 -0
@@ -161,6 +161,9 @@ install() { # Gentoo user may have KEYMAP set to something like "-u pl2", KEYMAP=${KEYMAP#-* } + # openSUSE user may have KEYMAP set to something like ".gz" + KEYMAP=${KEYMAP/.gz/} + # KEYTABLE is a bit special - it defines base keymap name and UNICODE # determines whether non-UNICODE or UNICODE version is used
Signature · 1 line
1.8.1.4
PATCH v2 12/13 Fixup script permissions
In reply to a message not in the archiveScripts with a shebang should be marked as executable.
--- modules.d/03modsign/load-modsign-keys.sh | 0 modules.d/03modsign/module-setup.sh | 0 modules.d/40network/net-lib.sh | 0 modules.d/40network/parse-vlan.sh | 0 modules.d/50drm/module-setup.sh | 0 modules.d/91crypt-loop/crypt-loop-lib.sh | 0 modules.d/98pollcdrom/pollcdrom.sh | 0 7 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 modules.d/03modsign/load-modsign-keys.sh mode change 100644 => 100755 modules.d/03modsign/module-setup.sh mode change 100644 => 100755 modules.d/40network/net-lib.sh mode change 100644 => 100755 modules.d/40network/parse-vlan.sh mode change 100644 => 100755 modules.d/50drm/module-setup.sh mode change 100644 => 100755 modules.d/91crypt-loop/crypt-loop-lib.sh mode change 100644 => 100755 modules.d/98pollcdrom/pollcdrom.sh
modules.d/03modsign/load-modsign-keys.sh +0 -0
modules.d/03modsign/module-setup.sh +0 -0
modules.d/40network/net-lib.sh +0 -0
modules.d/40network/parse-vlan.sh +0 -0
modules.d/50drm/module-setup.sh +0 -0
modules.d/91crypt-loop/crypt-loop-lib.sh +0 -0
modules.d/98pollcdrom/pollcdrom.sh +0 -0
Signature · 1 line
1.8.1.4
PATCH v2 13/13 Remove shebang from shell-completion files
In reply to a message not in the archiveShell-completion files are meant to be sourced, not executed. So they shouldn't have a shebang at the start.
--- dracut-bash-completion.sh | 2 +- lsinitrd-bash-completion.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
dracut-bash-completion.sh +1 -1
@@ -1,4 +1,4 @@ -#!/bin/bash +# # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- # ex: ts=8 sw=4 sts=4 et filetype=sh #
lsinitrd-bash-completion.sh +1 -1
@@ -1,4 +1,4 @@ -#!/bin/bash +# # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- # ex: ts=8 sw=4 sts=4 et filetype=sh #
Signature · 1 line
1.8.1.4
Quoted 59 lines · Hannes Reinecke
SUSE is keeping the S/390 device configuration in udev rules, on rule per device.
And it doesn't have the RH-specific configuration scripts (obviously). This patchset abstracts away the RH-specific configuration and adds modules to make dracut boot on SLES installations.I've also added a new SUSE-specific mkinitrd compability script, as the SUSE mkinitrd is quite different.
And some minor fixes which came up during package build.
Please apply.
Hannes Reinecke (13):
95dasd: Install kernel modules only once
95dasd: Only install module ifnormalize_dasd_argis present 95dasd_mod: makedasd_cio_freeoptional
95zfcp: Make installation optional
95znet: Make installation optional
Add DASD configuration for SuSE
Add zfcp scripts for SUSE
Make logfile configurable
mkinitrd-suse: Add SUSE compability wrapper for dracut mkinitrd-suse.8.asc: Add manpage for SUSE compat mkinitrd Fixup keymap setting for openSUSE
Fixup script permissions
Remove shebang from shell-completion filesMakefile | 1 + dracut-bash-completion.sh | 2 +- dracut-functions.sh | 28 +++ dracut.8.asc | 6 + dracut.sh | 4 + lsinitrd-bash-completion.sh | 2 +- mkinitrd-suse.8.asc | 106 +++++++++ mkinitrd-suse.sh | 354 +++++++++++++++++++++++++++++++ modules.d/03modsign/load-modsign-keys.sh | 0 modules.d/03modsign/module-setup.sh | 0 modules.d/10i18n/module-setup.sh | 3 + modules.d/40network/net-lib.sh | 0 modules.d/40network/parse-vlan.sh | 0 modules.d/50drm/module-setup.sh | 0 modules.d/91crypt-loop/crypt-loop-lib.sh | 0 modules.d/95dasd/module-setup.sh | 7 +- modules.d/95dasd_mod/module-setup.sh | 3 +- modules.d/95dasd_mod/parse-dasd-mod.sh | 4 +- modules.d/95dasd_rules/module-setup.sh | 27 +++ modules.d/95dasd_rules/parse-dasd.sh | 56 +++++ modules.d/95zfcp/module-setup.sh | 4 +- modules.d/95zfcp_rules/module-setup.sh | 25 +++ modules.d/95zfcp_rules/parse-zfcp.sh | 65 ++++++ modules.d/95znet/module-setup.sh | 1 + modules.d/98pollcdrom/pollcdrom.sh | 0 25 files changed, 686 insertions(+), 12 deletions(-) create mode 100644 mkinitrd-suse.8.asc create mode 100755 mkinitrd-suse.sh mode change 100644 => 100755 modules.d/03modsign/load-modsign-keys.sh mode change 100644 => 100755 modules.d/03modsign/module-setup.sh mode change 100644 => 100755 modules.d/40network/net-lib.sh
Quoted 9 lines
mode change 100644 => 100755 modules.d/40network/parse-vlan.sh mode change 100644 => 100755 modules.d/50drm/module-setup.sh mode change 100644 => 100755 modules.d/91crypt-loop/crypt-loop-lib.sh create mode 100755 modules.d/95dasd_rules/module-setup.sh create mode 100755 modules.d/95dasd_rules/parse-dasd.sh create mode 100755 modules.d/95zfcp_rules/module-setup.sh create mode 100755 modules.d/95zfcp_rules/parse-zfcp.sh mode change 100644 => 100755 modules.d/98pollcdrom/pollcdrom.sh
Thanks! Pushed.