บังคับให้จำศีลโดยใช้ไฮเบอร์เนตแทนการไฮเบอร์เนต


15

ฉันใช้ 18.04 และพยายามใช้ระบบไฮเบอร์เนตแทนการไฮเบอร์เนตเมื่อฝาแล็ปท็อปของฉันปิด

ฉันมีพาร์ติชั่น swap ขนาด 20GB บน RAM ขนาด 16GB, พื้นที่เหลือเฟือ

เมื่อฉันใช้ pm-hibernate ฉันได้รับข้อผิดพลาด apci ขนาดเล็กที่ปรากฏขึ้นอย่างรวดเร็วเมื่อทั้งจำศีลและการเรียกคืนที่ฉันไม่สามารถอ่านได้ ในขณะที่ไฮเบอร์เนตทำงานในลักษณะที่ดูเหมือนจะถ่ายโอนข้อมูลไปยังดิสก์และเรียกคืนจากดิสก์ดูเหมือนว่าจะเป็นสถานะสลีปซึ่งใช้แบตเตอรี่ในอัตราปกติแทนที่จะปิดตัวลงอย่างสมบูรณ์และหยุดการใช้แบตเตอรี่

อย่างไรก็ตามเมื่อฉันใช้ Hibernate ที่ติดตั้งโดย:

sudo apt-get install hibernate

และเรียกใช้:

sudo hibernate

และคืนค่าจากนั้นฉันสังเกตเห็นว่าเครื่องของฉันทำในความเป็นจริงปิด --- ไฟ LED หยุดสั่น ฯลฯ - และการใช้งานแบตเตอรี่จะเป็นศูนย์ นี่คือพฤติกรรมที่ฉันต้องการจะดูเมื่อฝาปิดของฉันไม่ใช่พฤติกรรมการนอนหลับที่ใช้แบตเตอรี่ราวกับว่าฉันกำลังใช้งานคอมพิวเตอร์อยู่

ฉันได้ทำตามคำแนะนำเหล่านี้:

การแก้ไข

/etc/systemd/logind.conf

ที่จะรวม:

#HandleLidSwitch=suspend
HandlelidSwitch=hibernate

และเพิ่มการเปลี่ยนพาร์ติชัน swap ใน:

/etc/default/grub

หากต้องการรวมลิงก์ประวัติย่อ = ที่ถูกต้องและร้องขอ s2disk โดยเฉพาะกับ:

sudo cat /etc/pm/config.d/00sleep_module
SLEEP_MODULE="swsusp"

ฉันได้อ่าน askubuntus ที่เกี่ยวข้องดังต่อไปนี้แล้ว:

ฉันได้อ่านลิงก์เหล่านี้บนฟอรัม Lenovo และ Arch แล้ว:

ฉันจะแน่ใจได้อย่างไรว่าการไฮเบอร์เนตที่เรียกโดยการปิดฝาเป็นไฮเบอร์เนตไม่ใช่การไฮเบอร์เนต

ปรับปรุง

นี่ยังคงเป็นปัญหาและยังทำให้ Carbon X1 รุ่นที่ 6 ไร้ประโยชน์โดยพื้นฐานกับอูบุนตู โซลูชันใด ๆ ที่สามารถแก้ไขปัญหานี้และอาจเพิ่มพรอมต์การลงชื่อเข้าใช้เพิ่มเติมอาจเกือบดีเท่ากับเครื่อง Windows จาก 4 ปีที่แล้ว ... ;)


@ Mittenchops ฉันสามารถแก้ปัญหานี้ให้ฉันได้โปรดดูที่askubuntu.com/questions/1028947/…
Christopher Will

1
คุณช่วยเพิ่มข้อมูลบันทึกจากรอบการจำศีลเต็มรูปแบบในคำถามของคุณได้ไหม? มันควรจะเป็น/var/log/pm-suspend.logมา ขอบคุณ
David Foerster

@Mittenchops ไม่แน่ใจ แต่อาจเป็นปัญหาของฉันที่เกี่ยวข้องกับคุณ ฉันยังเป็นฮาร์ดแวร์ของเลอโนโว
ViBE

1
ฉันไม่ได้ใช้จำศีล แต่คุณอาจจะลองเปลี่ยนชื่อไป/usr/sbin/pm-hibernate /usr/sbin/pm-hibernate.OLDจากนั้นสร้าง/usr/sbin/pm-hibernatebash scxript ซึ่งมีhibernateคำสั่ง ใช้type -a hibernateเพื่อค้นหาพา ธ ที่แน่นอนสำหรับคำสั่ง ไม่มีอยู่ในระบบของฉันเพราะฉันยังไม่ได้ติดตั้ง
WinEunuuchs2Unix

ฉันได้อัปเดตคำตอบของฉันด้วยสคริปต์ตัวตัดคำเสนอเมื่อวันที่ 14/2018
WinEunuuchs2Unix

คำตอบ:


1

ฉันก็เกลียดที่จะต้องผ่าน URL ดังนั้นฉันจะคัดลอกและวางข้อมูลและแนบหน้าเว็บไปที่ด้านล่าง ฉันไม่เห็นสิ่งนี้ในลิงก์ของคุณ

ในขณะที่อ่านสิ่งนี้ฉันสังเกตเห็นว่าการจำศีลอาจไม่ทำงานหากคุณฟอร์แมตด้วยระบบไฟล์ btrfs? ดังนั้นโหมดไฮเบอร์เนตจะเปิดใช้งานอย่างถาวรใน Ubuntu 16.04 อย่างไร

ในการทำให้กระบวนการไฮเบอร์เนตของ Ubuntu เป็นไปอย่างถาวรคุณต้องสร้างไฟล์ใหม่โดยใช้โปรแกรมแก้ไขข้อความในบรรทัดคำสั่ง:

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

ระบบต้องการสิทธิ์รูทเพื่อเปิดใช้งานตัวเลือกไฮเบอร์เนตดังนั้นควรเพิ่มคำสั่ง sudo คุณสามารถใช้โปรแกรมแก้ไขข้อความอื่น ๆ เช่น vi, gedit, emacs ฯลฯ

ตอนนี้คัดลอกและวางข้อความต่อไปนี้ไปยังไฟล์ (ใช้เมาส์แป้นพิมพ์ลัดจะไม่ทำงาน):

[Re-enable hibernate by default in upower]
Identity=unix-user:*
Action=org.freedesktop.upower.hibernate
ResultActive=yes

[Re-enable hibernate by default in logind]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.handle-hibernate-key;org.freedesktop.login1;org.freedesktop.login1.hibernate-multiple-sessions;org.freedesktop.login1.hibernate-ignore-inhibit
ResultActive=yes

กดCTRL+ Oเพื่อบันทึกและCTRL+ Xเพื่อออกจากโปรแกรมแก้ไขนาโน

ตอนนี้ออกจากระบบของคุณแล้วเข้าสู่ระบบอีกครั้ง ตอนนี้คุณจะเห็นตัวเลือกไฮเบอร์เนตพร้อมกับตัวเลือกปิดเครื่องและหยุดชั่วคราว

ลิงค์เพื่อความสะดวกของคุณคือ: https://fossbytes.com/enable-disable-hibernate-option-ubuntu-power-menu/


2
สิ่งนี้ดูเหมือนว่าจะไม่ทำงานใน 18.04
Mittenchops

1

สองตัวเลือก

ตัวเลือกแรก (รายการที่สอง) คือการตรวจสอบjournalctlข้อผิดพลาดที่เป็นไปได้ที่เกี่ยวข้องกับการไฮเบอร์เนต หากตัวเลือกแรกไม่ให้ผลลัพธ์ผลลัพธ์ตัวเลือกที่สองคือการสร้างสคริปต์ตัวตัดที่แทนที่pm-hibernateด้วย `Hibernate

สร้างสคริปต์ Wrapper

การสร้างสคริปต์เสื้อคลุมช่วยที่จะมาแทนที่hibernatepm-hibernate

ค้นหาคำสั่งไดเรกทอรีอยู่ใน

ก่อนที่จะสร้างสคริปต์ตัวตัดคำคุณจำเป็นต้องรู้ว่าไดเรกทอรีใดอยู่hibernateและpm-hibernateคำสั่งนั้นอยู่ ใช้สองคำสั่งนี้:

$ locate bin/hibernate
/mnt/c/Program Files (x86)/CyberPower PowerPanel Business Edition/bin/hibernate.dll

$ locate bin/pm-hibernate
/mnt/clone/usr/sbin/pm-hibernate
/mnt/old/usr/sbin/pm-hibernate
/usr/sbin/pm-hibernate

/usr/sbin/pm-hibernateสคริปต์เสื้อคลุมคุณต้องการสร้างจะเป็น ฉันไม่ได้hibernateติดตั้งแพ็คเกจดังนั้นการค้นหาครั้งแรกจะพบยูทิลิตี้ของ Windows เท่านั้น ตามรายชื่อไฟล์แพ็คเกจควรเปิดเผย/usr/sbin/hibernateพร้อมกับไฟล์อื่น ๆ สองสามไฟล์

สำรองไฟล์ต้นฉบับ

ก่อนอื่นเราต้องการสร้างสำเนาสำรองออนไลน์ของไฟล์ต้นฉบับ:

sudo cp -a /usr/sbin/pm-hibernate /usr/sbin/pm-hibernate.bak

ถัดไปลบไฟล์ต้นฉบับ:

sudo rm -f /usr/sbin/pm-hibernate

สร้างสคริปต์ wrapper

หมายเหตุ:แทนสคริปต์เสื้อคลุมหลายคนพบว่ามันง่ายที่จะสร้างการเชื่อมโยงสัญลักษณ์สำหรับpm-hibernateการhibernate: วิธีการสร้างอ่อนหรือการเชื่อมโยงสัญลักษณ์?

ฉันชอบที่จะใช้geditสำหรับการแก้ไข แต่คุณสามารถแทนที่ด้วยnanoหรือvimหรือสิ่งที่คุณต้องการแก้ไข:

sudo -H gedit /usr/sbin/pm-hibernate

ไฟล์ว่างจะปรากฏขึ้น วางในบรรทัดต่อไปนี้

#!/bin/bash
# Wrapper script to replace pm-hibernate with hibernate package
/usr/sbin/hibernate "$@"

แปลงสคริปต์ wrapper เป็น executable

ในขณะนี้สคริปต์แรปเปอร์เป็นไฟล์ปกติ เราจำเป็นต้องแปลงเป็นวัตถุที่ปฏิบัติการได้:

sudo chmod a+x /usr/sbin/pm-hibernate

ตอนนี้เรามีสคริปต์ตัวตัดคำปฏิบัติการเพื่อให้ทุกครั้งpm-hibernateถูกเรียกhibernateใช้แทน ตามที่กล่าวไว้ด้านบนคุณควรตรวจทานjournalctlก่อน (อธิบายต่อไป) ก่อนสร้างสคริปต์ตัวตัดคำ

ทบทวน journalctl

คุณสามารถgrepใช้ข้อความไฮเบอร์เนตjournalctlเพื่อแก้ไขปัญหาที่อาจเกิดขึ้นได้

ฉันไม่ได้ใช้ไฮเบอร์เนต แต่ใช้การระงับชั่วคราว คำสั่งต่อไปนี้ช่วยให้ฉันเห็นข้อความทั้งหมดที่เกี่ยวข้องsuspendซึ่งคุณจะแทนที่ด้วยhibernate:

$ journalctl -b | grep -i suspend
Oct 09 22:26:33 alien eyesome[21740]: Lid Open/Close: Wait 3 seconds to see if suspending
Oct 09 22:26:48 alien systemd[1]: Starting TLP suspend/resume...
Oct 09 22:26:48 alien systemd[1]: Started TLP suspend/resume.
Oct 09 22:26:48 alien systemd[1]: Starting Suspend...
Oct 09 22:26:48 alien systemd-sleep[22938]: /lib/systemd/system-sleep/sound: Going to suspend...
Oct 09 22:26:48 alien eyesome[22952]: Wakeup: Going to suspend.  Creating: /tmp/eyesome-is-suspending
Oct 09 22:26:49 alien systemd-sleep[22938]: Suspending system...
Oct 10 04:26:38 alien kernel: PM: Suspending system (mem)
Oct 10 04:26:38 alien kernel: Suspending console(s) (use no_console_suspend to debug)
Oct 10 04:26:38 alien kernel: PM: suspend of devices complete after 1142.044 msecs
Oct 10 04:26:38 alien kernel: PM: late suspend of devices complete after 19.766 msecs
Oct 10 04:26:38 alien kernel: PM: noirq suspend of devices complete after 61.505 msecs
Oct 10 04:26:38 alien kernel: Suspended for 21583.011 seconds
Oct 10 04:26:38 alien eyesome[23137]: Lid Open/Close: Wait 3 seconds to see if suspending
Oct 10 04:26:38 alien systemd-sleep[22938]: /lib/systemd/system-sleep/sound: Waking up from suspend...
Oct 10 04:26:38 alien eyesome[23168]: Wakeup: Called from suspend.
Oct 10 04:26:41 alien systemd[1]: Started Suspend.
Oct 10 04:26:41 alien systemd[1]: Stopping TLP suspend/resume...
Oct 10 04:26:41 alien systemd[1]: Reached target Suspend.
Oct 10 04:26:41 alien systemd[1]: suspend.target: Unit is bound to inactive unit systemd-suspend.service. Stopping, too.
Oct 10 04:26:41 alien systemd[1]: Stopped target Suspend.
Oct 10 04:26:42 alien systemd[1]: Stopped TLP suspend/resume.
Oct 10 04:26:52 alien eyesome[24459]: Daemon: Removed file: /tmp/eyesome-is-suspending
Oct 10 05:47:09 alien eyesome[12434]: Lid Open/Close: Wait 3 seconds to see if suspending
Oct 10 05:51:43 alien systemd[1]: Starting TLP suspend/resume...
Oct 10 05:51:44 alien systemd[1]: Started TLP suspend/resume.
Oct 10 05:51:44 alien systemd[1]: Starting Suspend...
Oct 10 05:51:44 alien systemd-sleep[28353]: /lib/systemd/system-sleep/sound: Going to suspend...
Oct 10 05:51:44 alien eyesome[28367]: Wakeup: Suspending.  Creating /tmp/eyesome-is-suspending
Oct 10 05:51:45 alien systemd-sleep[28353]: Suspending system...
Oct 10 16:30:59 alien kernel: PM: Suspending system (mem)
Oct 10 16:30:59 alien kernel: Suspending console(s) (use no_console_suspend to debug)
Oct 10 16:30:59 alien kernel: PM: suspend of devices complete after 623.519 msecs
Oct 10 16:30:59 alien kernel: PM: late suspend of devices complete after 19.654 msecs
Oct 10 16:30:59 alien kernel: PM: noirq suspend of devices complete after 61.549 msecs
Oct 10 16:30:59 alien kernel: Suspended for 38348.943 seconds
Oct 10 16:30:59 alien eyesome[28563]: Lid Open/Close: Wait 3 seconds to see if suspending
Oct 10 16:30:59 alien systemd-sleep[28353]: /lib/systemd/system-sleep/sound: Waking up from suspend...
Oct 10 16:30:59 alien eyesome[28599]: Wakeup: Called from suspend.
Oct 10 16:31:02 alien systemd[1]: Started Suspend.
Oct 10 16:31:02 alien systemd[1]: Stopping TLP suspend/resume...
Oct 10 16:31:02 alien systemd[1]: Reached target Suspend.
Oct 10 16:31:02 alien systemd[1]: suspend.target: Unit is bound to inactive unit systemd-suspend.service. Stopping, too.
Oct 10 16:31:02 alien systemd[1]: Stopped target Suspend.
Oct 10 16:31:03 alien systemd[1]: Stopped TLP suspend/resume.
Oct 10 16:31:13 alien eyesome[30020]: Daemon: Removed file: /tmp/eyesome-is-suspending

วิธีการที่ไม่sudo -H /usr/sbin/pm-hibernateเปิดโปรแกรมแก้ไขหรือไม่ ฉันพยายามทำตามคำแนะนำไม่ต้องการตั้งสมมติฐาน
Stewart

1
@ เริ่มต้นดีจับ ควรอ่านsudo -H gedit /usr/sbin/pm-hibernateอย่างที่ฉันเพิ่งเปลี่ยน
WinEunuuchs2Unix

1
@Stewart คุณกำลังจำศีลอยู่กับฝาปิดปุ่มเปิดปิดหรือตัวเลือกเมนู?
WinEunuuchs2Unix

1
ในที่สุดก็แก้ไขมัน! ข้อเสนอแนะของคุณให้เบาะแสที่พอกับ google-fu ฉันก็เลยลงเอยที่unix.stackexchange.com/a/386837
Stewart

1
@Startart ดีใจที่ได้ยิน ขอบคุณสำหรับการชี้ให้เห็นคำตอบ Unix & Linux ฉันลงคะแนนมัน
WinEunuuchs2Unix
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.