hi
For some reason after updating to fedora 39, new kernel versions get stored in /boot/efi/ instead of /boot
So now grub doesnt pickup the new versions and Im stuck on an old kernel (fc38 one)
I ve tried reinstalling grub and the latest kernel but that didnt fix it. Also my issue is very similar to the one described in a another thread on this forum but that method didnt work for me either
Somehow you got KERNEL_INSTALL_LAYOUT=bls set to bls instead of KERNEL_INSTALL_LAYOUT: other.
Check the contents of /usr/lib/kernel/install.conf and /etc/kernel/install.conf.
The contents of /usr/lib/kernel/install.conf should be
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License as published by the Free
# Software Foundation; either version 2.1 of the License, or (at your option)
# any later version.
#
# See kernel-install(8) for details.
#layout=bls|other|...
#initrd_generator=dracut|...
thanks, my /usr/lib/kernel/install.conf has only one extra line:
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it under the
# terms of the GNU Lesser General Public License as published by the Free
# Software Foundation; either version 2.1 of the License, or (at your option)
# any later version.
#
# See kernel-install(8) for details.
#layout=bls|other|...
#initrd_generator=dracut|...
#uki_generator=ukify|...
Removing the last line and reinstalling the kernel didnt fix it (I also deleted the existing files before reinstalling). Also /etc/kernel/install.conf does not exist.
It looks like the command bootctl install has been run. You would do that if you intend to use systemd-boot instead of grub, and that would have worked if the systemd-boot-unsigned package was installed and if secure boot was disabled.
You can undo that by running bootctl remove and then re-run the kernel install procedures.
If you run rpm -q --scripts kernel-core | grep add you will get a list of commands you should run to install the kernel in the /boot directory. Example
It looks like the existence of the directory /boot/efi/6bgksixieaus28iimz8skjjta5b31tn7 is the trigger for generating systemd-boot configuration files. You may have to remove that as well.
Hi Villy, I’m facing the same issue and this doesn’t, every time I try to install a new kernel it shows:
> /bin/kernel-install add 6.5.10-300.fc39.x86_64 /lib/modules/6.5.10-300.fc39.x86_64/vmlinuz || exit $?
cp: error writing '/boot/efi/a169b9c4383646aebda5f63e812b9c24/6.5.10-300.fc39.x86_64/initrd': No space left on device
dracut: Creation of /boot/efi/a169b9c4383646aebda5f63e812b9c24/6.5.10-300.fc39.x86_64/initrd failed
/usr/lib/kernel/install.d/50-dracut.install failed with exit status 1.
Looks like you’ve ran out of space in /boot/efi - run df -h to confirm, but the message is indicating you don’t have enough space on that partition for the new kernel.
Are you using grub? I was running into a similar issue where the latest kernels were not showing up in /boot, so not available to boot. I ran bootctl status to confirm systemd-boot was not installed in the ESP. If this is the same issue you are experiencing, if you run through Villy’s steps bootctl remove , remove /boot/efi/a169b9c4383646aebda5f63e812b9c24 subdirectory, then run the commands outputted from rpm -q --scripts kernel-core | grep add then you should see the new kernels in /boot. After running this process, the issue was resolve for me. I updated my kernel earlier through dnf update and everything built out fine in /boot.
But the key is to remove /boot/efi/a169b9c4383646aebda5f63e812b9c24 as Villy suggests BEFORE you attempt to run the commands to install the kernels. As Villy mentioned in the last post, that subdirectory’s existence appears to trigger the creation of systemd-boot files in /boot/efi/. If you don’t feel comfortable removing, move it somewhere with more space, before running the install step.
Excellent. Glad to hear it worked out and resolve the issue for you. Credit goes to Villy for pointing out the directory in /boot/efi as being the trigger to re-route the build for the systemd-boot files. Thanks!
I had the same problem. The /boot/efi directory was NOT created with the Fedora 39 install. In my case, the computer had been upgraded through dnf since it was built in about 2017 and still had FC25 or 26 kernels in that directory. The FC39 kernel was added when I did the latest upgrade from FC37 to FC39 but still caused an issue.
Neither /boot/ or /boot/efi are short of memory on this machine as both are 2G partitions.
I don’t know if it would be possible to have the install script look for this directory if there is an issue. May also be something to put in the upgrade notes someplace.
I’ll jump in here to second this. I discovered exactly the same thing with the F39 upgrade. I had a directory named 7814a72fbdd945fb9cee57a87ff23763 which contained kernels going all the way back to F26. After removing this and reinstalling the kernel, it now appears in /boot as expected and grubby --info=ALL now shows the F39 kernel.
Same thing here - I had kernels in another subdirectory in /boot/efi/ from Fedora 26 (4.12.12-300.fc26.x86_64) and neither /boot/efi or /boot was short on space. And my issue started only after I updated to 39 and realized the newer kernel was not available in grub. Apparently there was a change in this version where the presence of that subdirectory in /boot/efi would skip building out the files used by grub like vmlinuz and initramfs in /boot. One thing to note, I did upgrade early - a couple weeks prior to the actual release date. I assumed the issue might have been due to running the beta and was resolved before the actual release. Did you also upgrade prior to 11/7?
I have not had the issue being discussed, so I am guessing here.
The discussion seems to indicate that having that oddly named file under /boot/efi triggers systemd-boot to create systemd boot files for the kernel update instead of the expected files for grub boot. I know that when installing systemd-boot and switching over from grub boot to systemd boot the interim config puts the kernel files in /boot/efi and the final config then places the /boot/efi partiition at /efi.
This also seems to have been a change in the way kernel upgrades are done and is probably in preparation for switching to systemd boot which I seem to recall is presently in the works moving forward. Kernel upgrades seem prepared to support both boot methods with fedora 39.
As I had this issue, I want to point out this may be related to previous upgrades. I say this as I am looking at a laptop that I am about to upgrade and it has one of these directories with many 29 kernel directories in it. FC26 and FC27 in this case. (2017/2018)
This says that the issue is not related directly to FC39 but the upgrade history and as stating, the changes coming forward.