dracut-install errors after Fedora dnf update with kernel updates
I currently have two Linodes running different versions of Fedora. One is on Fedora 32, the other is intentionally one version behind on 31. Both were set up initially as older versions of Fedora and then upgraded at least once, if not several times, via a DNF System Upgrade.
Lately whenever I do a standard DNF update:
dnf -y update
and there is a kernel update, I've been getting dracut errors, something like this:
Running scriptlet: kernel-core-5.7.17-200.fc32.x86_64 50/50 /etc/dracut.conf.d/virtio.conf:add_drivers+="virtio_scsi virtio_net virtio_pci" dracut: WARNING: <key>+=" <values> ": <values> should have surrounding white spaces! dracut: WARNING: This will lead to unwanted side effects! Please fix the configuration file. dracut-install: ERROR: installing 'virtio_pci' dracut: FAILED: /usr/lib/dracut/dracut-install -D /var/tmp/dracut.7lZWHB/initramfs --kerneldir /lib/modules/5.7.17-200.fc32.x86_64/ -m virtio_scsi virtio_net virtio_pci
Sure enough, /etc/dracut.conf.d/virtio.conf appears to have Linode-added customizations:
# Linode requires virtio modules add_drivers+="virtio_scsi virtio_net virtio_pci"
I assume that the "fix" for this is simple enough: add a space to the beginning and end of that parameter block, inside the quotes. Since this file was apparently modified by Linode during the node's initial setup, however, I've been hesitant to make that modification myself.
My concern is the dracut-install error message. Looking at the command it's trying to run, it doesn't look like the missing spaces from the add_drivers string are causing a problem, since I assume "-m" is a flag telling dracut-install which modules to install. I will admit that I have no experience with dracut and I never dip my toes that deeply into the Linux kernel. That said, my Linodes seem to be running just fine with no obvious errors or performance issues, and I always reboot after any kernel updates.
This is error something I need to worry about? Is it something Linode should be investigating?
I should note that I also have a physical Fedora 32 machine here in my home which does not generate this error. I therefore assume it's related to the Linode customizations.
I also see the same on my Fedora 32 Linodes. I don’t recall it throwing an actual error though, only the warning.
I’m due to do the same kernel update shortly (5.7.14 -> 5.7.17 and 5.7.15 -> 5.7.17) so I’ll keep a conscious lookout whether it throws the same error.
Thanks for pointing out a proposed fix, too.
Just upgraded one of my nodes and I do indeed see an error - although strangely for different modules:
Running scriptlet: kernel-core-5.7.17-200.fc32.x86_64 160/160 /etc/dracut.conf.d/linode.conf:add_drivers+="ata_generic ata_piix" dracut: WARNING: +=" ": should have surrounding white spaces! dracut: WARNING: This will lead to unwanted side effects! Please fix the configuration file. dracut-install: ERROR: installing 'ata_piix' dracut: FAILED: /usr/lib/dracut/dracut-install -D /var/tmp/dracut.a0hkYb/initramfs --kerneldir /lib/modules/5.7.17-200.fc32.x86_64/ -m ata_generic ata_piix
I wonder if these modules are somehow dynamically generated at either build or boot time, maybe based on the host hardware/OS?
Well, my Fedora 32 Linode had another kernel update this morning, so I thought, "What they heck, let's give this a shot." I edited /etc/dracut.conf.d/virtio.conf to put spaces inside the quotes around the module list and, sure enough, the initial warning about white space went away.
However, dracut-install still threw the same error about installing the modules:
Running scriptlet: kernel-core-5.8.4-200.fc32.x86_64 20/20 dracut-install: ERROR: installing 'virtio_pci' dracut: FAILED: /usr/lib/dracut/dracut-install -D /var/tmp/dracut.b25uuH/initramfs --kerneldir /lib/modules/5.8.4-200.fc32.x86_64/ -m virtio_scsi virtio_net virtio_pci
@andysh @jtdarlington - I've reached out to our distro team about the errors you're seeing. The dracut warning messages occur when Fedora is upgraded in-place over time, rather than deploying a blank image. A fresh Fedora 32 install won't have the
/etc/dracut.conf.d/virtio.conf file that was present in Fedora 31; it would have
/etc/dracut.conf.d/virtio.conf was removed from our images in January 2019, so if you've been performing in-place upgrades for your Linode, that would explain the error you're seeing.
ata_piix was removed in the latest kernel package, and our distro team is discussing the best way to handle that. Regarding the whitespace issue, this is absolutely something we can and should fix. Our distro team is looking into this as well.
i had a similar issue right now
$ cat /etc/fedora-release
Fedora release 31 (Thirty One)
$ dnf update
Running scriptlet: kernel-core-5.8.15-101.fc31.x86_64 18/18
dracut-install: ERROR: installing 'ata_piix'
dracut: FAILED: /usr/lib/dracut/dracut-install -D /var/tmp/dracut.KLRvXy/initramfs --kerneldir /lib/modules/5.8.15-101.fc31.x86_64/ -m ata_generic ata_piix
Running scriptlet: netpbm-10.90.00-1.fc31.x86_64 18/18
MEMORY-ERROR: : GSlice: assertion failed: sinfo->n_allocated > 0
Aborted (core dumped)
@jyoo I have a freshly created Fedora 32 Nanode, and I still see the same issue and same error messages.
For anyone chancing upon this from a Google search:
I added a leading and trailing space, removed
/etc/dracut.conf.d/linode.conf, and ran
$ cat /etc/dracut.conf.d/linode.conf # These modules are required for fullvirt support on Linode add_drivers+=" ata_generic " $ sudo dracut -f $ echo $? 0
No errors, instance rebooted, and is working just fine.
So, what's the official recomendation? I'm on Fedora 32 updated manually from Fedora 31. Was thinking about updating to Fedora 33. During execution
sudo dnf upgrade --refresh getting the same warning
$ hostnamectl | grep -i system Operating System: Fedora 32 (Server Edition) $ sudo dnf upgrade --refresh /etc/dracut.conf.d/linode.conf:add_drivers+="ata_generic ata_piix" dracut: WARNING: <key>+=" <values> ": <values> should have surrounding white spaces! $ cat /etc/dracut.conf.d/linode.conf # These modules are required for fullvirt support on Linode add_drivers+="ata_generic ata_piix"
Should we manually add spaces to
linode.conf? Smth like
add_drivers+=" ata_generic ata_piix "