我有一台安装了 ubuntu 的无头 HP Proliant Microserver。这台机器上有 samba 共享服务媒体,我通常通过 rdp 或 ssh 进入它。现在我的问题是我想让机器进入睡眠模式(这样状态就会从内存保存到硬盘),并且在空闲一小时后看起来就像关闭了一样。
如果有人试图通过 LAN 访问 Samba 共享,我希望它能够被唤醒。现在我的主板支持此功能,有人能告诉我如何轻松实现这一目标吗?
谢谢
答案1
我在网上找到的最好的说明是XBMC wiki 中的 WOL。简而言之(更多信息见链接):
- 您需要在主板上启用 WOL;
- 安装 ethtool
sudo apt-get install ethtool
:; - 设置局域网唤醒选项:
sudo ethtool -s eth0 wol g
; - 使用初始化脚本在系统启动时启用它。wiki 链接中有一个初始化脚本。
未经测试;信息来自 wiki 链接
答案2
除了睡眠模式之外,您还需要休眠模式,因为您希望将状态保存在硬盘中并完全关闭服务器。
因此,正如许多人指出的那样,答案是 WOL(局域网唤醒)。有很多关于它的教程,但主要需要设置以下内容:
- 您的路由器必须绕过魔术包(即 WOL 包)到达您的服务器,因此您需要进行端口转发。它通常位于 LAN 部分。默认端口为 7 和 9。
- 您的主板在关机时需要监听 LAN 端口。大多数现代主板都提供此功能,但默认情况下处于禁用状态。检查一下!在我的情况下,它被称为“通过 LAN 上的 Ring 开机”。
除了适当的电源管理配置之外,服务器不需要更多的设置,就可以在系统不活动一小时后关闭系统(可以从系统>管理>电源管理完成)。
显然,发送 WOL 数据包后您必须等待一段时间,因为您的系统需要解除休眠状态,这可能需要一段时间。
祝你好运
答案3
我决定寻找一个解决方案,在访问时自动唤醒我的媒体服务器,并且不依赖于 dd-wrt。
我有一个树莓派,所以我用它是因为它的功耗低而且我不介意一直开着它,当然它可以在任何 Linux 机器上运行。
我自己找到的最终解决方案是编写一个小的 bash 脚本。raspberry-pi 依赖项是 etherwake 和 tcpdump。默认情况下,这两个程序在 rasbian 上都没有安装。此外,服务器上需要启用局域网唤醒功能,如其他帖子中所述。
sudo apt-get install etherwake
sudo apt-get install tcpdump
唤醒脚本如下:
nano ~/wol.sh
然后:
#!/bin/bash
pingInterval=60 #time interval, in seconds, between checks that the server is still awake.
target=192.168.x.x #WOL target ip address
targetMAC=00:11:22:33:44:55 #WOL target MAC
wake () {
tcpdump -i eth0 -c 1 -p host $target
etherwake $targetMAC
#echo WOL sent to $target at $targetMAC
return
}
while sleep $pingInterval; do
varPing=`ping -s 1 -c 2 $target > /dev/null; echo $?`
if [ $varPing -eq 0 ]; then
#echo ping success
else
#echo ping fail
wake
fi
done
主要想法是,它从我的 raspberry-pi 运行,如果它注意到服务器的单个 arp 请求,它将唤醒服务器。如果服务器处于唤醒状态,则它不会监听 arp 请求,而是不时发送一些 ping 以确保它仍处于唤醒状态。
我将文件命名为 wol.sh 并使其可执行。然后将其放入 sudo crontab 中以 root 身份启动 @reboot。这是为 tcpdump 准备的,它需要提升访问权限才能监听 eth0 和 etherwake。
sudo chmod +x /home/pi/wol.sh
sudo crontab -e
将其添加到底部
@reboot sh /home/pi/wol.sh > /dev/null
答案4
网络唤醒是关键,如今几乎所有的卡都支持所有模式(但 Linux 除外 :()。
最简单的解决方案是使用具有支持局域网唤醒模式的 Linux 驱动程序的卡:pumbg
在 中ethtool
,您需要类似单播模式的东西。这样,只要您访问其网络地址,您的计算机就会立即启动。但获取 Linux 支持的卡列表更加困难,我发现的卡是 Intel Gigabit Netzwerkadapter Pro/1000 GT PCI。
解决方法是,如果您的卡不支持所有模式:几乎所有 Linux 驱动程序都支持 g 模式 => 魔术包。因此,在使用服务器之前,您必须明确打开它。