因为thinkbook 14p BIOS不支持开启 S3,所以这里只能查看其它方法。通过谷歌搜索后,发现可以通过修改DSDT实现开启S3。
步骤
-
提取ACPI 表格二进制到 dsdt.dat
# cat /sys/firmware/acpi/tables/DSDT > dsdt.dat
-
反编译ACPI表格到.dsl文件
$ iasl -d dsdt.dat
-
修改dsdt.dsl文件,开启S3
参考这里修改
-
编译修改后的dsl文件
$ iasl -tc dsdt.dsl
-
使用修改后的dsdt
有两种方式:1. 使用CPIO 压缩文件 2. 编译到内核
这里我使用的是CPIO压缩文件的方式
-
创建文件夹
$ mkdir -p kernel/firmware/acpi
-
拷贝dsdt.aml 到
$ cp dsdt.aml kernel/firmware/acpi
-
生成cpio
find kernel | cpio -H newc --create > acpi_s3_override
-
将cpio文件拷贝到/boot目录
# cp acpi_s3_override /boot
-
设置默认睡眠类型为s3(deep)
打开
/etc/default/grub
,然后添加mem_sleep_default=deep
到GRUB_CMDLINE_LINUX_DEFAULT
中,接着运行sudo update-grub
例如:
GRUB_CMDLINE_LINUX_DEFAULT="apparmor=1 security=apparmor mem_sleep_default=deep udev.log_priority=3 acpi_backlight=native"
-
设置grub使用acpi_s3_override
打开
/etc/default/grub
,然后添加acpi_s3_override
到GRUB_EARLY_INITRD_LINUX_CUSTOM
中,接着运行sudo update-grub
例如:
GRUB_EARLY_INITRD_LINUX_CUSTOM="acpi_s3_override"
-
验证
$ cat /sys/power/mem_sleep
s2idle [deep] #说明现在已经是s3模式了