编辑

编辑

我的 Ubuntu 是 Thinkpad T400 上的 14.04。

我尝试运行以下命令进行休眠:

sudo pm-hibernate 

它会闪烁然后恢复正常。运行pm-suspend-hybrid 也会闪烁然后恢复正常。只会sudo pm-suspend工作。那么我该如何休眠?

pm-is-supported --hibernate并且pm-is-supported --suspend-hybrid 不返回任何内容,我认为这意味着我的系统同时支持两者?

输出pm-is-supported是否也意味着 BIOS 允许所有睡眠模式?


这是 的输出/proc/acpi/wakeup

Device  S-state   Status   Sysfs node
LID   S3    *enabled   platform:PNP0C0D:00
SLPB      S3    *enabled   platform:PNP0C0E:00
UART      S3    *disabled
IGBE      S4    *enabled   pci:0000:00:19.0
EXP0      S4    *disabled  pci:0000:00:1c.0
EXP1      S4    *disabled  pci:0000:00:1c.1
EXP2      S4    *disabled
EXP3      S4    *disabled  pci:0000:00:1c.3
EXP4      S4    *disabled  pci:0000:00:1c.4
PCI1      S4    *disabled  pci:0000:00:1e.0
USB0      S3    *enabled   pci:0000:00:1d.0
USB3      S3    *enabled   pci:0000:00:1a.0
USB5      S3    *enabled   pci:0000:00:1a.2
EHC0      S3    *enabled   pci:0000:00:1d.7
EHC1      S3    *enabled   pci:0000:00:1a.7
HDEF      S4    *disabled  pci:0000:00:1b.0
  1. 唤醒文件是否同样适用于挂起和休眠?如果是,那么考虑到我可以挂起但不能休眠,您的方法是否解决了休眠的问题?

  2. “启用”和“禁用”是指设备是否可以唤醒操作系统吗?

  3. 我该如何尝试更改唤醒文件以查看它是否可以实现休眠?

答案1

某些设备正在立即唤醒您的机器。

您可以显示所有可以唤醒的设备及其状态cat /proc/acpi/wakeup

# cat /proc/acpi/wakeup
Device  S-state   Status   Sysfs node
PS2K      S4    *disabled
PS2M      S4    *disabled
UAR1      S4    *disabled  pnp:00:06
P0P1      S4    *disabled
RP01      S4    *disabled  pci:0000:00:1c.0
PXSX      S4    *disabled
RP02      S4    *disabled
PXSX      S4    *disabled
RP03      S4    *disabled
PXSX      S4    *disabled
RP04      S4    *disabled
PXSX      S4    *disabled
RP07      S4    *disabled  pci:0000:00:1c.6
PXSX      S4    *enabled   pci:0000:06:00.0
RP08      S4    *disabled
PXSX      S4    *disabled
PEG0      S4    *disabled  pci:0000:00:01.0
PEGP      S4    *disabled
PEG1      S4    *disabled
PEG2      S4    *disabled
PEG3      S4    *disabled
RP05      S4    *disabled  pci:0000:00:1c.4
PXSX      S4    *disabled  pci:0000:03:00.0
RP06      S4    *disabled  pci:0000:00:1c.5
PXSX      S4    *disabled  pci:0000:04:00.0
GLAN      S4    *disabled
EHC1      S4    *disabled  pci:0000:00:1d.0
EHC2      S4    *disabled  pci:0000:00:1a.0
XHC   S4    *disabled  pci:0000:00:14.0
HDEF      S4    *disabled  pci:0000:00:1b.0
PWRB      S4    *enabled   platform:PNP0C0C:00

在我的例子中,USB(EHC1EHC2)负责唤醒。您可以使用上面列表中的设备名称echo <DEVICE> | sudo tee /proc/acpi/wakeup来切换每个设备。<DEVICE>

尝试禁用除 和 之外的所有设备PWRBPXSX并检查这是否有帮助。如果有帮助,您可以逐个重新启用,直到找到正在唤醒的设备。

编辑


将此脚本复制到 gedit 中

#!/bin/sh
#Prevent USB and Ethernet from waking up
for i in "IGBE" "USB0" "USB3" "USB5" "EHC0" "EHC1"; do
echo $i | sudo tee /proc/acpi/wakeup
done

将其保存到~/prev_wakeup,然后运行chmod 755 ~/prev_wakeup~/prev_wakeup接下来尝试进入休眠状态并检查这是否有帮助。

如果是这样,你可以将其添加到你的/etc/rc.local

#Prevent USB and Ethernet from waking up
for i in "IGBE" "USB0" "USB3" "USB5" "EHC0" "EHC1"; do
echo $i > /proc/acpi/wakeup
done

答案2

  • 如果你没有,请swap partition创建一个。通过使用任何 gparted(用于 Linux)或任何 aomei/mini 分区工具(用于 Windows)(如果你是双重启动)。
  • ext2在文件系统中创建该分区。
  • 创建分区后,必须对其进行格式化。
  • 在格式化之前,我们应该知道它的标签,如 sda1 或 sda2 等,在终端中输入sudo blkid或者sudo lsblk. 它提供 UUID 和分区类型。
  • 了解分区类型后 sudo mkswap /dev/sdxx这将格式化分区。
  • 然后你必须通过以下方式挂载分区 sudo swapon -U UUID
  • 然后打开gedit /etc/fstab并将此行添加到该文件 - UUID=XXX none swap sw 0 0
  • 如果你想使用交换区进行休眠,那么你需要更新 UUID /etc/initramfs-tools/conf.d/resume有此内容RESUME=UUID=xxx.
    别忘了sudo update-initramfs -u

在电源菜单中启用休眠选项-

  • sudo gedit /etc/polkit-1/localauthority/50-local.d/com.ubuntu.enable-hibernate.pkla

  • 输入-


    [在 upower 中默认重新启用 hibernate]
    Identity=unix-user:*
    Action=org.freedesktop.upower.hibernate
    ResultActive=yes

    [在 logind 中默认重新启用 hibernate]
    Identity=unix-user:*
    Action=org.freedesktop.login1.hibernate
    ResultActive=yes

  • 类型sudo killall unity-panel-service

  • 电源菜单中启用休眠选项

相关内容