为啥会失去这个 Armbian 反复连接?
Posted
技术标签:
【中文标题】为啥会失去这个 Armbian 反复连接?【英文标题】:Why looses this Armbian repeatedly connectivity?为什么会失去这个 Armbian 反复连接? 【发布时间】:2019-04-01 06:53:59 【问题描述】:我有一个运行 Armbian 的 Olimex Lime2,无头。在这块板上,我只关心 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
日志已完成。我只删除了开头和结尾的行,但没有删除中间的行。
【问题讨论】:
这可能无关,但在许多情况下,我在其他 ARM 板上遇到的类似问题是由于功率不足 - 例如,该板需要 750 mA 的最大吸收,但交流适配器的额定功率仅为500毫安。这确实会导致随机重启,尤其是在繁忙时间(即大多数外围设备使用电源最多的时候)。 非常感谢。我一定会检查的。 【参考方案1】:虽然我没有找到明确的解决方案,但我想分享我尝试过的方法。希望这能为有类似问题的其他人提供启发。
对我有很大帮助的一件事(当时还没有)是切换到更新的操作系统。我正在运行基于 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 分钟不活动后将 HDD 置于待机状态。关闭写缓存是防止文件系统再次损坏的安全措施。某些磁盘在不应该对 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 加密狗不喜欢它温暖。我重复使用了一个儿童鞋盒作为外壳,并将加密狗放入封闭的盒子中导致了一些连接问题。
最后但同样重要的是,我在重启后关闭了自动更新。很多时候,崩溃是在一些(神秘的)重启之后直接发生的。关闭自动更新帮助我完全摆脱了这种情况。
【讨论】:
以上是关于为啥会失去这个 Armbian 反复连接?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 UIStackView 中的 UILabel 在重用时会失去高度?