Ubuntu 18.04 không thể tiếp tục sau khi ngủ đông


17

Hibernate hoạt động chính xác khi tôi đang sử dụng Ubuntu 17.04. Sau khi nâng cấp lên 17.10, tôi không thể tiếp tục vì màn hình đen sau khi tiếp tục ( lỗi này ).

Sau khi nâng cấp lên 18.04 nếu tôi cố gắng khởi động máy tính của mình sau khi ngủ đông, nó khởi động như thể không có chế độ ngủ đông.


Tôi có cùng một vấn đề với 18.04, tôi nghĩ rằng giải pháp phải nằm trong việc chỉ định đúng phân vùng cho sơ yếu lý lịch nhưng vẫn không thể tìm ra cách để làm điều này. Tất cả tôi tìm thấy tôi Google không làm việc cho tôi.
user2819650

Phân vùng được đặt chính xác trong /etc/initramfs-tools/conf.d/resume để trao đổi của tôi. Tôi nghi ngờ rằng chế độ ngủ đông không được thực hiện chính xác hoặc tiếp tục trong khi khởi động không hoạt động. Nhưng tôi không biết làm thế nào để gỡ lỗi thêm. Syslog và dmesg không đưa ra bất kỳ manh mối nào là vấn đề.
Kamil

Câu trả lời:


29

Có những thay đổi được thực hiện đối với cài đặt mặc định khi so sánh với LTS trước đó (16.04). Trong trường hợp của tôi, chế độ ngủ đông không hoạt động cho đến khi tôi thực hiện một số bước, trong số đó đã tăng kích thước tệp hoán đổi, bật nó lên, đảm bảo các chính sách cho phép, v.v.

Đây có thể dễ dàng là câu trả lời dài nhất của tôi trên toàn bộ StackExchange vì vậy tôi đã cố gắng làm tiêu đề mô tả .

Giày cao cổ như không có ngủ đông

Sẽ là khôn ngoan để xem nhật ký của bạn (dmesg có thể giúp đỡ) và xem nếu có bất cứ điều gì ở đó. Có nhiều lý do khi bạn bảo hệ thống ngủ đông, nhưng thực tế nó sẽ không hoạt động, hoặc thay vào đó, nó sẽ tạm ngưng RAM (ngủ).

Hãy nhìn vào kern.logsyslog tìm kiếm bất kỳ tin nhắn liên quan đến ngủ đông cũng sẽ không bị tổn thương. Các phần bắt đầu với "vấn đề" có thể giúp bạn với các vấn đề cụ thể.

Hoán đổi tập tin hoặc phân vùng trao đổi

Một trong những thay đổi quan trọng là bây giờ bạn KHÔNG CÓ phân vùng trao đổi, nhưng bạn có TỆP trao đổi.

Tệp hoán đổi có thể không hoạt động đối với sự pha trộn giữa phần cứng / trình điều khiển / HĐH và chế độ ngủ đông.

Ngủ đông đã tắt

Chính sách cũng có thể tắt hoặc không cho phép ngủ đông.

Biệt ngữ

Tạm dừng RAM - RAM giữ dữ liệu, máy tính chuyển sang chế độ ngủ nhanh hơn, sử dụng nhiều năng lượng hơn khi bị treo, thức dậy nhanh hơn. Một số người gọi đây là giấc ngủ.

Đình chỉ vào đĩa - còn gọi là ngủ đông. RAM được lưu để trao đổi (phân vùng hoặc tệp), máy tính chuyển sang chế độ ngủ chậm hơn, sử dụng ít năng lượng hơn trong khi ngủ đông, thức dậy chậm hơn.

Đình chỉ RAM trong Linux của Rafael J. Wysocki và A. Leonard Brown

Điều kiện tiên quyết - bạn có đủ không gian?

Để ngủ đông, bạn cần (đơn giản hóa tại đây) lưu toàn bộ RAM vào ổ cứng. Vì vậy, bạn cần dành đủ không gian để làm như vậy. Nếu bạn không, điều này sẽ thất bại và bạn sẽ không ngủ đông.

  1. free -m sẽ cho bạn biết bạn có bao nhiêu bộ nhớ, sử dụng và bao nhiêu trong trao đổi của bạn.
  2. df -h sẽ cho bạn biết bạn có bao nhiêu dung lượng đĩa trên mỗi điểm gắn kết và bao nhiêu dung lượng được sử dụng, miễn phí, v.v ... Điều này rất quan trọng vì sau này bạn có thể muốn xác định vị trí tệp hoán đổi của mình hoặc phân vùng nào sẽ "cắt" đủ không gian cho trao đổi của bạn.
  3. cat fstabsẽ cung cấp cho bạn thông tin nếu bạn có một phân vùng trao đổi hoặc tập tin. Theo Ubuntu Hibernation FAQ swapfilecó thể không phải lúc nào cũng hoạt động với một số kết hợp phần cứng / trình điều khiển.

Nếu bạn không có đủ dung lượng, hãy theo dõi Câu hỏi thường gặp về trao đổi Ubuntu . Nó cho bạn biết làm thế nào để tăng tập tin hoán đổi, thêm tập tin khác, kiểm tra xem nó đã được sử dụng chưa, v.v ... Với các lệnh và giải thích. Tài nguyên thực sự tốt đẹp.

Tôi không có đủ dung lượng để lắp RAM!

Tài liệu hạt nhân nói:

/ sys / power / image_size kiểm soát kích thước của hình ảnh được tạo bởi cơ chế đình chỉ đĩa. Nó có thể được viết một chuỗi đại diện cho một số nguyên không âm sẽ được sử dụng làm giới hạn trên của kích thước hình ảnh, tính bằng byte. Cơ chế đình chỉ đĩa sẽ làm hết sức mình để đảm bảo kích thước hình ảnh sẽ không vượt quá con số đó. Tuy nhiên, nếu điều này hóa ra là không thể, nó sẽ cố gắng tạm dừng bằng cách sử dụng hình ảnh nhỏ nhất có thể. Cụ thể, nếu "0" được ghi vào tệp này, hình ảnh treo sẽ càng nhỏ càng tốt. Đọc từ tệp này sẽ hiển thị giới hạn kích thước hình ảnh hiện tại, được đặt thành 2/5 RAM có sẵn theo mặc định.

Vì vậy, hãy thử điều chỉnh kích thước hình ảnh của bạn. Làm thế nào - hỏi một câu hỏi khác xin vui lòng.

Điều kiện tiên quyết - kernel của bạn có hỗ trợ đình chỉ đĩa không?

Kernel hỗ trợ bất cứ điều gì được liệt kê trong /sys/power/state, vì vậy:

cat /sys/power/state

Cho phép (theo tôi biết) entry bản có bao gồm: mem, standby, freeze, disk. Giải trình:

  • mem- có một số ý nghĩa, nghĩa chính xác trong hệ thống của bạn sẽ tìm hiểu thông qua cat /sys/power/mem_sleep. Tôi có:s2idle [deep]
  • standby - Tạm dừng bật nguồn (nếu được hỗ trợ)
  • freeze - Tạm dừng để nhàn rỗi (STI)
  • disk- Đình chỉ vào đĩa (STD), ngủ đông . Điều này - bạn muốn.

Sau đó chúng ta cần kiểm tra cat /sys/power/disk. Nếu bạn có ở disabledđó, hãy lặn trong BIOS của bạn để tìm Secure Boot - đó là ý tưởng duy nhất tôi có thể cung cấp và điều duy nhất tôi biết có thể can thiệp và tắt chế độ ngủ đông. Mặc dù tôi chỉ biết về SecureBoot, nhưng có thể có các can thiệp khác, vì vậy hãy xem BIOS của bạn là một ý tưởng hay ngay cả khi bạn không có "khởi động an toàn" nào.

Đọc ở đây:

  1. Tài liệu hạt nhân
  2. Debian Wiki về chế độ ngủ đông

TBH, ngay cả khi kernel của bạn KHÔNG hỗ trợ ngủ đông, bạn có thể thử nó theo cách khác, cuộn xuống phầnInterfaces .

Đọc này - cảnh báo và vấn đề - không có BTRFS

Không theo thứ tự đặc biệt:

  1. Không phải tất cả các chipset sẽ hoạt động (không có nguồn mà tôi có thể trích dẫn ở đây vì vậy hãy nói rằng đây là tin đồn)
  2. VAIO có vấn đề, được cho là có cờ để chống lại chúng
  3. SecureBoot thường được coi là can thiệp hoặc tắt chế độ ngủ đông
  4. Wake-on-LAN tiêu thụ năng lượng ngay cả khi ngủ đông
  5. Số lượng mô-đun (đặc biệt là đồ họa) có thể được khởi tạo TRƯỚC KHI hệ thống của bạn tiếp tục chính xác từ chế độ ngủ đông - đây thường là nguyên nhân khiến màn hình đen khi hoạt động trở lại . Hãy xem ArchLinux Wiki để biết các mẹo về cách gỡ lỗi. Tôi cũng đề xuất Câu hỏi thường gặp về Ubuntu về các vấn đề ngủ đông. Duyệt qua các lỗi Launchpad cũng có thể mang lại kết quả. IIRC, có một tham số kernel chỉ định độ trễ trong vài giây trước khi tiếp tục.
  6. Cho phép quy trình ngủ đông khác nhau đối với các phiên bản Polkit khác nhau

Không sử dụng BTRFS và ngủ đông: dữ liệu bị hỏng sẽ là kết quả.

Tôi muốn ngủ đông - phân vùng trao đổi

Có trường hợp, khi mọi người từ bỏ tập tin trao đổi và quay trở lại phân vùng trao đổi. Rốt cuộc, nó đã làm việc trên LTS trước đó. Tôi đã không thử, vì vậy sẽ không cung cấp con trỏ.

Tôi muốn ngủ đông - với tập tin trao đổi

  1. Hãy chắc chắn rằng bạn có đủ không gian ở đó. Câu hỏi thường gặp về hoán đổi Ubuntu cho bạn biết bạn cần bao nhiêu, các lệnh từ phía trên cũng làm như vậy. Nếu bạn cần thêm thông tin ở đây, xin vui lòng hỏi một câu hỏi khác, vì đây là một chủ đề dài.
  2. Tăng tệp hoán đổi hoặc tạo một tệp mới với kích thước đủ tốt (ưu tiên, tôi đồng ý với @muru ) và thay đổi tệp/etc/fstab mới. Khởi động lại để xem thay đổi được thực hiện tốt (lưu trữ sao lưu fstabđể bạn có thể dễ dàng hoàn nguyên chỉ trong trường hợp.
  3. Chỉ hạt nhân của bạn vào đây với các thông số phù hợp, để nó biết tiếp tục từ đâu.
  4. Cập nhật / cấu hình lại bộ tải khởi động của bạn và khởi động lại.

Thông số hạt nhân? Đáng sợ!

Đọc và quyết định cẩn thận nếu bạn muốn làm điều đó, nhưng đó chỉ là một cách để cấu hình kernel của bạn. Có thể dễ dàng hơn để ngủ đông thông qua systemduswsusp(xem Giao diện , bên dưới). Có thể, bạn - như tôi - cuối cùng sẽ quyết định đình chỉ RAM là đủ và bạn không muốn có 32GB trên một tệp hoán đổi (chẳng hạn như rất tuyệt vời cho những người có một ổ SSD trong máy tính xách tay của họ). Nhưng!

  1. ngủ đông để hoán đổi tệp yêu cầu resume=phải biết phân vùng tệp hoán đổi của bạn được bật và resume_offset=để biết nơi nào trong tệp hoán đổi để bắt đầu tiếp tục.
  2. ngủ đông để phân vùng yêu cầu resume=trỏ đến phân vùng trao đổi.
  3. giải quyết các vấn đề màn hình đen cũng có thể yêu cầu resumedelay=.

Tài liệu hạt nhân về việc trì hoãn tiếp tục từ Hibernation:

resumedelay = [HIBERNATION] Trì hoãn (tính bằng giây) để tạm dừng trước khi cố đọc các tệp tiếp tục

Các tham số cần thiết cho tệp hoán đổi và ngủ đông :

tiếp tục = [SWSUSP]

      Specify the partition device for software suspend

      Format:

      {/dev/<dev> | PARTUUID=<uuid> | <int>:<int> | <hex>}

sơ yếu lý lịch = [SWSUSP]

      Specify the offset from the beginning of the partition
      given by "resume=" at which the swap header is located,
      in <PAGE_SIZE> units (needed only for swap files).

      See Documentation/power/swsusp-and-swap-files.txt

Đối với việc resume=chọn phong cách giống như rootyếu tố có trong fstab. Vì vậy, /dev/sdaXhoặc UUIDhoặc LVM. Để ngủ đông vào tệp - cung cấp phân vùng nơi tệp của bạn có thể được tìm thấy.

Đọc hiểu:

  1. https://www.kernel.org/doc/Documentation/admin-guide/kernel-parametereter
  2. https://wiki.archlinux.org/index.php/Kernel_parameter

Vấn đề - không tìm thấy tiêu đề trao đổi

Trao đổi tập tin cần phải được định dạng đúng. Nếu nhật ký của bạn cho bạn biết điều này, bạn đang cố gắng ngủ đông vào một tệp hoặc tham số sơ yếu lý lịch của bạn không đúng.

Chuyển sang phân vùng hoặc sửa tệp hoặc thay đổi giao diện được sử dụng để ngủ đông.

Xem: /unix/43508/debian-hibernate-probols-pm-swap-header-not-found

mkswapđược sử dụng để định dạng tập tin, đọc thêm về nó ở đây

Vấn đề! Ngủ đông không được phép!

Kiểm tra: pm-hibernate(nếu gói pm-utils được cài đặt) hoặc systemctl hibernatecho bạn biết bạn không được phép. Cài đặt mặc định trong Ubuntu kể từ IIRC 12.04.

(Các) Giải pháp: phụ thuộc vào phiên bản Polkit, phiên bản Ubuntu và hương vị của bạn ... Xem câu hỏi này . Ngoài ra, ArchWiki trên Polkit có thể giúp đỡ.

Đối với Mint, xem: https://forums.linuxmint.com/viewtopic.php?t=259912

Vấn đề! Ngủ đông bị vô hiệu hóa bởi một cái gì đó trong BIOS!

Kiểm tra: cat /sys/power/diskdisabled. Nhật ký hiển thị "Không thể hệ thống ngủ đông thông qua logind: Động từ ngủ không được hỗ trợ".

Giải pháp: tìm kiếm BIOS của bạn và tìm ra vấn đề. Tắt nó đi.

Giải pháp 2: thử giao diện ngủ đông khác.

Xem: Làm thế nào để kích hoạt chế độ ngủ đông trong 16.04.1? (hệ thống) .

Giao diện

  1. swsusp - giao diện kernel cấp thấp. Xem Điều kiện tiên quyết - kernel cho tập tin nào. Ghi vào tệp trực tiếp có thể gây ra đình chỉ (vào RAM, vào đĩa và kết hợp). Theo SwapFAQ có vấn đề với ngủ đông để tập tin.
  2. uswsusp - ArchWikiDebian Wikimột câu hỏi hay về AskUbfox với cách viết để sử dụng nó .
  3. systemd - ArchWiki trên đó
  4. pm-utils - AFAIK là tập hợp các tập lệnh gốc từ Debian - Tôi sẽ vui mừng chào đón thêm thông tin cho mình.

Đóng nhận xét

Đối với tôi, đó là vấn đề gần hai ngày làm việc để biên dịch nó. Hy vọng rằng điều này sẽ giúp bạn (và những người khác) giải quyết vấn đề của bạn nhanh hơn. Vẫn còn những điểm tôi đã bỏ lỡ nhưng đó là 2 giờ sáng và tôi không cảm thấy muốn viết nhiều hơn bây giờ. Tôi tất nhiên mở cho con trỏ của bất cứ ai để làm cho điều này tốt hơn, vì vậy hãy bình luận. Tôi sẽ trả lời một khi tôi ngủ, làm việc, vv :-)

Tôi không chắc chắn ngủ đông vào đĩa là tuyệt vời. Tôi đã đi với giấc ngủ cuối cùng. Nhưng đối với tôi, vấn đề là có một tệp 32 GB để có thể ngủ đông, vì tôi thường tránh trao đổi. Tệp hoán đổi ban đầu của tôi là 2GB và hầu như trống rỗng. YMMV. Tuy nhiên, chúc may mắn! Và bắt đầu với các bản ghi!


Câu trả lời chính xác! Nhưng điều cuối cùng đã giải quyết trường hợp của tôi là Câu hỏi thường gặp về hoán đổi được liên kết và nó bảo tôi thêm "sơ yếu lý lịch = UUID" vào một biến trong tệp cấu hình grub của tôi và / hoặc sth tương tự với các công cụ initramfs. Vì một số lý do, tôi đã có một UUID sai, đó có lẽ là vấn đề. Vì vậy, tôi đề nghị một người có vấn đề tương tự trước tiên hãy kiểm tra những gì được viết trong Câu hỏi thường gặp trong phần "Làm cách nào để thêm hoặc sửa đổi phân vùng trao đổi?", Và điểm thứ ba về chế độ ngủ đông ở đó.
RimaNari

1
"đĩa - Đình chỉ vào đĩa (STD), ngủ đông. Cái này - bạn muốn." Tôi có phải là người duy nhất bị đá ra khỏi đây không? Cảm ơn nhiều.
spakmad

câu trả lời chính xác! một lưu ý nhỏ: trên một trong các máy của tôi tiếp tục hoạt động sau khi ngủ đông chỉ hoạt động sau lần thử khởi động thứ hai (không có gì được hiển thị trên màn hình trong lần thử đầu tiên). tôi có thể sửa lỗi cài đặt HWE-stack: $ sudo apt install linux-generic-hwe-18.04(đối với một số phần cứng thậm chí linux-generic-hwe-18.04-edgecó thể đáng để thử).
nhân vật chính hiro

1
Ah. Tôi sẽ không ngủ đông! Tôi có 512Gb RAM. Ôi chà ... (Tôi có đủ dung lượng trên ổ cứng 10Tb của mình, nhưng sẽ mất hàng giờ để khởi động lại!)
Alexis Wilke

9

Sử dụng UUID của phân vùng trao đổi thay vì điểm gắn của nó trong tham số RESUME resume=UUID=<#>ở cả hai /etc/default/grub/etc/initramfs-tools/conf.d/resume

Tạo một mục nhập cho phân vùng trao đổi /etc/fstab mà không có điểm gắn kết như thế này

# Entry for Swap : 
UUID=# none  swap    sw              0       0

Trong /etc/default/grubtôi đã sử dụng một mục riêng để nối lại chế độ ngủ đông

# FOR HIBERNATION 
GRUB_CMDLINE_LINUX="resume=UUID=..."

Tạo bộ chính sách trong chính quyền địa phương (pkla)

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

Và chèn vào đó

[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

[Enable hibernate to be run via cron]
Identity=unix-user:*
Action=org.freedesktop.login1.hibernate;org.freedesktop.login1.hibernate-multiple-sessions
ResultAny=yes

Sau đó cập nhật initramfs và GRUB

sudo update-initramfs -u -k all
sudo update-grub

Khởi động lại, mở một số ứng dụng và sử dụng systemctl hibernate(không có sudo) để xem nó có hoạt động không


hoạt động tốt cảm ơn rất nhiều.
Yossarian42

cảm ơn người đàn ông, bạn đã cứu tôi
Vahe Shadunts

1

Đối với tôi, nó luôn hoạt động cho đến ngày 18.04 và sau ngày 18.04, tôi đã kích hoạt nó như trong nhiều bài viết, nhưng nó đột nhiên ngừng hoạt động vào ngày hôm qua (hoạt động tốt trong 4-5 tháng),

và đây là ... MỘT điều đã khiến nó hoạt động trở lại ...

Nói với grub2 nơi phân vùng trao đổi là:

Trước tiên hãy tìm hiểu phân vùng đó bằng cách sử dụng lệnh dưới đây:

cat /etc/fstab

Của tôi là trên sda7 như là đầu ra sau đây:

trao đổi được bật / dev / sda7 trong khi cài đặt

Sau đó, thêm vào Grub2 phần bổ sung sau vào dòng sau, sử dụng lệnh sau:

sudo gedit / etc / default / grub

GRUB_CMDLINE_LINUX_DEFAULT = "intel_pstate = tắt sơ yếu lý lịch = / dev / sda7"

Phần quan trọng là resume=/dev/sda7

/ dev / sda7 trong trường hợp của tôi

Sau đó, Cập nhật Grub bằng lệnh sau và sau đó, nó bắt đầu hoạt động hoàn hảo trở lại:

sudo update-grub

Sau nhiều lần thử, đây là điều duy nhất có hiệu quả, có lẽ đó chỉ là do một bản cập nhật cho kernel đã làm hỏng nó, không bao giờ nó hoạt động ít hơn.


0

hy vọng điều này sẽ giúp được ai đó, nhưng tôi đang chạy popos / ub Ubuntu 19.04. Trong thiết lập của tôi, tôi có thể ngủ đông bằng s2disk hoặc pm-hibernate, nhưng tiếp tục không thành công. Để khắc phục điều này, vì hệ thống của tôi được khởi động bằng UEFI thay vì grub. Tôi chỉ cần cài đặt lại bộ tải khởi động. Để kiểm tra xem bạn có đang chạy UEFI hay không, hãy sử dụng như sau:

[ -d /sys/firmware/efi ] && echo "Installed in UEFI mode" || echo "Installed in Legacy mode"

nếu ở chế độ UEFI, thì tôi đã làm theo hướng dẫn này để cài đặt lại bộ nạp khởi động, nó sẽ thay đổi nếu bạn đang sử dụng đĩa nvme hoặc đĩa sata: https://support.system76.com/articles/bootloader/

đảm bảo rằng trong các tùy chọn kernalboot của bạn, bạn chỉ định phân vùng hoặc UUID về nơi tiếp tục từ đó, ví dụ như một cái gì đó như thế này:

tiếp tục = UUID = ed8347ed-2eb4-40bc-bc77-cc53b987ed88

Bạn có thể thêm phần này bằng cách: 1) sudo kernel-stub -a "CV = UUID = ..." 2) chỉnh sửa tập tin /etc/initramfs-tools/conf.d/resume và thêm: sơ yếu lý lịch = 2eb4-40bc-bc77-cc53b987ed88

kiểm tra tệp / var / log / syslog của bạn để biết cái gì đó như thế này: ngày 4 tháng 8 22:26:42 pop-os / usr / bin / kernelstub [19639]: kernelstub: DEBUG kopts: root = UUID = b37019a8-91f5-445f-94c1 -7359a49ed5df ro quiet loglevel = 0 systemd .show_status = false CV = UUID = ed8347ed-2eb4-40bc-bc77-cc53b987ed88

Nếu sơ yếu lý lịch bị thiếu hoặc sai thì bạn sẽ cần phải cập nhật lại nhân khởi động của mình.


0

Ngoài việc thiết lập điểm tiếp tục hoán đổi trong grub được đề cập trong câu trả lời của Sam73 , tôi thấy rằng Ubuntu 18.04 của tôi cũng cần phải cài đặt laptop-mode-tools:

$sudo apt install laptop-mode-tools

sau đó thay đổi ENABLE_LAPTOP_MODE_ON_AC=1trong tập tin cấu hình:

$sudo vim /etc/laptop-mode/laptop-mode.conf

bắt đầu chế độ máy tính xách tay với:

$sudo laptop_mode start

PS Bạn có thể kiểm tra xem laptop có khởi động hay không với

$cat /proc/sys/vm/laptop_mode

Nếu nó in 0, laptop_modenó không hoạt động, nếu không, nó cho thấy nó hoạt động tốt.

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.