mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
Add parsing of dracut cmdline option "rd.dasd=..." at initrd runtime. It delegates configuration to chzdev. Implement `dracut --print-cmdline` and `dracut --hostonly-cmdline` for initrd build time. Emit an rd.dasd option for each DASD disk in dracut's device dependency graph (to mount the root-fs, or to access the kdump target). This allows a distribution independent device configuration. Configuration is consistent by using chzdev as backend. It also prevents duplicate activations of the same device. Copy the udev rule for unique DASD device nodes under /dev/disk/ [59-dasd.rules] into initrd for the same functionality like 95dasd or 95dasd_rules. Along with the existing functionality of zdev/dracut, it makes the following dracut modules superfluous: https://github.com/dracutdevs/dracut/tree/master/modules.d/95dasd https://github.com/dracutdevs/dracut/tree/master/modules.d/95dasd_mod https://github.com/dracutdevs/dracut/tree/master/modules.d/95dasd_rules Github-ID: https://github.com/ibm-s390-linux/s390-tools/pull/158 Acked-by: Vineeth Vijayan <vneethv@linux.ibm.com> Acked-by: Peter Oberparleiter <oberpar@linux.ibm.com> Signed-off-by: Steffen Maier <maier@linux.ibm.com> Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
38 lines
1.3 KiB
Bash
38 lines
1.3 KiB
Bash
#!/bin/sh
|
|
#
|
|
# Copyright IBM Corp. 2023
|
|
#
|
|
# 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/parse-dasd.sh
|
|
# Parse the command line for rd.dasd parameters. These
|
|
# parameters are evaluated and used to configure dasd devices.
|
|
#
|
|
|
|
# shellcheck source=/dev/null
|
|
type zdev_parse_dasd_list > /dev/null 2>&1 || . /lib/s390-tools/zdev-from-dasd_mod.dasd
|
|
|
|
# at this point in time dracut's vinfo() only logs to journal which is hard for
|
|
# s390 users to find and access on a line mode console such as 3215 mode
|
|
# so use a vinfo alternative that still prints to the console via kmsg
|
|
zdev_vinfo() {
|
|
local _zdev_vinfo_line
|
|
while read -r _zdev_vinfo_line || [ -n "$_zdev_vinfo_line" ]; do
|
|
# Prefix "<30>" represents facility LOG_DAEMON 3 and loglevel INFO 6:
|
|
# (facility << 3) | level.
|
|
echo "<30>dracut: $_zdev_vinfo_line" > /dev/kmsg
|
|
done
|
|
}
|
|
|
|
zdev_parse_rd_dasd() {
|
|
local _zdev_dasd _zdev_dasd_list
|
|
for _zdev_dasd in $(getargs rd.dasd -d 'rd_DASD='); do
|
|
_zdev_dasd_list="${_zdev_dasd_list:+${_zdev_dasd_list},}$_zdev_dasd"
|
|
done
|
|
echo "$_zdev_dasd_list"
|
|
}
|
|
|
|
zdev_parse_rd_dasd | zdev_parse_dasd_list globals 2>&1 | zdev_vinfo
|
|
zdev_parse_rd_dasd | zdev_parse_dasd_list ranges 2>&1 | zdev_vinfo
|