从 a 恢复后hybrid-sleep
,我可以登录 ( swaylock
) 并且最初看起来没问题 - pwd
,journalctl -xe
在我让它进入睡眠状态时仍然打开的 shell 中按预期运行。
过了一会儿,几十秒,当我退出时journalctl
(我只是想确认它实际上已经睡着了)CPU负载增加,我听到风扇旋转,以及我尝试在同一个外壳中运行的任何东西(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
.
我不确定确切的原因;但我的问题的根源最终是我没有使用
resume
&resume_offset
内核参数启动。我原以为只有在恢复启动时才需要这些;不是休眠的启动,但似乎并非如此。