Heads up: sunsetting mkinitrd
Hi, with the pending submission of Dracut 054, which removes mkinitrd from the upstream sources, it's time to finally remove mkinitrd in Factory, too: Changes starting with 054 ------------------------- - mkinitrd will temporarily live in its own dracut-mkinitrd-deprecated package. It will still be installed when requiring "mkinitrd" and requires dracut, so nothing changes here. - If you only required dracut, but meant to require mkinitrd, you need to change this temporarily or change your scripts to directly call dracut. Rationale --------- mkinitrd has always been a rather mediocre wrapper that claimed to keep compatibility with the SLES 11 implementation. However: - it has a lot of bugs, quite some documented (!) flags have never worked, others are marked unimplemented or will say so only if invoked. I see little point in doing that given - it adds little value over just using plain Dracut Differences in calling dracut over calling mkinitrd: ---------------------------------------------------- - Dracut only updates the initrd for the currently running kernel, unless either a kernel version or --regenerate-all is called - mkinitrd updates the bootloader by default. Dracut has no such option. Then again, those are two different concerns that are only merged into a single command for convenience. Usually this should be invoked from the kernel install script. - mkinitrd parses the no longer existing /etc/sysconfig/kernel file. - mkinitrd handles xen-specific modules. I have not enough understanding of the state of Xen in Factory to judge whether this is still required. If so, it should be handled in a dracut module. However, judging by the fact that the default is sourced from the defunc'ed kernel sysconfig file, this is probably also dead. - mkinitrd has slightly different semantics on how to specify a boot device for NFS & Co. Point of Contact ---------------- If you have concerns how this affects your package, please let us (me, Thomas Blume or Neil) know. For the Kernel and other packages that are definitely impacted once mkinitrd would go away (e.g. YaST), we will reach out separately and / or file bugzilla issues. -- Daniel Molkentin <daniel.molkentin@suse.com> Senior Software Engineeer System Boot and Init SUSE Software Solutions Germany GmbH Maxfeldstrasse 5, 90409 Nuernberg, Germany HRB 36809 (AG Nürnberg) Geschäftsführer: Felix Imendörffer
On Tue, 18 May 2021 17:21:20 +0200, Daniel Molkentin wrote:
Hi,
with the pending submission of Dracut 054, which removes mkinitrd from the upstream sources, it's time to finally remove mkinitrd in Factory, too:
Changes starting with 054 -------------------------
- mkinitrd will temporarily live in its own dracut-mkinitrd-deprecated package. It will still be installed when requiring "mkinitrd" and requires dracut, so nothing changes here. - If you only required dracut, but meant to require mkinitrd, you need to change this temporarily or change your scripts to directly call dracut.
Rationale ---------
mkinitrd has always been a rather mediocre wrapper that claimed to keep compatibility with the SLES 11 implementation. However:
- it has a lot of bugs, quite some documented (!) flags have never worked, others are marked unimplemented or will say so only if invoked. I see little point in doing that given - it adds little value over just using plain Dracut
Differences in calling dracut over calling mkinitrd: ----------------------------------------------------
- Dracut only updates the initrd for the currently running kernel, unless either a kernel version or --regenerate-all is called - mkinitrd updates the bootloader by default. Dracut has no such option. Then again, those are two different concerns that are only merged into a single command for convenience. Usually this should be invoked from the kernel install script. - mkinitrd parses the no longer existing /etc/sysconfig/kernel file. - mkinitrd handles xen-specific modules. I have not enough understanding of the state of Xen in Factory to judge whether this is still required. If so, it should be handled in a dracut module. However, judging by the fact that the default is sourced from the defunc'ed kernel sysconfig file, this is probably also dead. - mkinitrd has slightly different semantics on how to specify a boot device for NFS & Co.
Point of Contact ----------------
If you have concerns how this affects your package, please let us (me, Thomas Blume or Neil) know. For the Kernel and other packages that are definitely impacted once mkinitrd would go away (e.g. YaST), we will reach out separately and / or file bugzilla issues.
I believe that the more suitable place to post would have been kernel@opensuse... In anyway, two biggest breakages would be the kernel packages themselves and suse-module-tools package. There can be a few KMP packages that have dependency on mkinitrd, but they could be fixed since the dependency should be superfluous. For the kernel packages, at least two things, AFAIK: * kernel-* binary packages have dependency on mkinitrd * kernel-obs-build explicitly creates the initrd with mkinitrd. Both are relatively easy to fix, I suppose. However, the major pains would be rather for the scripts in suse-module-tools package. Better to ask Martin Wilck about that. thanks, Takashi
On Tue, May 18, 2021 at 11:46 AM Takashi Iwai <tiwai@suse.de> wrote:
On Tue, 18 May 2021 17:21:20 +0200, Daniel Molkentin wrote:
Hi,
with the pending submission of Dracut 054, which removes mkinitrd from the upstream sources, it's time to finally remove mkinitrd in Factory, too:
Changes starting with 054 -------------------------
- mkinitrd will temporarily live in its own dracut-mkinitrd-deprecated package. It will still be installed when requiring "mkinitrd" and requires dracut, so nothing changes here. - If you only required dracut, but meant to require mkinitrd, you need to change this temporarily or change your scripts to directly call dracut.
Rationale ---------
mkinitrd has always been a rather mediocre wrapper that claimed to keep compatibility with the SLES 11 implementation. However:
- it has a lot of bugs, quite some documented (!) flags have never worked, others are marked unimplemented or will say so only if invoked. I see little point in doing that given - it adds little value over just using plain Dracut
Differences in calling dracut over calling mkinitrd: ----------------------------------------------------
- Dracut only updates the initrd for the currently running kernel, unless either a kernel version or --regenerate-all is called - mkinitrd updates the bootloader by default. Dracut has no such option. Then again, those are two different concerns that are only merged into a single command for convenience. Usually this should be invoked from the kernel install script. - mkinitrd parses the no longer existing /etc/sysconfig/kernel file. - mkinitrd handles xen-specific modules. I have not enough understanding of the state of Xen in Factory to judge whether this is still required. If so, it should be handled in a dracut module. However, judging by the fact that the default is sourced from the defunc'ed kernel sysconfig file, this is probably also dead. - mkinitrd has slightly different semantics on how to specify a boot device for NFS & Co.
Point of Contact ----------------
If you have concerns how this affects your package, please let us (me, Thomas Blume or Neil) know. For the Kernel and other packages that are definitely impacted once mkinitrd would go away (e.g. YaST), we will reach out separately and / or file bugzilla issues.
I believe that the more suitable place to post would have been kernel@opensuse...
In anyway, two biggest breakages would be the kernel packages themselves and suse-module-tools package. There can be a few KMP packages that have dependency on mkinitrd, but they could be fixed since the dependency should be superfluous.
For the kernel packages, at least two things, AFAIK: * kernel-* binary packages have dependency on mkinitrd * kernel-obs-build explicitly creates the initrd with mkinitrd. Both are relatively easy to fix, I suppose.
However, the major pains would be rather for the scripts in suse-module-tools package. Better to ask Martin Wilck about that.
Most of the functionality in "suse-module-tools" seems to be also implemented by dracut or kmod, with the rest being modprobe/modules.d config files. That stuff should be reorganized to other places accordingly. -- 真実はいつも一つ!/ Always, there's only one truth!
participants (3)
-
Daniel Molkentin
-
Neal Gompa
-
Takashi Iwai