Медленная загрузка, длительное время загрузки ядра из-за неправильного устройства возобновления


44

Некоторое время мой процесс загрузки занимает слишком много времени (почти 1 минута).

systemd-analyse time 

показывает, что ядро ​​занимает 35,765 с

Глядя dmesg, кажется, проблема с монтированием файловых систем:

...
[    2.186084]  sdb: sdb1 sdb9
[    2.186919] sd 2:0:0:0: [sdb] supports TCG Opal
[    2.186922] sd 2:0:0:0: [sdb] Attached SCSI disk
[    2.499795] ata5: SATA link down (SStatus 0 SControl 300)
[    2.844320] clocksource: Switched to clocksource tsc
[   35.670493] EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: (null)
[   35.782128] ip_tables: (C) 2000-2006 Netfilter Core Team
[   35.803610] systemd[1]: systemd 237 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN -PCRE2 default-hierarchy=hybrid)
...

Моя /etc/fstabвыглядит так:

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/ubuntu--vg-root /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda1 during installation
UUID=3996-2381  /boot/efi       vfat    umask=0077      0       1
#/dev/mapper/ubuntu--vg-swap_1 none            swap    sw              0       0
/dev/mapper/cryptswap1 none swap sw 0 0

Как я могу устранить это?

РЕДАКТИРОВАТЬ: внимательно глядя на загрузочные сообщения (после удаления тихой опции в grub), я заметил подозрительную строку:

gave up waiting for suspend/resume device

Я думаю, что мой обмен зашифрован, и я также думаю, что UUID в /etc/initramfs/conf.d/resumeне соответствует ни одному устройству.

Должен ли я отключить резюме / приостановить? и как это сделать?


6
Проблема на самом деле в `` `Begin: Running / scripts / local-premount` `` Она отображается во время загрузки (если вы отключите quiet). По какой-то причине этот предварительный сценарий занимает около 30 секунд.
Судханшу

1
Этот вопрос / ответ является ценным, потому что он помогает устранить ошибку в Lubuntu Bionic, поэтому, пожалуйста, помогите открыть ее снова :-)
sudodus

Ответы:


59

Хорошо, я нашел решение, благодаря комментарию Судханшу.

Проблема была в том, что мой своп был зашифрован. Таким образом, local-premountскрипт в initramfs ожидал недоступного устройства подкачки, пока не истекло время ожидания. Соответствующее сообщение было gave up waiting for suspend/resume device.

Чтобы отключить эту функцию (как возобновление из свопа не представляется возможным с шифрованного раздела подкачки, и я не использую спящий режим в любом случае), я изменил этот файл: /etc/initramfs-tools/conf.d/resume.

В этом файле строка с

RESUME=none

(вместо UUID, который был здесь) отключит ожидание возобновления устройства.

Бег

sudo update-initramfs -u

применить изменения.

Система теперь загружается нормально.



3
Brilliant! Спасибо за исправление. Это заставило меня выдернуть мои волосы!
Мюррей,

Спасибо за исправление
Adhikari Bishwash

Была проблема, так как долгое время вызвано zram (без раздела подкачки). Я только исправил это, спасибо!
Пьер-Дэмиен

3

Я также видел это в Linux Mint (на основе Ubuntu) и потратил некоторое время на то, чтобы понять, что происходит не так.

Это происходит, если ваша система установлена ​​на LVM и использует том LVM в качестве диска подкачки.

Существует давняя, периодически повторяющаяся ошибка, когда файл резюме неправильно имеет UUID (который недопустим для LVM) вместо пути к устройству, который должен иметь. См. Https://bugs.launchpad.net/ubuntu/+source/initramfs-tools/+bug/1768230.

Вы можете исправить это, отредактировав /etc/initramfs-tools/conf.d/resumeфайл и заменив UUID на путь устройства на диске подкачки. Следующий фрагмент команды сделает это за вас, используя первый диск подкачки, найденный и сообщенный blkid:

sudo bash -c 'mv /etc/initramfs-tools/conf.d/resume /tmp/resume.bak; echo RESUME=$(blkid | \grep -I swap | head -n 1 | cut -d : -f 1) > /etc/initramfs-tools/conf.d/resume'

2

Ни одно из этих решений выше или в другом месте не сработало для меня, но я нашел решение, которое сокращает время моей загрузки до 40 секунд с 2 минут и 10 секунд.

Я использовал для создания и удаления разделов подкачки, и почему-то эти журналы остались в файле etc / fstab. Поэтому моя система пыталась смонтировать те ранее созданные разделы подкачки, которых больше не существует. Поэтому, пожалуйста, позвольте мне объяснить, что я сделал, шаг за шагом.

  1. Я запустил эту команду, sudo blkid | grep swapчтобы узнать мои разделы подкачки. Их было два, но один на самом деле не существует (он не относится ни к одному из моих разделов).

  2. Поэтому я пошел редактировать файл / etc / fstab, набрав sudo gedit /etc/fstab

  3. Затем я понял, что существует так много файлов подкачки, которые я удалил, но каким-то образом возобновил существование в этом файле. Поэтому я сослался на шаг 1 и удалил разделы, которые больше не существуют .

Пожалуйста, смотрите два скриншота до и после / etc / fstab. После этой очистки все работает как обычно.

Это неотредактированный файл / etc / fstab, неотредактированный файл / etc / fstab

а вот после стирания несуществующих разделов подкачки очистите / etc / fstab


Это сработало для меня. Спасибо.
Абануб Ханна

2

Я получил эту проблему после установки 2 разных дистрибутивов Linux. Каким-то образом в одном дистрибутиве раздел подкачки получил другой UUID, назначенный ему, а затем ожидал. Мое решение было: во-первых, запустите, sudo blkidчтобы получить правильный UUID для раздела подкачки. Скопируйте UUID свопа. Вставьте его, /etc/initramfs-tools/conf.d/resumeчтобы вы получили RESUME=_the_correct_UUID_. Теперь бегите, sudo update-initramfs -uчтобы применить это изменение.

Затем проверьте / etc / fstab и измените UUID раздела подкачки, если это необходимо. (Мне пришлось)


Это помогло мне. Спасибо.
Абануб Ханна
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.