mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
Add a dracut hook that applies firmware-provided I/O configuration data as auto-configuration during boot. This way, all I/O devices configured by DPM are automatically brought online without further user interaction. This mechanism is active by default. It can be deactivated by specifying the following parameter on the kernel command line: rd.zdev=no-auto Signed-off-by: Peter Oberparleiter <oberpar@linux.vnet.ibm.com> Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
74 lines
2.0 KiB
Bash
74 lines
2.0 KiB
Bash
#!/bin/bash
|
|
#
|
|
# 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.
|
|
#
|
|
#
|
|
# 95zdev/module_setup.sh
|
|
# This module installs configuration files (udev rules and modprobe.conf
|
|
# files) required to enable the root device on s390. It will only work when
|
|
# the root device was configured using the chzdev tool. In addition,
|
|
# a hook is installed to parse rd.zdev= kernel parameters.
|
|
#
|
|
|
|
check() {
|
|
local _arch=$(uname -m)
|
|
|
|
# Ensure that we're running on s390
|
|
[ "$_arch" = "s390" -o "$_arch" = "s390x" ] || return 1
|
|
|
|
# Ensure that required tools are available
|
|
require_binaries chzdev lszdev || return 1
|
|
|
|
return 0
|
|
}
|
|
|
|
depends() {
|
|
return 0
|
|
}
|
|
|
|
installkernel() {
|
|
# Add modules for all device types supported by chzdev (required for
|
|
# auto-configuration)
|
|
instmods lcs qeth qeth_l2 qeth_l3 dasd_mod dasd_eckd_mod dasd_fba_mod \
|
|
dasd_diag_mod zfcp
|
|
}
|
|
|
|
install() {
|
|
local _tempfile
|
|
|
|
# Ensure that required tools are available
|
|
inst_multiple chzdev lszdev vmcp
|
|
|
|
# Hook to parse zdev kernel parameter
|
|
inst_hook cmdline 95 "$moddir/parse-zdev.sh"
|
|
|
|
# Obtain root device configuration
|
|
|
|
# Exit early if root device type is unknown
|
|
if ! lszdev --by-path / >/dev/null 2>&1 ; then
|
|
return 0
|
|
fi
|
|
|
|
_tempfile=$(mktemp --tmpdir dracut-zdev.XXXXXX)
|
|
|
|
if chzdev --export - --persistent --by-path / >/dev/null 2>&1 ; then
|
|
# Use persistent configuration
|
|
chzdev --export "$_tempfile" --persistent --by-path / --quiet --type
|
|
else
|
|
# Use active configuration
|
|
chzdev --export "$_tempfile" --active --by-path / --quiet --type
|
|
sed -i -e 's/active/persistent/g' "$_tempfile"
|
|
fi
|
|
|
|
# Apply via --import to prevent other devices from being configured
|
|
chzdev --import "$_tempfile" --persistent --base "/etc=$initdir/etc" \
|
|
--yes --quiet --no-root-update --force >/dev/null
|
|
|
|
rm -f "$_tempfile"
|
|
|
|
return 0
|
|
}
|