New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MBR kexec failed due to "Cannot find the ESP partition mount point" #7730
Comments
Sorry, currently |
v235 had no such issue, but v236 release notes did not mention about this. |
Indeed. At least we should mention that in NEWS or somewhere. |
Well, do note that if users load a kexec kernel with the kexec-tools before issuing "systemctl kexec", then our bootloader spec logic will not take effect. What changed here really is that previously, if you didn't load a kexec kernel before issuing "systemctl kexec" we'd always just fallback to "systemctl reboot", while now we try to load a kernel, but that only works if the bootloader spec is used, and if we can't then we'll fail. |
Ah, thank you for the explanation. |
By the way, It works for me like mentioned above but have to type commands manually to take effect on a Legacy, not UEFI system.
After such operations, it successfully loads another kernel while initially being booted with GRUB. Didn't really get why for such limitations have been introduced... |
I use the pair
on a pre-EFI machine. In systemd 235, this works. After 4bb2e9d that is included in systemd 236, while executing the above commands, systemd insists on locating an ESP partition and reading certain systemd boot loader configuration files. If that fails for any reason (non-EFI system, not using the systemd boot loader), it appears that kexec cannot be used. I'm curious why this regression was deemed OK? @keszybz ? |
Hmm, I must say I wonder too, whether old behaviour wasn't better: "systemctl kexec" meant that we'd use kexec if it was setup, and did a plain reboot otherwise. That way "systemctl kexec" was an optimization primarily, and the outcome of having a rebooted kernel would always hold, though not necessarily through kexec. @keszybz I think we should revisit this change of behaviour! |
…the kernel $ build/systemctl kexec Cannot find the ESP partition mount point. Automatic loading of the new kernel is only supported on sd-boot systems. Load the kernel first with kexec -l ... and run systemctl kexec again. Fixes systemd#7730.
Behaviour was changed on purpose — with previous logic it was too easy to not load the kernel by mistake and try to execute kexec and get a normal reboot instead. I think if want to call kexec, you know (or at least expect) the kernel to be loaded. Why would you call kexec if you haven't loaded the kernel before? You'd have to rely on the off-chance that something loaded the right kernel. I think any kind of scripted or manual use of All in all, kexec is a low-level tool, you need to know what you are doing, and it's not equivalent to a normal reboot. In particular, a normal reboot goes through the boot-loader and uses the options there, and kexec allows for a different kernel / different options. So I think it's good to keep those two things separate. |
Hmm, not that I look at this again, something is fishy. Doing So... after playing with this a bit, I still think that if |
When we are in late shutdown, and for whatever reason kexec fails, we should proceed with a normal reboot. Network is down and sessions have been terminated when we attempt to do the kexec, so rebooting normally is a better solution. Logs from the case where the kexec kernel is not usable: Mar 08 11:23:10 fuefi systemd[1]: Reached target Final Step. Mar 08 11:23:10 fuefi systemd[1]: Starting Reboot via kexec... Mar 08 11:23:10 fuefi systemctl[1480]: Cannot find the ESP partition mount point. Mar 08 11:23:10 fuefi systemctl[1480]: Failed to load kexec kernel, continuing without. Mar 08 11:23:10 fuefi systemd[1]: Shutting down. ... and then we proceed to do a normal reboot Related to systemd#7730.
When we are in late shutdown, and for whatever reason kexec fails, we should proceed with a normal reboot. Network is down and sessions have been terminated when we attempt to do the kexec, so rebooting normally is a better solution. Logs from the case where the kexec kernel is not usable: Mar 08 11:23:10 fuefi systemd[1]: Reached target Final Step. Mar 08 11:23:10 fuefi systemd[1]: Starting Reboot via kexec... Mar 08 11:23:10 fuefi systemctl[1480]: Cannot find the ESP partition mount point. Mar 08 11:23:10 fuefi systemctl[1480]: Failed to load kexec kernel, continuing without. Mar 08 11:23:10 fuefi systemd[1]: Shutting down. ... and then we proceed to do a normal reboot Related to systemd#7730.
When we are in late shutdown, and for whatever reason kexec fails, we should proceed with a normal reboot. Network is down and sessions have been terminated when we attempt to do the kexec, so rebooting normally is a better solution. Logs from the case where the kexec kernel is not usable: Mar 08 11:23:10 fuefi systemd[1]: Reached target Final Step. Mar 08 11:23:10 fuefi systemd[1]: Starting Reboot via kexec... Mar 08 11:23:10 fuefi systemctl[1480]: Cannot find the ESP partition mount point. Mar 08 11:23:10 fuefi systemctl[1480]: Failed to load kexec kernel, continuing without. Mar 08 11:23:10 fuefi systemd[1]: Shutting down. ... and then we proceed to do a normal reboot Related to systemd#7730. (cherry picked from commit d23b5ce)
When we are in late shutdown, and for whatever reason kexec fails, we should proceed with a normal reboot. Network is down and sessions have been terminated when we attempt to do the kexec, so rebooting normally is a better solution. Logs from the case where the kexec kernel is not usable: Mar 08 11:23:10 fuefi systemd[1]: Reached target Final Step. Mar 08 11:23:10 fuefi systemd[1]: Starting Reboot via kexec... Mar 08 11:23:10 fuefi systemctl[1480]: Cannot find the ESP partition mount point. Mar 08 11:23:10 fuefi systemctl[1480]: Failed to load kexec kernel, continuing without. Mar 08 11:23:10 fuefi systemd[1]: Shutting down. ... and then we proceed to do a normal reboot Related to systemd#7730. (cherry picked from commit d23b5ce)
I used to be using a kexec-load.service like described in the arch wiki: https://wiki.archlinux.org/index.php/kexec#Separate_.2Fboot_partition Updated to systemd with the mentioned commit in it today, and now I don't seem to be able to systemctl kexec anymore, because it can't find the nonexistent ESP. |
A workaround:
(some of the |
The last just results in a system hang on reboot for me. |
In openSUSE we also loaded the kexec kernel during the shutdown initiated by But it would be even nicer, if we could have the kexec-load.service file run between |
I just hit the same issue. The error/warning is just confusing. I suggest to extend it.
|
Fixes systemd#7730. (cherry picked from commit 2fec585)
Fixes systemd#7730. (cherry picked from commit 2fec585) (cherry picked from commit 65fd2fc)
If on UEFI then run systemctl kexec else run kexec for BIOS/MBR. Otherwise systemctl kexec on BIOS/MBR will fail with error: systemd/systemd#7730
Submission type
systemd version the issue has been seen with
Used distribution
In case of bug report: Expected behaviour you didn't see
In case of bug report: Unexpected behaviour you saw
In case of bug report: Steps to reproduce the problem
The text was updated successfully, but these errors were encountered: