默认情况下使用 kexec 让 Ubuntu 重新启动的正确方法是什么(尤其是从 GUI 启动重新启动时)?
我发现这kexec 重启脚本,下载并运行时会使用sudo kexec-reboot -l -r
kexec 重新启动内核(不通过 EFI)。
我怎样才能使从 GUI 选择重新启动导致 kexec 重新启动?我正在使用 Unity 7。它以前只需安装包并使用 进行配置即可工作dpkg
,但这表明它仅适用于 System-V,现在我们正在使用 systemd。
答案1
这个(未回答的) askubuntu 仍然在搜索结果中名列前茅。
以下是来自优质来源的几篇解决此问题的方法:
https://www.tomica.net/blog/2019/03/reboot-with-kexec-on-ubuntu-18-04/
https://www.linux.com/news/reboot-racecar-kexec/
而且,似乎正在努力将其融入 Ubuntu 本身,目前正处于规范阶段。它既可以作为补充指南,也可以指出几个尚未解决的问题:
答案2
因此,从 21.10(和 Kubuntu)开始,只要开始使用systemd-boot
而不是GRUB2
来启动机器,它就可以工作 - 这也可能将启动速度加快几秒钟。详情如下:如何在 ubuntu 20.04 中用引导加载程序“systemd-boot”替换 grub?
一旦准备好,sudo systemctl kexec
就可以工作了。
如果您使用 Nvidia 卡和多个显示器(甚至可能没有),则可能需要创建一个新的 systemd 单元。
sudo gedit /usr/lib/systemd/system/unmodeset.service
[Unit]
Description=Unload nvidia modesetting modules from kernel
Documentation=man:modprobe(8)fi
DefaultDependencies=no
After=umount.target
Before=kexec.target
[Service]
Type=oneshot
ExecStart=modprobe -r nvidia_drm
在我的例子中,有些作业需要 90 秒才能关闭。调整这些值有助于/etc/systemd/systemd.conf
:
DefaultTimeoutStartSec=3s
DefaultTimeoutStopSec=3s
DefaultStartLimitIntervalSec=2s
将其设为从 GNOME 调用时的默认重启操作似乎是不可能的。https://github.com/systemd/systemd/issues/15029#issuecomment-981781792它们logind
直接调用,因此如果不修补软件,这是不可能的。希望你能说服 GNOME 开发人员。在 KDE 中,覆盖重启操作的功能位于 SDDM 中,但现在已损坏:https://github.com/sddm/sddm/issues/434