我在 Lenovo 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 掛起不起作用修復
步驟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
希望它對你有用!