# 飞牛 fnOS 关机后自动重启问题解决教程
## 问题描述
飞牛 fnOS 系统执行关机操作后,系统不是正常关机,而是自动重新启动。
## 排查过程
### 第一步:排除 BIOS 来电自启
**断 电测试**:
1. 正常关机(Web 界面点击关机)
2. 关机后**立即拔掉电源线**
3. 等待 30 秒
4. 重新插上电源线
5. 观察是否自动开机
- 如果拔电后再插电也自动开机 → **BIOS 来电自启问题**,必须进入 BIOS 关闭该功能
- 如果拔电后不自动开机 → 问题可能在系统层面,继续排查
**BIOS 关闭来电自启**:
1. 开机时按 `Delete` 或 `F2` 进入 BIOS
2. 找到以下路径之一:
- **Advanced** → **Power Management** → **PWR ON After PWR Failure** → 设为 **Disabled**
- **Boot** → **ERP** → **Power On By Intruder** → 设为 **Disabled**
- **Chipset** → **Restore Power** → **AC Power Recovery** → 设为 **Off**
3. 按 `F10` 保存并退出
---
### 第二步:检查网络唤醒 (WOL)
执行以下命令检查网络唤醒状态:
`bash
# 查看网卡唤醒配置
ethtool eno1 | grep -E "Wake-on|Supports"
正常输出:
Supports Wake-on: pumbg
Wake-on: d
问题输出(WOL 已启用):
Supports Wake-on: pumbg
Wake-on: g
Wake-on: g 表示网卡允许 Magic Packet 唤醒,这是导致关机后自动开机的主要原因。
第三步:禁用网络唤醒
临时禁用(重启后失效)
# 禁用 WOL
ethtool -s eno1 wol d
# 确认状态
ethtool eno1 | grep Wake-on
输出应为:Wake-on: d(d = disabled)
永久禁用
# 创建 systemd service 文件
cat > /etc/systemd/system/disable-wol.service << 'EOF'
[Unit]
Description=Disable Wake-on-LAN
After=network.target
[Service]
Type=oneshot
ExecStart=/sbin/ethtool -s eno1 wol d
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
# 启用服务
systemctl enable disable-wol.service
# 立即应用
systemctl start disable-wol.service
第四步:检查路由器
如果禁用 WOL 后问题仍然存在,检查路由器设置:
- 查看是否有定时发送 WOL 包的配置
- 检查是否有人从远程发送了 Magic Packet
- 查看 DHCP/网络唤醒相关设置
其他可能原因
| 原因 |
检查命令 |
解决方案 |
| BIOS 来电自启 |
断 电测试 |
进入 BIOS 关闭 |
| 网络唤醒 (WOL) |
ethtool eno1 | grep Wake-on |
禁用 WOL |
| 电源按钮卡住 |
物理检查 |
更换或修复按钮 |
| UPS 配置异常 |
journalctl | grep nut |
检查 NUT 配置 |
| 系统定时任务 |
crontab -l |
检查是否有异常任务 |
验证修复
- 执行
sudo poweroff 或 Web 界面关机
- 观察系统是否正常关机
- 等待至少 2 分钟,确认不会自动重启
- 手动按电源键开机,确认正常
相关命令速查
| 功能 |
命令 |
| 查看 WOL 状态 |
ethtool eno1 | grep Wake-on |
| 临时禁用 WOL |
ethtool -s eno1 wol d |
| 查看 ACPI 唤醒 |
cat /proc/acpi/wakeup |
| 查看电源按钮 |
cat /proc/acpi/button/power/PWRB/state |
| 查看启动日志 |
dmesg | grep -i wakeup |
| 列出开机服务 |
systemctl list-dependencies shutdown.target |
|
|