debdiff against 112-7 for the two-package split (112-7ubuntu3).
** Description changed:
The dracut (s390x-specific) modules 68cms, 74zfcp and 74znet are present in
the upstream source, but do not end up in any binary package.
As a result rd.znet and rd.zfcp have no effect on s390x, and no z/VM CMS
configuration file can be read.
-
The three modules are listed in debian/dracut-network.install.s390x, which is
a copy of debian/dracut-network.install:
usr/lib/dracut/modules.d/68cms
usr/lib/dracut/modules.d/74zfcp
usr/lib/dracut/modules.d/74znet
+ However, that file can never take effect, and for two independent reasons.
- However, that file can never take effect, because dracut-network is
- "Architecture: all". dh_install selects debian/<package>.install.<arch>
- based on the build architecture, and an architecture-independent binary
- is built only once, on a single architecture. The .install.s390x file is
- therefore never selected, and the three modules are dropped on every
- architecture, s390x included. And on that build architecture the files
- are not even there.
+ First, dracut-network is "Architecture: all". dh_install selects
+ debian/<package>.install.<arch> based on the build architecture, and an
+ architecture-independent binary is built only once, on a single
+ architecture. The .install.s390x file is therefore never selected, and
+ the three modules are dropped on every architecture, s390x included.
- The upstream Makefile install target removes the s390 modules unless it is
building on s390x:
+ Second, on that build architecture the files are not even there. The upstream
Makefile install target removes the s390 modules unless it is building on s390x:
ifneq ($(ARCH),s390x)
for f in cio_ignore cms dasd dasd_mod dcssblk zfcp zipl znet; do \
rm -r $(DESTDIR)$(pkglibdir)/modules.d/[0-9][0-9]${f}; \
done
else
rm -r $(DESTDIR)$(pkglibdir)/modules.d/[0-9][0-9]warpclock
endif
and debian/rules sets ARCH from DEB_HOST_ARCH_CPU. So on the build
architecture of an arch-independent package the modules are already deleted
from debian/tmp before dh_install even runs. No .install file in an
"Architecture: all" package can ship them.
By contrast dracut-core is "Architecture: any", so its
debian/dracut-core.install.s390x is used on the s390x build and the modules
listed there - 69cio_ignore, 73zipl, 74dasd, 74dasd_mod and 74dcssblk - are
shipped correctly. The three missing ones are exactly those that ended up in
the dracut-network list instead.
That smells like the dracut-network variant was copied from the dracut-core
one without noticing the different Architecture field.
# check:
$ dpkg-deb -c dracut-network_112-7_all.deb | grep -cE 'znet|zfcp|68cms'
0
There is no architecture-specific build of 'dracut-network'.
For comparison, the dracut-core modules do arrive:
$ dpkg-deb -c dracut-core_112-7_s390x.deb | grep -oE '74dasd[a-z_]*'
74dasd
74dasd_mod
Upstream carries all of them: dracut-ng tag 112 contains 68cms, 74dasd,
74dasd_mod, 74zfcp and 74znet under modules.d/.
# impact:
On s390x with a dracut-generated initramfs:
- rd.znet= has no effect, so channel-attached network devices, including
QETH/OSA and HiperSockets, cannot be configured from the kernel cmd-line. On a
system whose only network path needs a non-default relative port or layer, the
device cannot be brought up at all.
- rd.zfcp= has no effect, so an FCP LUN needed early cannot be activated from
the kernel command line.
- 68cms is absent, so a z/VM CMS configuration file cannot be read.
This grows in importance as the Ubuntu installer moves to dracut, and it
currently blocks the use of the established cross-distribution mechanism for
early IBM Z device configuration (see LP: #2170669)
# fix
- Add the three modules to d/dracut-core.install.s390x, and drop
d/dracut-network.install.s390x entirely.
- dracut-core is "Architecture: any", so it is built on s390x with ARCH=s390x,
the Makefile keeps the modules there, and the .install.s390x file is actually
selected.
- That file already carries the other s390-only modules, so afterwards it
matches the Makefile's s390 set exactly: cio_ignore, cms, dasd, dasd_mod,
dcssblk, zfcp, zipl, znet.
- d/dracut-network.install stays untouched.
- The three then ship in dracut-core rather than dracut-network, which is a
slight layering oddity for network modules, but it follows what this package
already does with the other architecture-specific modules.
- Their module dependencies stay satisfiable: 74znet depends only on bash,
74zfcp declares none, and 68cms depends on znet, which moves along with it.
+ Split the three modules between the two binary packages, by what they
actually do, and make dracut-network able to ship its share:
+ - 74zfcp goes to d/dracut-core.install.s390x. It is storage, not network: FCP
is the SCSI over Fibre Channel attachment on IBM Z and an FCP attached disk
commonly holds the root filesystem, so it belongs next to 74dasd, 74dasd_mod
and 74dcssblk, which dracut-core already ships. dracut-core is "Architecture:
any", so it is built on s390x with ARCH=s390x, the Makefile keeps the module,
and the .install.s390x file is actually selected.
+ - 68cms and 74znet stay in d/dracut-network.install.s390x, and dracut-network
becomes "Architecture: any" in d/control, which is what makes that file take
effect at all. 74znet is genuinely network related, and 68cms depends on znet,
so it is only usable when dracut-network is installed anyway - keeping the two
together is the only arrangement in which the cms module actually works.
+ d/dracut-network.install stays untouched, so nothing changes on any other
architecture.
+ Afterwards the two .install.s390x files cover the Makefile's s390 set
exactly: cio_ignore, dasd, dasd_mod, dcssblk, zfcp and zipl in dracut-core, cms
and znet in dracut-network.
# alternatives:
- Listing the three in the architecture-independent d/dracut-network.install
does not work. On the build architecture of an arch-independent package the
files have already been removed, so dh_install just aborts with "missing files,
aborting".
- - Making dracut-network "Architecture: any" would work, but multiplies the
binary across every architecture for three small shell modules.
+ - Putting all three in dracut-core would work too, and was the first
approach, but it drags two network modules into the core package and pulls
74znet into every s390x initramfs - roughly half a megabyte of kernel modules
plus chzdev - on systems that may never need it. 74znet's check() returns 0, so
it is included by default.
+ - Making dracut-network "Architecture: any" costs an extra copy of a 60 kB
binary per architecture, well under a megabyte in total, which is cheap for
getting the modules into the right packages.
And this btw. would also affect Debian, since we sync from Debian (with no
Ubuntu delta) - so in prep. that should probably also be forwarded to Debian.
+ This has meanwhile been done, see
https://salsa.debian.org/kernel-team/dracut/-/merge_requests/51
# verification:
- $ dpkg-deb -c dracut-core_<fixed-version>_s390x.deb | grep -E
'modules.d/(68cms|74zfcp|74znet)'
-
- Confirmed with a test build in ppa:fheimes/lp2171808:
- dracut-core on s390x goes from 118 to 121 modules, the three added ones being
exactly 68cms, 74zfcp and 74znet, and 74znet/parse-ccw.sh - the rd.znet parser
- is now shipped.
-
+ $ dpkg-deb -c dracut-core_<fixed-version>_s390x.deb | grep -E
'modules.d/74zfcp'
+ $ dpkg-deb -c dracut-network_<fixed-version>_s390x.deb | grep -E
'modules.d/(68cms|74znet)'
+ Confirmed with a test build in ppa:fheimes/lp2171808 (112-7ubuntu3): on s390x
dracut-core now ships 74zfcp, and dracut-network is built as an s390x binary -
rather than not existing for s390x at all - and ships 68cms and 74znet,
including 74znet/parse-ccw.sh, the rd.znet parser. There is no file overlap
between the two packages, and the amd64 dracut-network is unchanged.
On an s390x system, rd.znet= with non-default values actually takes effect.
However, testing with portno=0 or layer2=1 proves nothing, since those are
already the defaults.
-
debdiff against 112-7 is attached
** Attachment added: "debdiff_dracut_stonking_from_112-7_to_112-7ubuntu3.diff"
https://bugs.launchpad.net/bugs/2171808/+attachment/6014729/+files/debdiff_dracut_stonking_from_112-7_to_112-7ubuntu3.diff
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2171808
Title:
s390x dracut modules 68cms, 74zfcp and 74znet are not shipped
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu-z-systems/+bug/2171808/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs