我有一个Olimex Lime2,它运行着一个无头的Armbian。在此板上,我仅关心SSH和MiniDLNA。我希望能够包含整个配置,但是重要的一点可能是我在/boot/armbianEnv.txt
中输入的内容
extraargs=acpi=off
一年来,我很难调试可用性问题。机器会随机停止以通过ping或ssh进行访问。这些问题很难调试,因为当连接显示器或键盘时它们似乎消失了,而当系统无头运行时我找不到它们的任何踪迹。虽然我几乎不知道如何控制问题,但Olimex仍然时不时地做出响应。这次我想问为什么。
我注意到Olimex在10/25日下午2点停止提供DLNA访问。我没有触摸它是否可以恢复(有时会发生)。这次,直到我拔掉电源,系统仍无法访问2天。
下面您可以找到两个日志的链接。如果能指出其中的任何可疑之处,我将感到非常高兴,这样我就可以开始解决它们了。
我想知道的一件事:为什么系统决定重新启动?那天没有停电。我希望正常的重启会在日志中显示出来,对吗?
日志:
/var/logs/messages
:https://pastebin.com/qgRumreB
/var/logs/syslog
:https://pastebin.com/U5jpHNHm
日志已完成。我只删除了开头和结尾的行,而没有删除它们之间的行。
答案 0 :(得分:0)
尽管我没有找到明确的解决方案,但我想分享一下我尝试过的内容。希望这将为其他有类似问题的人提供启发。
对我有很多帮助(当时还没有提供)的是切换到较新的操作系统。我正在运行基于Ubuntu 18.04的Armbian,日志现在变得更整洁了。此外,一些细微的细节也有所改善。如果您登陆这里并仍然运行Armbian Stretch,则应该进行升级。
频繁崩溃的原因之一可能是由于频繁崩溃而导致的损坏的文件系统 :-(。Armbian使用以下方式挂载SD卡
UUID=<uid> / ext4 defaults,noatime,nodiratime,commit=600,errors=remount-ro 0 1
请注意commit=600
,这意味着更改将仅每10分钟写入一次。如果您的计算机在两次崩溃之间崩溃,则文件系统可能已损坏。因此,您可以在SD卡文件系统上运行fsck.ext4
。为了根本解决问题,您可以:
我认为为我解决了问题的方法是通过SATA连接的外部硬盘进入睡眠状态。我很惊讶这不会自动发生。现在,我在/etc/hdparm.conf
上附加了以下部分:
/dev/disk/by-uuid/<uid> {
spindown_time = 60
write_cache = off
}
这告诉hdparm在5分钟不活动后将其置于待机状态。关闭写缓存是再次防止文件系统损坏的安全措施。某些磁盘在不应该对BtrFS写入指令进行重新排序时。
我观察到的是在计算机上施加一些负载有助于保持系统的正常运行。不幸的是,这只有在某个时间点之前才是正确的。但是,如果附加键盘和鼠标或贯穿始终运行脚本有助于重启,则可以使用某些功能。
我使用以下脚本记录可能在崩溃时对我有帮助的信息:
#!/bin/bash
# LICENSE: GPLv3 or later
set -euo pipefail
LOGFILE=/home/mgoerner/error-detection.log
function main() {
parse_cli_args "$@"
while true
do
print_debug_information >>"$LOGFILE" 2>&1
sync
sleep 3m
done
}
function parse_cli_args() {
if [[ $# -eq 1 ]]
then
arg="$1";shift
if [[ "$arg" == "--help" || "$arg" == "-h" ]]
then
print_usage
exit
fi
LOGFILE="$arg"
elif [[ $# -gt 1 ]]
then
echo "Please provide at most one argument!" >&2
exit 1
fi
}
function print_usage() {
cat <<EOF
$0 [LOGFILE]
EOF
}
function print_debug_information() {
echo
date
uptime
dmesg -uT | tail
ip addr show wlxd85d4c97e434
iwlist wlxd85d4c97e434 scan | egrep ESSID
hdparm -acdgkmurC /dev/sda
free
}
main "$@"
我让它在启动后自动启动。将睡眠时间设置为不到10分钟以使崩溃消失,但是现在不再如此。不幸的是,此脚本生成的错误日志从没有帮助您获得任何见识。 /var/log/
中的各种日志也是如此。但是,这可能与您不同。
此外,我怀疑我的 WiFi加密狗不喜欢它。我重新使用了一个童鞋盒,并将加密狗放在封闭的盒子里造成了一些连接问题。
最后但并非最不重要的一点,我重启后关闭了自动更新。通常,崩溃是在某些(神秘的)重新启动后直接发生的。启用自动更新后,我完全摆脱了这一麻烦。