'Очищая осиротевший inodes' и состояние, потерянное на резюме спящего режима

Я установил новые 16.04 LTS. Я испытывал некоторые проблемы с ошибкой дисплея апплета Wi-Fi (после того, как резюме от Приостановит), и с резюме спящего режима. Я включил спящий режим в меню с помощью метода, показанного здесь. Теперь резюме спящего режима не работает периодически. Иногда это хорошо работает, другие времена, это отображает текст на резюме, которое говорит что-то о 'очистке осиротевшего inodes', и система просто загружается снова без предшествующего состояния памяти.

Вот некоторая информация:

$ sudo blkid
/dev/sda1: LABEL="System Reserved" UUID="50921EE4921ECE7A" TYPE="ntfs" PARTUUID="dda192f8-01"
/dev/sda2: LABEL="Primary Disk" UUID="765E305F5E3019F7" TYPE="ntfs" PARTUUID="dda192f8-02"
/dev/sda3: LABEL="Secondary Disk" UUID="E2D42C6AD42C42E1" TYPE="ntfs" PARTUUID="dda192f8-03"
/dev/sda5: UUID="dbaad068-46da-4637-9c45-5c32c20d3cfe" TYPE="swsuspend" PARTUUID="dda192f8-05"
/dev/sda6: UUID="31385b29-f351-4a10-9dcf-c92efd58334b" TYPE="swap" PARTUUID="dda192f8-06"
/dev/sda7: UUID="1f734f56-7328-4029-88a0-fa995426d4d2" TYPE="ext4" PARTUUID="dda192f8-07"

$ cat /etc/initramfs-tools/conf.d/resume
RESUME=UUID=31385b29-f351-4a10-9dcf-c92efd58334b
3
задан 28 June 2016 в 11:23

2 ответа

Ну, я удивлен, что никто не предложил это, поскольку у меня была эта проблема в течение достаточно долгого времени. Ответ, которым это казалось, смотрел прямо в моей поверхности. По-видимому, мой раздел подкачки был примерно тем же размером как моя память. Кроме того, я не добавил ссылку к своему разделу подкачки UUID в моем файле личинки. После увеличения размера раздела подкачки для удвоения размера памяти и добавления ее UUID в файле личинки, резюме спящего режима работает обычно в течение прошедших нескольких дней. Хотя, резюме от спящего режима берет немного бита дольше, но я не жалуюсь.

необходимо удостовериться, что раздел подкачки определяется в следующих файлах:

  • /etc/initramfs-tools/conf.d/resume
  • /etc/default/grub

ОБНОВЛЕНИЕ

Используя низкоуровневый интерфейс uswsusp как значение по умолчанию, бывшее в спящем режиме, механизм решительно улучшил мое время резюме менее чем до минуты!!!

sudo apt-get install uswsusp

Создают файл /etc/pm/config.d/00sleep_module и добавляют следующую строку:

  • SLEEP_MODULE="uswsusp"
2
ответ дан 1 December 2019 в 16:58

Я просто "решил" ТОЧНО ту же проблему и таким образом предоставлю мое решение здесь, даже если Ваша проблема отличается.

Я сначала выполнил итерации через by-uuid проблемы (когда я удалил systemd, я думал sysvinit, могли заставить порядок устройства быть испорченным, как предложено в другом месте, и uuid ссылка должна была решить проблему. Или таким образом, я думал.

Это, казалось, было хорошо в течение недели, или даже два, затем это запустилось снова.

После этого я помнил то, что беспокоится, я имел с хинду, где я должен был явно установить resume=/dev/disk/by-uuid/{} в grub.cfg иначе это не возобновилось, несмотря ни на что. Там, это решило мою проблему. Я даже установил dracut для управления моим initramfs. Это снова работало некоторое время, затем это не сделало.

Затем я попробовал другой материал как понижение ядра, установка bootlogd, но ничто не предложило ничего специального.

На данном этапе я начал искать больше справки. Я схватил весь - не совсем читаемый - информация здесь по kernel.org. Я попробовал это, и что, я не совсем помню то, что я сделал точно, но эй.

Снова это иногда работало, с другой стороны это не сделало.

Теперь это - то, куда я на самом деле пошел параноидальный, ища скрытые модули в ядре и предусмотрев атаки с холодной загрузкой, полагая, что кто-то, вероятно, получил мой BIOS assword, резюме от спящего режима, затем сбрасывает компьютер и выводит память, загружающуюся от некоторой внешней системы обработки изображений. (Обратите внимание на то, что все это абсолютно не неправдоподобно, просто - как оказалось, - абсолютно не связанный.)

В этих поисках - сегодня вечером - мне удалось найти этот сайт: https://01.org/blogs/rzhang/2015/best-practice-debug-linux-suspend/hibernate-issues. Отсюда, я добавил параметры в 2,1 initcall_debug, 2,3 ignore_loglevel и 2,4 динамических отладках к моему grub.cfg как параметры начальной загрузки ядра.

Затем это произошло, снова.

Но теперь я был более внимательным. Я заметил, что мой "осиротевший inode" материал происходит из-за "Суперблока, прошлое время записи находится в будущем". Я провел несколько часов, находя что случилось тогда, приблизительно за половину года до этого, снова напрасно. Я просто предположил, что это связано с отсутствием systemd и моей привычкой к использованию localtime как hwclock (из-за случайной двойной загрузки с W7), таким образом, это должно быть в интервале 6-10 минут (неточный источник часов) максимум к 2 часов (я нахожусь в DST GMT+1).

Как бы не так.

Это так произошло, что теперь, с ignore_loglevel добавленным параметром ядра, нелегальный выпуск содержал Точную дату, в которой были мои часы во время начальной загрузки, а также время изменения.

Мои часы были на самом деле установлены до 06 июня 2013, который является, по-видимому, датой выпуска BIOS или чем-то подобным. Вот в чем разница трех лет (97 010 350,488716 секунды согласно ntpdate).

По сути, я наконец выяснил, что моя батарея CMOS арестована. Это могло бы быть отчасти заряжено - даже, что это не является перезаряжающимся - и когда я оставил компьютер на в течение длительных периодов, это, возможно, взяло заряд достаточно для "выживания" в течение 1-2 дней - или это была, возможно, просто температура, кто знает. (Это не мой основной компьютер, таким образом, он сделал пошел несколько дней подряд, неприводимых в действие раз в две недели.)

tl; доктор:

Тем не менее я или рекомендую выгрузить Вашу батарею CMOS, или - если это - портативный компьютер или подобный - затем

  1. (дополнительный при использовании установки по умолчанию Гостеприимных 16.04 Вам не нужно это), устанавливают и настраивают bootlogd, так, чтобы Вы нашли свой нелегальный выпуск в/var/log/boot. (С systemd Вы просто работаете journalctl -b получить нелегальный выпуск.)

  2. Отредактируйте Ваш /boot/grub/grub.cfg файл, и добавляет initcall_debug ignore_loglevel в конце первой строки, запускающейся с linux /boot/vmlinuz... под первой строкой, запускающейся с menuentry.

  3. Перезагрузите теперь. Это очень важно, так, чтобы Вы были в спящем режиме с новыми активированными настройками.

  4. Будьте в спящем режиме, оставьте машину для значительного количества времени, как часы, по крайней мере, затем возобновитесь.

  5. Наконец, любое выполнение journalctl -b > /var/log/boot если Вы не помнили удалить что-то позвонившее systemd и/или установка чего-то позвонившего upstart, openrc, или sysvinit.

Для всех этих шагов необходимо быть корнем, таким образом, рекомендуется запустить с a sudo -s команда после каждого перезапуска и установки что-то как Полуночный Командующий (apt install mc или Центр программного обеспечения) сначала и использование это (mc) работать с конфигурациями и журналами.

Теперь у Вас есть журнал в /var/log/boot, в котором можно искать события при начальной загрузке как фактическая причина для "осиротевшего inodes". Если Вы находите "время изменения в будущей" проблеме со многими часами или больше различием, то Вам определенно разрушили Вашу батарею CMOS/RTC также и должны будете заменить ее.

0
ответ дан 1 December 2019 в 16:58

Другие вопросы по тегам:

Похожие вопросы: