我的 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
某些设备正在立即唤醒您的机器。
您可以显示所有可以唤醒的设备及其状态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(EHC1
和EHC2
)负责唤醒。您可以使用上面列表中的设备名称echo <DEVICE> | sudo tee /proc/acpi/wakeup
来切换每个设备。<DEVICE>
尝试禁用除 和 之外的所有设备PWRB
,PXSX
并检查这是否有帮助。如果有帮助,您可以逐个重新启用,直到找到正在唤醒的设备。
编辑
将此脚本复制到 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
- 电源菜单中启用休眠选项