从 a 恢复后hybrid-sleep
,我可以登录 ( swaylock
),最初看起来没问题 -按预期运行pwd
,journalctl -xe
当我将其置于睡眠状态时,shell 仍然打开。
但过了一会儿,几十秒,当我退出时journalctl
(我只是想确认它实际上已经睡着了)CPU 负载增加,我听到风扇旋转,以及我尝试在同一个 shell 中运行的任何内容(pwd
再次) ,比如说)导致 SIGSEGV - 地址边界错误。
因此,我什至无法发出关闭命令,因此我必须使用电源按钮强制关闭它。重新启动后,journalctl --boot=-1
进入睡眠状态后就没有任何条目,就像从未醒来一样。我假设当我看到它们时,它们仅存储在 RAM 中,当我关闭时,它无法将它们写入具有相同段错误的磁盘。
该行为非常不稳定 - 在起草上述内容后,我再次测试并能够swaylock
通过输入单个键(而不是我的完整密码)来“登录”(绕过),但我尝试在打开(恢复)shell 中运行的任何命令都会导致终端仿真器崩溃,并且和以前一样,我无法再重新打开任何命令(我的键绑定运行的命令可能也出现段错误)。
有什么想法可能是什么原因吗?或者甚至当系统稳定时我如何在不访问日志的情况下调试它?
一些可能相关的信息,如果有人可以提出可能相关/可疑的内容,我将编辑更多内容:
# /etc/systemd/system/swapfile.swap
[Unit]
Description=providing a swapfile
[Swap]
What=/swapfile
Priority=20
[Install]
WantedBy=multi-user.target
# /etc/systemd/system/swapfile-creation.service
[Unit]
Description=creating a swap file at /swapfile
ConditionPathExists=!/swapfile
Before=swapfile.swap
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'dd if=/dev/zero of=/swapfile bs=1M count="$(expr "$(cat /sys/power/image_size)" / 1024 / 1024)" status=progress'
ExecStart=/usr/bin/chmod 600 /swapfile
ExecStart=/usr/bin/mkswap /swapfile
[Install]
RequiredBy=swapfile.swap
我本来要包含该systemd-boot
条目(或我用来创建它的脚本),但实际上我意识到我还没有测试过断电情况——这是从 RAM 恢复时发生的。我将仔细检查(未使用的)磁盘暂挂是不是罪魁祸首,它在从普通恢复时不起作用systemctl suspend
。
答案1
我不确定具体原因;但我的问题的根源最终是我没有用resume
&启动resume_offset
内核参数启动。我原以为这些只是在恢复启动时才需要;不是冬眠的靴子,而是似乎并非如此。