Ubuntu 18.04 не може відновитись після сплячого режиму


17

Hibernate працював правильно, коли я використовував Ubuntu 17.04. Після оновлення до 17.10 я не зміг відновитись через чорний екран після резюме ( ця помилка ).

Після оновлення до 18.04, якщо я спробую запустити комп'ютер після сплячки, він завантажується так, ніби не було зроблено сплячки.


У мене така ж проблема з 18.04, я вважаю, що рішення повинно бути в тому, щоб вказати правильний розділ для резюме, але все одно не вдалося знайти способу зробити це. Все, що я виявив, що Google не працював для мене.
користувач2819650

Розділ встановлено правильно в /etc/initramfs-tools/conf.d/resume до мого підміна. Я підозрюю, що або сплячка зроблена неправильно, або відновлення під час завантаження не працює. Але я не знаю, як це налагодити далі. Syslog та dmesg не дають жодних підказок, у чому проблема.
Каміль

Відповіді:


29

У порівнянні з попередніми LTS (16.04) зміни, зроблені в налаштуваннях за замовчуванням. У моєму випадку сплячка не спрацювала, поки я не зробив кілька кроків, серед них збільшив розмір файлу swap, увімкнув його, переконався, що політики дозволяють це і т.д.

Це може бути моєю найдовшою відповіддю на всій StackExchange, тому я спробував зробити заголовки описовими .

Черевики як не було сплячки

Було б доцільно переглянути ваші журнали ( dmesgможливо, допоможе) і побачити, чи є щось там. Є причини, коли, незважаючи на те, що ви сказали системі перезимувати, вона насправді не вийде, або замість неї буде призупинено оперативну пам’ять (сон).

Огляд kern.logі syslogпошук будь-яких повідомлень про сплячку, також не зашкодить. Розділи, що починаються з "проблеми", можуть допомогти вам у вирішенні конкретних проблем.

Поміняйте файл файлом або розділом

Однією з важливих змін є те, що тепер у вас НЕ є розділ swap, але у вас є файл swap.

Файл swap може не працювати для вашої суміші апаратних засобів / драйверів / ОС та режиму глибокого сну.

Гібернація вимкнена

Політика також може вимкнути або заборонити сплячку.

Жаргон

Підвищення оперативної пам’яті - оперативна пам’ять зберігає дані, комп’ютер переходить у режим сну швидше, витрачається більше енергії при зупиненні, прокидається швидше. Деякі називають це сном.

Підвісити до диска - він теж сплячий. Оперативна пам’ять зберігається для заміни (розділу або файлу), комп'ютер переходить у режим сну повільніше, витрачає менше енергії під час сплячки, прокидається повільніше.

Призупинення оперативної пам’яті в Linux Рафаеля Дж. Висоцького та А. Леонарда Брауна

Передумови - у вас достатньо місця?

Щоб перейти у сплячку, вам потрібно (спрощення тут) зберегти всю оперативну пам’ять на жорсткому диску. Отже, для цього потрібно виділити достатньо місця. Якщо цього не зробити, це не вдасться, і ви не впадете в сплячку.

  1. free -m підкаже, скільки пам’яті ви маєте, використовуєте та скільки у вашому свопі.
  2. df -h підкаже, скільки дискового простору у вас на кожній точці монтування та скільки використовується, безкоштовне тощо. Це важливо, оскільки ви, можливо, захочете пізніше вказати, де буде розміщуватися ваш файл заміни або який розділ "обрізати", щоб мати достатньо місця для заміни.
  3. cat fstabповинен надати вам інформацію, якщо у вас є розділ або файл із свопом. Згідно з питаннями Ubuntu Hibernation FAQ swapfileне завжди може працювати з деякими комбінаціями апаратних засобів / драйверів.

Якщо у вас недостатньо місця, дотримуйтесь поширених запитань про swap Ubuntu . Він розповідає про те, як збільшити файл swap, додати інший, перевірити, чи він використовується тощо. За допомогою команд та пояснень. Дійсно приємний ресурс.

У мене не вистачає місця для розміщення оперативної пам’яті!

Документи ядра кажуть:

/ sys / power / image_size контролює розмір зображення, створеного механізмом призупинення на диск. Можна записати рядок, що представляє невід'ємне ціле число, яке буде використовуватися як верхня межа розміру зображення, в байтах. Механізм призупинення на диск зробить все можливе, щоб розмір зображення не перевищував це число. Однак якщо це виявиться неможливим, його спробують все одно призупинити, використовуючи найменше можливе зображення. Зокрема, якщо в цей файл записано "0", призупинення зображення буде якомога меншим. Читання з цього файлу відображатиме поточний ліміт розміру зображення, встановлений за замовчуванням 2/5 доступної оперативної пам’яті.

Отже, спробуйте налаштувати розмір зображення. Як - задайте інше питання, будь ласка.

Передумови - чи підтримує ваше ядро ​​призупинення на диску?

Ядро підтримує все, що перераховано /sys/power/state, так:

cat /sys/power/state

Дозволено (за моїми даними) записи там включає: mem, standby, freeze, disk. Пояснення:

  • mem- має кілька значень, яке саме у вашій системі ви дізнаєтесь через cat /sys/power/mem_sleep. Я маю:s2idle [deep]
  • standby - призупинення живлення (якщо підтримується)
  • freeze - Призупинення роботи в режимі очікування (STI)
  • disk- Suspend to Disk (STD), сплячка . Це - ти хочеш.

Тоді нам потрібно перевірити cat /sys/power/disk. Якщо ви там disabledзанурилися у свій BIOS, шукаючи безпечну завантаження - це єдина ідея, яку я можу запропонувати, і єдине, що я знаю, може заважати та вимикати сплячку. Хоча я знаю лише про SecureBoot, можуть бути й інші перешкоди, тому перегляньте свій BIOS - це гарна ідея, навіть якщо у вас немає жодної "безпечної завантаження".

Читання тут:

  1. Документи ядра
  2. Debian Wiki на сплячку

TBH, навіть якщо ваше ядро ​​НЕ підтримує сплячку, ви можете спробувати іншим способом, прокрутіть вниз до розділуInterfaces .

Прочитайте це - попередження та проблеми - немає BTRFS

Ні в якому конкретному порядку:

  1. Не всі чіпсети будуть працювати (не мають джерел, які я можу тут навести, тому скажімо, що це з чужих повідомлень)
  2. У VAIO є проблеми, нібито є прапор, щоб протидіяти їм
  3. SecureBoot часто називають заважаючим або вимикаючим сплячку
  4. Навіть у сплячому режимі енергія споживає електроенергію
  5. Кількість модулів (особливо графіки) може бути ініціалізовано перед тим, як ваша система належним чином відновиться зі сну - це зазвичай є причиною появи чорного екрану при поновленні . Погляньте на ArchLinux Wiki, щоб отримати поради щодо налагодження проблем. Я б також запропонував Ubuntu FAQ щодо питань сплячого режиму. Перегляд помилок Launchpad також може дати результати. IIRC, є параметр ядра, який визначає затримку перед секундами.
  6. Дозвіл процедури сплячки відрізняється для різних версій Polkit

Не використовуйте BTRFS і перебувайте в сплячому режимі: результат буде пошкодженим.

Хочу впасти в сплячку - поміняти розділ

Бувають випадки, коли люди відмовляються від своп-файлів і повертаються до своп-розділу. Зрештою, він працював на попередній LTS. Я не намагався, тому не пропоную вказівники.

Я хочу перейти у сплячку - із файлом swap

  1. Переконайтеся, що у вас там достатньо місця. Поширені запитання про swap Ubuntu говорить про те, скільки потрібно, також виконуються команди зверху. Якщо вам потрібна додаткова інформація тут, поставте інше питання, будь ласка, оскільки це тривала тема.
  2. Збільшити файл swap або створити новий з досить хорошим розміром (бажано, я погоджуюся з @muru ) та змінити /etc/fstabна новий. Перезавантажте, щоб побачити зміни, прийнято (зберігайте резервну копію, fstabщоб ви могли легко відновити про всяк випадок.
  3. Наведіть на це ядро ​​відповідними параметрами, щоб воно знало, звідки відновити.
  4. Оновіть / переконфігуруйте завантажувач та перезавантажте.

Параметри ядра? Страшно!

Уважно прочитайте та вирішіть, чи бажаєте ви це зробити, але це лише спосіб налаштування ядра. Можливо, простіше перезимувати через systemdта uswsusp(див. Інтерфейси нижче). Можливо, ви, як і я, в кінцевому підсумку вирішите, що призупинити дію оперативної пам’яті достатньо, і ви не хочете мати 32 Гб файлу своп (не такий великий варіант для людей, які мають один SSD на своїх ноутбуках, наприклад). Але!

  1. в сплячому режимі для того, щоб поміняти файл, потрібно resume=знати, на якому розділі перебуває ваш файл підкачки, і resume_offset=знати, звідки у файлі swap починати відновлення.
  2. сплячий режим до перегородки вимагає resume=вказувати на підкачування розділу.
  3. вирішення проблем із чорним екраном цілком може знадобитися resumedelay=.

Документи ядра про затримку відновлення після сплячки:

resumedelay = [HIBERNATION] Затримка (у секундах) пауза перед спробою читання файлів резюме

Необхідні параметри для файлу swap та сплячки :

резюме = [SWSUSP]

      Specify the partition device for software suspend

      Format:

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

resume_offset = [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

Для resume=вибору вибирайте той самий стиль, rootякий має елемент fstab. Отже, або /dev/sdaXабо, UUIDабо LVM. Для гібернації до файлу - надайте розділ, де можна знайти ваш файл.

Читання:

  1. https://www.kernel.org/doc/Documentation/admin-guide/kernel-parameters.txt
  2. https://wiki.archlinux.org/index.php/Kernel_parameters

Проблема - заголовок підкачки не знайдено

Файл свопи потрібно форматувати належним чином. Якщо ваші журнали говорять про це, ви або намагаєтесь перейти в режим глибокого сну до файлу, або параметр резюме не відповідає правильності.

Переключіться на розділ або виправте файл або інтерфейс зміни, який використовується для сплячки.

Дивіться: /unix/43508/debian-hibernate-problem-pm-swap-header-not-found

mkswapвикористовується для форматування файлу, детальніше про нього читайте тут

Проблема! Зимова сплячка заборонена!

Тест: pm-hibernate(якщо встановлено пакет pm-utils) або systemctl hibernateскажіть, що вам заборонено. Налаштування за замовчуванням в Ubuntu з IIRC 12.04.

Рішення: залежить від вашої версії Polkit, вашої версії Ubuntu та смаку ... Дивіться це запитання . Також ArchWiki на Polkit може допомогти.

Про Mint дивіться на веб-сайті : https://forums.linuxmint.com/viewtopic.php?t=259912

Проблема! Гібернація відключена чимось у BIOS!

Тест: cat /sys/power/diskмає disabled. У журналах відображається повідомлення "Не вдалося перейти в сплячу систему через логін: дієслово сну не підтримується".

Рішення: пошук у вашому BIOS і пошук проблемної речі. Вимкнути.

Рішення 2: спробуйте інший сплячий інтерфейс.

Див.: Як активувати сплячку в 16.04.1? (systemd) .

Інтерфейси

  1. swsusp - інтерфейс ядра низького рівня. Див. Передумови - ядро ​​для яких файлів. Запис у файли безпосередньо може спричинити призупинення (в оперативній пам'яті, на диску та гібриді). Згідно з SwapFAQ проблематично зі сплячим режимом.
  2. uswsusp - ArchWiki та Debian Wiki та приємне запитання AskUbuntu із написанням, як ним користуватися .
  3. systemd - ArchWiki на ньому
  4. pm-utils - AFAIK - це колекція сценаріїв, родом з Debian - я з радістю віщу себе більше інформації.

Заключними зауваженнями

Для мене це було справою майже двох днів роботи. Сподіваємось, це допоможе вам (та іншим) швидше вирішити свою проблему. Є ще моменти, які я пропустив, але це 2 ранку, і я не відчуваю, як писати більше зараз. Я, звичайно, відкритий для будь-кого вказівки, щоб зробити це краще, тому коментуйте. Я відповім, коли я сплю, працюю тощо :-)

Я не впевнений, що зимує на диску, це чудово. Я пішов зі сном врешті-решт. Але для мене проблема полягала в тому, щоб мати 32 ГБ файл просто для сну, тому що я взагалі уникаю заміни. Мій початковий swap-файл був 2 Гб, і він був здебільшого порожнім. YMMV. Тим не менше, удачі! І почніть з колод!


Чудова відповідь! Але зрештою, вирішив мій випадок, це пов'язаний FAQ про Swap, і він говорить мені про те, щоб додати "resume = UUID" до змінної у моєму конфігураційному файлі grub та / або що подібне до initramfs-tools. Чомусь у мене неправильний UUID, що, ймовірно, було проблемою. Тому я пропоную тому, хто має подібну проблему, спершу перевірити, що написано у FAQ по Swap у розділі "Як додати чи змінити розділ swap?", А третій пункт про сплячку там.
RimaNari

1
"диск - призупинити на диск (STD), сплячий режим. Це - ви хочете." Хіба я єдиний, хто отримав удар від цього? Велике спасибі
spakmad

чудова відповідь! одне невелике зауваження: на одній із моїх машин відновіться після сплячого режиму після другої спроби завантаження (нічого не відображалось на моніторі з першої спроби). Я міг би виправити це встановлення HWE-стека: $ sudo apt install linux-generic-hwe-18.04(для деяких апаратних засобів навіть linux-generic-hwe-18.04-edgeварто було б зняти).
головний герой

1
Ага. Я не збираюся зимувати! У мене є 512Gb оперативної пам'яті. Ну добре ... (У мене достатньо місця на моєму жорсткому диску 10 Тб, але для перезавантаження пішло б години!)
Алексіс Вілке

9

Використовуйте UUID розділу swap замість його точки монтажу в параметрі RESUME resume=UUID=<#>в обох /etc/default/grubта/etc/initramfs-tools/conf.d/resume

Створіть запис для розділу swap /etc/fstab без точки монтажу щось подібне

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

В /etc/default/grubя використовував окремий вхід для відновлення глибокого сну

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

Створіть політику в місцевій владі (pkla)

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

І вставити туди

[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

Після цього оновіть initramfs та GRUB

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

Перезавантажте програму, відкрийте деякі програми та використовуйте systemctl hibernate(без судо), щоб перевірити, чи працює вона


працює чудово! дуже дякую.
Yossarian42

дякую людино, ти мене врятував!
Vahe Shadunts

1

Для мене це завжди працювало до 18.04, а після 18.04 я ввімкнув це, як це є у багатьох статтях, але він раптом перестав працювати лише вчора (працює нормально протягом 4-5 місяців),

і ось ... ОДНЕ, що змусило його знову працювати ...

Скажіть grub2, де розміщений розділ swap:

Спочатку з’ясуйте, на якому розділі він використовується за допомогою команди нижче:

cat /etc/fstab

Шахта знаходиться на sda7, як і наступний вихід:

під час встановлення було замінено / dev / sda7

Потім додайте в Grub2 наступне додаток до наступного рядка, використовуючи таку команду:

sudo gedit / etc / default / grub

GRUB_CMDLINE_LINUX_DEFAULT = "intel_pstate = відключити резюме = / dev / sda7"

Важлива частина resume=/dev/sda7

/ dev / sda7 в моєму випадку

Потім оновіть Grub за допомогою наступної команди, і після цього вона знову почне працювати ідеально:

sudo update-grub

Після багатьох спроб це було одне, що спрацювало, можливо, саме завдяки оновленню ядра його накрутили, ніколи це не спрацювало.


0

сподіваюся, що це комусь допоможе, але я запускаю popos / ubuntu 19.04. Під час моєї установки я зміг перезимувати за допомогою s2disk або pm-hibernate, але резюме не вдалося. Щоб виправити це, оскільки моя система завантажується за допомогою UEFI замість grub. Мені просто довелося перевстановити завантажувач. Щоб перевірити, чи працює ви UEFI, використовуйте наступне:

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

якщо в режимі UEFI, то я дотримувався цього керівництва, щоб перевстановити завантажувач, він змінюється, якщо ви використовуєте nvme диск або диск sata: https://support.system76.com/articles/bootloader/

переконайтеся, що в параметрах завантаження kernalboot ви вказали розділ або UUID, звідки слід відновити, наприклад щось подібне:

резюме = UUID = ed8347ed-2eb4-40bc-bc77-cc53b987ed88

Ви можете додати це: 1) sudo kernel-stub -a "resume = UUID = ..." 2) відредагувати /etc/initramfs-tools/conf.d/resume файл і додати: resume = UUID = ed8347ed- 2eb4-40bc-bc77-cc53b987ed88

перевірити файл / var / log / syslog на щось подібне: 4 серпня 22:26:42 pop-os / usr / bin / kernelstub [19639]: kernelstub: DEBUG kopts: root = UUID = b37019a8-91f5-445f-94c1 -7359a49ed5df ro тихий loglevel = 0 systemd .show_status = помилкове резюме = UUID = ed8347ed-2eb4-40bc-bc77-cc53b987ed88

Якщо резюме відсутнє або неправильне, вам потрібно буде оновити завантажувальне ядро ​​ще раз.


0

Крім створення свопу резюме точки в жратву згадується в Sam73 в відповідь , я виявив , що мій Ubuntu 18,04 необхідно також встановити laptop-mode-tools:

$sudo apt install laptop-mode-tools

потім змініть ENABLE_LAPTOP_MODE_ON_AC=1конфігураційний файл:

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

запустити режим ноутбука за допомогою:

$sudo laptop_mode start

PS Ви можете перевірити, починається чи ні ноутбук

$cat /proc/sys/vm/laptop_mode

Якщо він друкує 0, значок laptop_modeне працює, інакше це означає, що він працює добре.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.