In systemd-shutdown, the path to kexec is hardcoded as /sbin/kexec, but on some Linux distributions, kexec is installed in /usr/sbin/kexec and /sbin is not a symlink to /usr. Systemd should search in more locations than just /sbin for this program.
On distributios where /bin is not a symlink to /usr/bin, i.e. where split off /usr is supported kexec needs to be in the root fs, since /usr is not necessarily available that late. So, from what I understand your setup is contradictory. Can you elaborate?
On Gentoo, /usr is never unmounted by the default init system (sysvinit+openrc) on shutdown; it's treated like / and just remounted read-only. This means that /usr is always considered available during the final stages of shutdown and /usr/sbin/kexec can be called to complete the reboot.
But systemd doesn't do that. It really tries hard to unmount everything that works, and all the storage below it. And that includes /usr. Only the root fs itself stays read-only. I mean, I am not opposed to making this detectable at boot, like we do it for the quota tools (But I'd need a patch for that). However, I'd just like to point out that sucha setup makes little sense.
(In reply to comment #3) > I mean, I am not opposed to making this detectable at boot, like we do it > for the quota tools (But I'd need a patch for that). However, I'd just like > to point out that sucha setup makes little sense. detectable at "build" is what i meant here, not boot.
Path to kexec will now be detected at build time: http://cgit.freedesktop.org/systemd/systemd/commit/?id=7801356.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.