«Очистка осиротевших инодов» и состояние, потерянное в спящем режиме

Есть флажок предпочтения, который будет уведомлять вас только в том случае, если кто-то прямо передает вам сообщения, вы можете убедиться, что этот флажок не установлен.

1
задан 28 June 2016 в 11:23

1 ответ

Я просто «исправил» ТОЧНО ту же проблему и, таким образом, предоставил бы мое решение здесь, даже если ваша проблема другая.

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

Кажется, что это хорошо в течение недели или даже двух,

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

Тогда я пробовал разные вещи, такие как понижение ядра, установка bootlogd, но ничто не предлагало ничего особенного.

На этом этапе я начал искать дополнительную помощь. Я понял всю (не вполне читаемую) информацию здесь, на kernel.org. Я пробовал это, и это я не совсем remem

Снова это сработало, а потом опять не получилось.

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

В этом квесте - сегодня вечером - мне удалось найти этот сайт: здесь, в kernel.org . Отсюда я добавил параметры в 2.1 initcall_debug, 2.3 ignore_loglevel и 2.4 динамический отладчик для моего grub.cfg в качестве параметров загрузки ядра.

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

Но теперь Я был более внимателен. Я заметил, что мой «потерянный inode» материал вызван « 2.1 initcall_debug ». Я провел несколько часов, узнав, что случилось тогда, полгода назад, снова безрезультатно. Я просто предположил, что это связано с отсутствием systemd и моей привычкой использовать localtime как hwclock (из-за случайной двойной загрузки с W7), поэтому он должен находиться в интервале 6-10 минут (неточный источник синхронизации) до 2

Мальчик, я был не прав.

Так получилось, что теперь, когда добавлен параметр ядра ignore_loglevel, в bootlog содержался EXACT

Мальчик, был ли я неправ. Это разница в три года (97010350.488716 секунд в соответствии с ntpdate). .

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

моя батарея CMOS разрядилась :

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

(необязательно, если вы используете стандартную установку Xenial 16.04, вам это не нужно) install и сконфигурируйте bootlogd, чтобы вы нашли ваш bootlog в / var / log / boot. (С помощью systemd вы просто запустите journalctl -b, чтобы получить bootlog.) Отредактируйте файл /boot/grub/grub.cfg и добавьте initcall_debug ignore_loglevel в конце первой строки, начиная с linux /boot/vmlinuz... в первой строке, начиная с menuentry. Перезагрузить сейчас. Это очень важно, так что вы будете спячки с новыми настройками. Hibernate, оставьте машину в течение значительного количества времени, например, часов, а затем возобновите работу. Наконец, запустите journalctl -b > /var/log/boot, если вы не забыли удалить что-то с именем systemd и / или установить что-то, называемое upstart, openrc или sysvinit.

Для всех этих шагов вам нужно быть root, поэтому вам рекомендуется начинать с команды sudo -s после каждого перезапуска и сначала устанавливать что-то наподобие Midnight Commander (apt install mc или Software Center) и используйте это (mc) для работы с конфигурациями и журналами.

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

0
ответ дан 23 May 2018 в 08:49
  • 1
    Я не говорю, что это не решение, но шансы иметь сломанную / пустую батарею CMOS довольно низки. Я бы предостерег от таких экзотических проблем. – jawtheshark 2 September 2016 в 12:22
  • 2
    Именно поэтому я написал подробные шаги для отладки, а не только мою проблему. Это вполне может быть непересекающимся плохим сектором в разделе подкачки, упомянутой проблемой nzoned проблемы с двойной памятью или даже «злодейской атакой», гипотеза выше. (Не так много других, о чем можно подумать - если это работает иногда). – Victor 2 September 2016 в 17:09
  • 3
    Другая вещь, на которую нужно смотреть, , если вы не используете systemd , что ваше устройство возобновления (свопинга) может переключиться, чтобы ядро ​​не обнаружило возобновленное изображение. Если это проблема, вы можете использовать blkid, чтобы найти UUID вашего раздела подкачки, а затем добавить resume=UUID=<the uuid here> в файл конфигурации ядра в grub.cfg, точно так же, как добавленные выше параметры debug. – Victor 4 September 2016 в 17:29
  • 4
    Что ты знаешь. Моя батарея CMOS умирала, когда время было сброшено при каждой загрузке W7 (время Ubuntu не было затронуто). Я заменил старый аккумулятор на новый. Дайте мне несколько дней, чтобы проверить это. – thethakuri 12 September 2016 в 19:18

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

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