要更改 Ubuntu 中的合蓋操作:

要更改 Ubuntu 中的合蓋操作:

我在 Lenovo 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 掛起不起作用修復

步驟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

希望它對你有用!

相關內容