Details
- Reviewers
DataDrake - Group Reviewers
Triage Team - Commits
- R661:43b79a64c97d: Update to v56
Rebuild and boot from new kernel from this version (--prelink must be removed)
Tested Configs
UEFI (x)
Legacy/GRUB (x)
UEFI on LVM (x)
UEFI on LVM+LUKS (x)
Legacy/GRUB on LVM ()
Legacy/GRUB on LVM+LUKS (x)
Diff Detail
- Repository
- R661 dracut
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
Event Timeline
I'll try and test the other boot configurations in the upcoming days. If people are willing to cook their own kernel on a config not yet tested that would be appreciated. ?
Tested:
- UEFI/LVM (no LUKS)
- GRUB/LVM/LUKS
I can re-install the GRUB system and do GRUB/LVM as well if we really need that combination tested as well, but this system is ancient and getting it into a testing state after re-installing the OS is a very, very slow process. I think GRUB/LVM can be assumed to be working considering what has already been tested.
Also, I suggest that we add the nvme-cli binary to the rescue environment once this lands (via --install "/usr/sbin/nvme" in the dracut command). This would help give users an additional tool that they could use to troubleshoot a bad boot where their OS is stored on a NVME drive (nvme-cli shows SMART data, drive error logs etc)
Also, I'd note that dracut is now adding the nvdimm and kernel-modules-extra modules by default compared to our previous version. kernel-modules-extra seems to result in the pinctrl and watchdog kernel modules being added to the initramfs, and while I'm not sure if these are useful or not it's worth mentioning in case someone more knowledgeable thinks they are unneeded. nvdimm similarly could be removed if we don't actually support that functionality either.
If anyone else wants to take a peak in the initramfs the easiest way is to create a new directory and from that directory run sudo /usr/lib/dracut/skipcpio path/to/initrd | gunzip -c | cpio -id to extract it (replace gunzip -c with unzstd if you are messing around with zstd compression).
Need to use the SPDX-License-Identifier. According to dracut.spec inside the tarball the licenses are:
# The entire source code is GPLv2+ # except install/* which is LGPLv2+ # except util/* which is GPLv2 License: GPLv2+ and LGPLv2+ and GPLv2
FYI @joebonrichie https://github.com/dracutdevs/dracut/releases/tag/056
Also FWIW, I've been using the kernel built with this (and zstd-compressed initramfs) ever since this diff was created without any noticeable regression.
I did some simple benchmarking using Linux 5.15.26 using Dracut 47, Dracut 56 + Gzip initramfs, and Dracut 56 + Zstd initramfs on my Ryzen 5900x + NVME boot drive setup:
I used the kernel timestamp for when boot passed to the root OS systemd (systemd 247 running in system mode) as the metric.
After five boots with each configuration:
Dracut 47 (Gzip compression): 6.023 seconds
Dracut 56 (Gzip compression): 5.857 seconds
Dracut 56 (ZSTD compression): 5.459 seconds
Showing that Dracut 47 -> Dracut 56 resulted in a 2.75% drop in times, while Dracut 56 Gzip -> Dracut 56 ZSTD dropped 6.81% from there. Cumulatively there was a 9.37% drop in time-to-root-os.
There is likely to be a greater percentage drop for systems with slower CPUs or using magnetic HDDs.
Size comparisons of the initrd files:
Dracut 47: 62MB
Dracut 56 (Gzip): 63MB
Dracut 56 (ZSTD): 47MB