我在联想 G50 上运行 Ubuntu 16.04 LTS,一切正常,只是我无法合上笔记本电脑的盖子,否则之后需要重新启动。当我合上盖子(或运行pm-suspend
)时,我的笔记本电脑屏幕会变暗几秒钟,然后重新打开。
问题是,当我尝试恢复它时,我的笔记本电脑基本上变成了一个土豆......由于某种原因,网络管理器(wifi和以太网)根本不起作用,终端变得非常慢,我无法运行任何命令,sudo
因为它会永远挂在那里。
我尝试过更改文件logind.conf
,我尝试过更改Power System Settings
,我更新过我的英特尔显卡驱动程序,我安装了类似的工具pmi
或laptop-mode
...我没有主意了,但我会尽一切努力来解决这个问题。
如果有任何有用的系统信息,请告诉我,我会将其添加到帖子中。
答案1
要更改 Ubuntu 中的关闭盖子操作:
以 root 身份在文本编辑器中打开 /etc/systemd/logind.conf 文件,例如,
sudo nano /etc/systemd/logind.conf
更改此行:
#HandleLidSwitch=ignore
到这一行:
HandleLidSwitch=suspend
确保其已被注释掉。
或者你也可以添加此行,但我更喜欢第一行:
HandleLidSwitchDocked=suspend
然后运行:
sudo service systemd-logind restart
或者重启。
要排除休眠/挂起模式故障,您应该在终端中输入以下命令:
dmesg|less
通常会有一个条目表明哪个应用程序导致暂停失败:
[32467.560058] Freezing of tasks failed after 20.01 seconds (1 tasks refusing to freeze, wq_busy=0):
[32467.560115] plasma-desktop D 0000000000000000 0 2065 1 0x00800004
修复笔记本电脑的挂起问题
sudo apt-get install uswsusp
现在测试暂停:
sudo s2ram
如果它不起作用,请使用:
sudo s2ram --force
接下来编辑此文件:
sudo nano /usr/lib/hal/scripts/linux/hal-system-power-suspend-linux
将代码更改为:
#!/bin/sh
/sbin/s2ram --force
编辑:另一个修复:
将脚本放入 ' /etc/pm/sleep.d/ ' 中,其中的脚本将在挂起和恢复时运行。文件名应以排序数字开头,00-49 表示用户脚本(有关详细信息,请参阅 man pm-suspend)。
脚本可能看起来像这样
#!/bin/sh
(killall -9 mount.nfs; exit 0)
如果您遇到问题,请检查 /var/log/pm-suspend.log,它将记录暂停和运行脚本的尝试。
Ubuntu 暂停功能无法正常工作 FIX
步骤 1:打开终端并创建脚本文件,如下所示:
sudo nano /etc/pm/sleep.d/20_custom-ehci_hcd
第 2 步:将下面的整个脚本复制到刚刚创建的文件中并保存:
#!/bin/sh
VERSION=1.1
DEV_LIST=/tmp/usb-dev-list
DRIVERS_DIR=/sys/bus/pci/drivers
DRIVERS="ehci xhci" # ehci_hcd, xhci_hcd
HEX="[[:xdigit:]]"
MAX_BIND_ATTEMPTS=2
BIND_WAIT=0.1
unbindDev() {
echo -n > $DEV_LIST 2>/dev/null
for driver in $DRIVERS; do
DDIR=$DRIVERS_DIR/${driver}_hcd
for dev in `ls $DDIR 2>/dev/null | egrep "^$HEX+:$HEX+:$HEX"`; do
echo -n "$dev" > $DDIR/unbind
echo "$driver $dev" >> $DEV_LIST
done
#for bus in $EHCI_BUSES; do
echo -n $bus > /sys/bus/pci/drivers/ehci_hcd/unbind
# done
done
}
bindDev() {
if [ -s $DEV_LIST ]; then
while read driver dev; do
DDIR=$DRIVERS_DIR/${driver}_hcd
#for bus in $EHCI_BUSES; do
echo -n $bus > /sys/bus/pci/drivers/ehci_hcd/bind
#done
while [ $((MAX_BIND_ATTEMPTS)) -gt 0 ]; do
echo -n "$dev" > $DDIR/bind
if [ ! -L "$DDIR/$dev" ]; then
sleep $BIND_WAIT
else
break
fi
MAX_BIND_ATTEMPTS=$((MAX_BIND_ATTEMPTS-1))
done
done < $DEV_LIST
fi
rm $DEV_LIST 2>/dev/null
chvt 1
chvt 7
}
EHCI_BUSES="0000:00:1a.0 0000:00:1d.0"
case "$1" in
hibernate|suspend)
unbindDev;;
resume|thaw)
bindDev;;
esac
步骤 3:输入以下命令授予脚本运行权限:
sudo chmod 755 /etc/pm/sleep.d/20_custom-ehci_hcd
答案2
读完后,我发现问题出在许多联想笔记本电脑(我使用的是 G50-80)中使用的 Qualcomm Atheros QCA6164 WiFi 卡上。Ubuntu 似乎没有适合此卡的固件,这导致它出现故障。
我还发现,在关闭笔记本电脑之前关闭 Wifi 可以防止一切出现问题,所以我把这个和解决方案放在了这里邮政并创建一个文件来/etc/acpi/
处理盖子关闭事件。
使用添加以下代码sudo nano /etc/acpi/lid.sh
:
#!/bin/sh
grep -q closed /proc/acpi/button/lid/LID0/state
if [ $? = 0 ]
then
nmcli radio wifi off
pm-suspend
else
nmcli radio wifi on
fi
接下来,使用添加以下几行sudo nano /etc/acpi/events/lm_lid
:
event=button/lid.*
action=/etc/acpi/lid.sh
现在,取消注释并使用以下行进行设置sudo nano /etc/systemd/logind.conf
:
HandleLidSwitch=ignore
最后,进入System Settings > Power
并将所有关闭盖子选项放入Do Nothing
。
运行以下命令设置权限并完成更改:
sudo chmod 755 /etc/acpi/lid.sh
sudo /etc/init.d/acpid restart
sudo service systemd-logind restart
希望它对你有用!