#!/bin/sh # # Copyright IBM Corp. 2016, 2017 # # s390-tools is free software; you can redistribute it and/or modify # it under the terms of the MIT license. See LICENSE for details. # # hooks/s390-tools-zdev # This hook script adds files required to apply firmware-provided I/O # configuration data during boot. # # Needs to run after udev or resulting udev rules could be overwritten PREREQ="udev" prereqs() { echo "$PREREQ" } case $1 in prereqs) prereqs exit 0 ;; esac . /usr/share/initramfs-tools/hook-functions # Add modules for all device types supported by chzdev (required for # auto-configuration) zdev_modules="qeth qeth_l2 qeth_l3 dasd_mod dasd_eckd_mod dasd_fba_mod dasd_diag_mod zfcp" for x in $zdev_modules ; do manual_add_modules ${x} done copy_exec /sbin/chzdev copy_exec /sbin/lszdev copy_exec /sbin/vmcp copy_exec /lib/s390-tools/zdev_id cp -p /usr/lib/udev/rules.d/81-dpm.rules "$DESTDIR/usr/lib/udev/rules.d/" _tempfile=$(mktemp --tmpdir initramfs-zdev.XXXXXX) # Obtain early + root device configuration chzdev --export - --active --by-path / --quiet 2>/dev/null | sed -e 's/active/persistent/g' > "$_tempfile" chzdev --export - --persistent --by-path / --by-attrib "zdev:early=1" \ --quiet --type 2>/dev/null >>"$_tempfile" # Apply via --import to prevent other devices from being configured. # Rename the resulting cio-ignore rule to ensure that it does not override # the one copied by the initramfs udev hook to /lib/udev. chzdev --import "$_tempfile" --persistent \ --base "/etc/udev/rules.d/41-cio-ignore.rules=$DESTDIR/etc/udev/rules.d/41-cio-ignore-root.rules" \ --base "/etc=$DESTDIR/etc" --yes --quiet --no-root-update --force \ >/dev/null rm -f "$_tempfile"