要更改 Ubuntu 中的关闭盖子操作:

要更改 Ubuntu 中的关闭盖子操作:

我在联想 G50 上运行 Ubuntu 16.04 LTS,一切正常,只是我无法合上笔记本电脑的盖子,否则之后需要重新启动。当我合上盖子(或运行pm-suspend)时,我的笔记本电脑屏幕会变暗几秒钟,然后重新打开。

问题是,当我尝试恢复它时,我的笔记本电脑基本上变成了一个土豆......由于某种原因,网络管理器(wifi和以太网)根本不起作用,终端变得非常慢,我无法运行任何命令,sudo因为它会永远挂在那里。

我尝试过更改文件logind.conf,我尝试过更改Power System Settings,我更新过我的英特尔显卡驱动程序,我安装了类似的工具pmilaptop-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

希望它对你有用!

相关内容