我长期使用旧的 Acer Travelmate 4000 笔记本电脑作为我的本地服务器,并安装有 Ubuntu 桌面。
今年,我安装了 16.04 i386 服务器版,非常开心。整个 Linux 工作集、网络堆栈和 apache2 仅使用 2GB 板载内存中的 37MB... 无需交换!
问题是,发出重新启动(或关机)命令总是挂在控制台的同一点:“达到关机目标”,需要硬关闭电源并重新启动。
我可以做些什么来进一步诊断这个问题?
更新:根据建议,我在 sudo 下的控制台上输入命令“systemctl start debug-shell”,然后输入“reboot”。
但是,这个 vanilla 服务器缺少窗口管理器,因此当出现最后一个控制台消息“已达到关闭目标”时,没有任何组合键能够生成 VT 并列出任何失败的作业。Alt+SysRq 咒语对于继续重启也无效。
无论如何,现在有一条新的最后一条消息,内容为:“[278.430967] systemd-shutdown:无法完成 DM 设备。忽略”
我尝试了在关机时禁用交换空间的解决方法类似的错误报告,但它没有帮助;可能是因为我的 3GB 交换文件未使用并且 /tmp 的使用率很少(~2%)。
还有什么我可以尝试将标记向前移动吗?
更新2:将建议的 journalctl 和 systemctl 命令的输出捕获到文件中没有产生任何异常。
由于该服务器上没有 GUI,因此我使用了这个 github 代码在更新/升级/重启之前启用 Xenial Proposed 以确保新的 systemd-229 已加入。
遗憾的是,这并没有什么区别。我不知道这是否相关,但我在安装 Ubuntu 时选择了使用默认的 LVM 卷组作为 /boot、/home、/var、/tmp 和 swap。
我真的是唯一一个看到这个问题的人吗?
(这是重新启动后控制台的屏幕截图,再等待大约 3 分钟):
答案1
谁知道这个问题“systemd-shutdown:无法完成 DM 设备。忽略。”何时/是否会在这个旧平台上得到修复 - 我读到的任何资料都表明它会很快得到修复。
同时,这种解决方法允许我重新启动服务器,而无需对机器进行物理电源循环。
以下所有命令都在 sudo 下:
- 将这些命令放入文件中,例如 ~/sysrq-reboot.sh
echo 1 > /proc/sys/kernel/sysrq sync && echo b > /proc/sysrq-trigger
- chmod +x 该文件使其可执行
- 然后,要重新启动,只需使用 sudo ~/sysrq-reboot.sh 运行脚本
如果通过 ssh 远程运行脚本,我发现我还需要强制关闭我的 ssh 窗口并重新建立一个新的 ssh 会话(等待一分钟以使机器可以访问)。
答案2
Ubuntu 16.10 一发布我就升级了,但这个问题并没有得到解决。此后的软件包升级也没有奏效。
但是,今天的软件包升级一定包含了一个修复,因为我现在可以愉快地从远程 SSH 会话发出常规的“sudo reboot”并在一两分钟内重新连接到服务器。
这是我的 /var/log/apt/history.log 中的最新条目:
升级:libsystemd0:i386(231-9git1、231-9ubuntu1)、udev:i386(231-9git1、231-9ubuntu1)、libudev1:i386(231-9git1、231-9ubuntu1)、python3-distupgrade:i386(1:16.10.7、1:16.10.8)、ubuntu-release-upgrader-core:i386(1:16.10.7、1:16.10.8)、systemd-sysv:i386(231-9git1、231-9ubuntu1)、libpam-systemd:i386(231-9git1、231-9ubuntu1)、systemd:i386(231-9git1、231-9ubuntu1), libnss-resolve:i386(231-9git1、231-9ubuntu1)
从这个列表中,向所有应用了所需魔法咒语的软件包维护者致以深深的“谢谢!”...你知道你是谁:)
更新由于 Ubuntu 不再支持 i386 机器,我很高兴切换到 Lubuntu 18.04。味道很好,不太饱腹!