我的无盘实验室计算机无法正常关闭,因为systemd
可能没有正确处理手动的NFS 安装在initramfs
.我将简短地描述正在发生的事情:
- 我
initramfs
在其中安装了ro
多个 NFS 共享(整个/
、配置文件等)并覆盖它们,为每个工作站overlayfs
创建rw
Debian 无盘。 - 然后我
switch_root
进入这个覆盖系统,它启动得非常好并且工作没有问题。 Homes 在启动期间根据fstab
. - 在我的系统中,我完全禁用了网络管理器,以防止用户摆弄网络。这对他们来说是非常有害的:)
- 当我关闭系统时,系统会挂起
nfs: server not responding, still trying...
(启用 NM 也会发生这种情况,但在这种情况下,有时关闭会成功,但它是不确定的)。
因此,我的手动安装以某种方式“隐藏”在systemd
(我怀疑)中。我的fstab
:
none / overlay defaults,x-systemd.requires=network-online.target 0 0
X.X.X.X:/home /home nfs rw,nodev,nosuid,hard,nolock,proto=tcp,nfsvers=3,sec=krb5,x-systemd.requires=network-online.target 0 0
我尝试过_netdev
,x-systemd.requires...
但没有任何帮助。
有解决办法吗?如何卸载覆盖下的所有 NFS 共享/
,或者至少在/home
正确卸载后强制重新启动系统? (系统是无盘的,所有更改都在 中overlayfs
,因此仅举个例子是安全的echo b > /proc/sysrq-trigger
);)
最好的问候
卡米尔
答案1
我花了两天时间找到了比较靠谱的解决方案。我浏览了一半的互联网并在#systemd
IRC上聊天。请阅读此文档,也许这会对您有所帮助;对我来说,这些都没有帮助,我无法让它发挥作用。
https://www.freedesktop.org/wiki/Software/systemd/InitrdInterface/
https://www.freedesktop.org/wiki/Software/systemd/RootStorageDaemons/
我最终覆盖了systemd
负责关闭或重新启动机器的服务。
创建覆盖目录:
/etc/systemd/system/systemd-poweroff.service.d
/etc/systemd/system/systemd-reboot.service.d
/etc/systemd/system/systemd-halt.service.d
并放入里面的override.conf
文件。
为了poweroff
:
[Unit]
SuccessAction=poweroff-immediate
为了reboot
:
[Unit]
SuccessAction=reboot-immediate
对于halt
(例如,当使用 Gnome 中的“电源关闭”按钮时调用):
[Unit]
ExecStart=systemctl --force --force halt
添加第二个--force
或immediate
按其说明进行操作。它不会等待安装或其他事情,而只是重新启动/关闭机器。对于 NFS 只读挂载来说,这没有害处并且可以安全地完成。另外,我的 RAM 中的所有更改overlay
也将消失,这很好。我/home
唯一关心的 将会被该home.mount
单元正确卸载,为所有条目自动创建fstab
。
我希望这能帮助某人避免两天的挫败感;)
最好的问候
卡米尔