Buộc ngủ đông bằng cách sử dụng ngủ đông thay vì pm-hibernate


15

Tôi đang chạy 18.04 và cố gắng để hệ thống của tôi sử dụng chế độ ngủ đông thay vì ngủ đông khi nắp máy tính xách tay của tôi đóng lại.

Tôi có phân vùng trao đổi 20 GB trên 16 GB RAM, vì vậy không gian rộng rãi.

Khi tôi sử dụng pm-hibernate, tôi gặp một lỗi apci nhỏ bật lên rất nhanh khi cả ngủ đông và khôi phục mà tôi không thể đọc được. Mặc dù chế độ ngủ đông hoạt động theo nghĩa là nó dường như đổ vào đĩa và khôi phục từ đĩa, nhưng dường như trạng thái ngủ ở chỗ nó sử dụng pin ở tốc độ bình thường, thay vì tắt hoàn toàn và ngừng sử dụng pin.

Tuy nhiên, khi tôi sử dụng chế độ ngủ đông được cài đặt bởi:

sudo apt-get install hibernate

Và chạy:

sudo hibernate

Và khôi phục lại từ đó, tôi nhận thấy máy của tôi thực sự tắt máy --- đèn LED ngừng đập, v.v ... và việc sử dụng pin giảm dần. Đây là hành vi tôi muốn thấy khi nắp của tôi đóng chứ không phải hành vi ngủ sử dụng pin như thể tôi đang sử dụng máy tính một cách chủ động.

Tôi đã làm theo các hướng dẫn sau:

sửa đổi

/etc/systemd/logind.conf

bao gồm:

#HandleLidSwitch=suspend
HandlelidSwitch=hibernate

Và thêm thay đổi phân vùng trao đổi của tôi trong:

/etc/default/grub

Để bao gồm chính xác sơ yếu lý lịch = liên kết và s2disk được yêu cầu cụ thể với:

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

Tôi đã đọc các câu hỏi liên quan sau đây:

Tôi cũng đã đọc các liên kết này trên diễn đàn Lenovo và Arch:

Làm thế nào tôi có thể chắc chắn rằng hibernate được gọi bằng nắp đóng là hibernate không phải pm-hibernate?

Cập nhật

Đây vẫn là một vấn đề và vẫn khiến cho thế hệ thứ 6 Carbon X1 trở nên vô dụng với ubfox. Bất kỳ giải pháp nào có thể khắc phục điều này và có thể thêm lời nhắc đăng nhập cũng có thể tốt như máy Windows từ 4 năm trước ...;)


@Mittenchops tôi có thể giải quyết vấn đề này đối với tôi, xin vui lòng có một cái nhìn tại askubuntu.com/questions/1028947/...
Christopher Will

1
Bạn có thể vui lòng thêm dữ liệu nhật ký từ chu trình ngủ đông đầy đủ vào câu hỏi của bạn không? Nó nên ở trong /var/log/pm-suspend.log. Cảm ơn.
David Foerster

@Mittenchops không chắc nhưng có lẽ vấn đề của tôi liên quan đến bạn. Của tôi cũng là một phần cứng của Lenovo.
ViBE

1
Tôi không sử dụng chế độ ngủ đông nhưng bạn có thể thử đổi tên /usr/sbin/pm-hibernatethành /usr/sbin/pm-hibernate.OLD. Sau đó tạo /usr/sbin/pm-hibernatebash scxript có chứa hibernatelệnh. Sử dụng type -a hibernateđể tìm đường dẫn chính xác cho lệnh. Nó không tồn tại trên hệ thống của tôi vì tôi chưa cài đặt nó.
WinEunuuchs2Unix

Tôi đã cập nhật câu trả lời của mình với tập lệnh bao bọc được đề xuất vào ngày 14 tháng 7 năm 2018.
WinEunuuchs2Unix

Câu trả lời:


1

Tôi rất ghét phải vượt qua một URL vì vậy tôi sẽ sao chép và dán thông tin và đính kèm trang web ở phía dưới. Tôi không thấy điều này trong liên kết của bạn.

Trong khi đọc điều này, tôi nhận thấy rằng ngủ đông có thể không hoạt động nếu bạn định dạng với hệ thống tệp btrfs? Vậy, chế độ ngủ đông được kích hoạt vĩnh viễn trong Ubuntu 16.04 như thế nào?

Để làm cho quá trình ngủ đông Ubuntu trở nên vĩnh viễn, bạn cần tạo một tệp mới bằng trình soạn thảo văn bản trên dòng lệnh:

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

Hệ thống yêu cầu quyền root để kích hoạt tùy chọn ngủ đông, do đó, cần thêm lệnh sudo. Bạn có thể sử dụng các trình soạn thảo văn bản khác như vi, gedit, emacs, v.v.

Bây giờ, sao chép và dán văn bản sau vào một tệp (sử dụng chuột; phím tắt không hoạt động):

[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

Nhấn CTRL+ Ođể lưu và CTRL+ Xđể thoát trình chỉnh sửa nano.

Bây giờ, đăng xuất khỏi hệ thống của bạn và sau đó đăng nhập lại. Bây giờ bạn sẽ thấy một tùy chọn ngủ đông, cùng với các tùy chọn Tắt và Tạm dừng.

Liên kết để thuận tiện cho bạn là: https://fossbytes.com/enable-disable-hibernate-option-ubfox-power-menu/


2
Điều này dường như không hoạt động trong 18.04
Găng tay

1

Hai lựa chọn

Tùy chọn đầu tiên (được liệt kê thứ hai) là xem xét journalctlcác thông báo lỗi có thể liên quan đến chế độ ngủ đông. Nếu tùy chọn đầu tiên không tạo ra kết quả, tùy chọn thứ hai là tạo tập lệnh bao bọc thay thế pm-hibernatebằng `hibernate.

Tạo tập lệnh Wrapper

Tạo một kịch bản lệnh bao bọc cho phép hibernatethay thế pm-hibernate.

Các lệnh tìm thư mục được đặt trong

Trước khi tạo tập lệnh bao bọc, bạn cần biết thư mục nào hibernatepm-hibernatecác lệnh nằm trong đó. Sử dụng hai lệnh sau:

$ 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

Kịch bản trình bao bọc bạn muốn tạo sẽ là /usr/sbin/pm-hibernate. Tôi chưa hibernatecài đặt gói để tìm kiếm đầu tiên chỉ tìm thấy tiện ích Windows. Theo danh sách tập tin gói , nó sẽ tiết lộ /usr/sbin/hibernatecùng với một vài tập tin khác.

Sao lưu tập tin gốc

Đầu tiên chúng tôi muốn tạo một bản sao lưu trực tuyến của tệp gốc:

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

Tiếp theo xóa tệp gốc:

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

Tạo tập lệnh bao bọc

Lưu ý: thay vì một wrapper kịch bản nhiều thấy nó dễ dàng hơn để tạo ra một liên kết tượng trưng cho pm-hibernateđến hibernate: Làm thế nào để tạo ra một phần mềm hoặc liên kết tượng trưng?

Tôi thích sử dụng geditđể chỉnh sửa nhưng bạn có thể thay thế nó bằng nanohoặc vimhoặc bất cứ trình soạn thảo bạn thích:

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

Một tập tin trống sẽ xuất hiện. Dán vào các dòng sau

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

Chuyển đổi tập lệnh bao bọc để thực thi

Hiện tại tập lệnh bao bọc là một tập tin thông thường. Chúng ta cần chuyển đổi nó thành một đối tượng thực thi:

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

Bây giờ chúng ta có một kịch bản trình bao bọc hoạt động để mỗi lần pm-hibernateđược gọi là hibernatechạy. Như đã đề cập ở trên cùng, bạn nên xem lại journalctltrước (mô tả tiếp theo) trước khi tạo tập lệnh bao bọc.

Ôn tập journalctl

Bạn có thể grepnhắn tin ngủ đông journalctlcho các vấn đề có thể xảy ra.

Tôi không sử dụng ngủ đông nhưng tôi sử dụng tạm ngưng. Lệnh sau cho phép tôi xem tất cả các tin nhắn liên quan đến suspendmà bạn sẽ thay thế bằng 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

Làm thế nào để sudo -H /usr/sbin/pm-hibernatemở một trình soạn thảo? Tôi đang cố gắng làm theo hướng dẫn, không muốn đưa ra giả định
Stewart

1
@Stewart Bắt tốt. Nó nên đọc sudo -H gedit /usr/sbin/pm-hibernatekhi tôi vừa thay đổi.
WinEunuuchs2Unix

1
@Stewart Bạn đang ngủ đông với tùy chọn nắp đóng, nút nguồn hoặc tùy chọn menu?
WinEunuuchs2Unix

1
Cuối cùng đã sửa nó! Đề xuất của bạn đã cho tôi đủ manh mối, rằng với một số google-fu, tôi đã kết thúc tại unix.stackexchange.com/a/386837
Stewart

1
@Stewart Vui mừng khi nghe. Cảm ơn đã chỉ ra câu trả lời Unix & Linux. Tôi đã bình chọn nó.
WinEunuuchs2Unix
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.