Отключаем resume в initramfs
Проводя эксперименты с очередной виртуальной машиной, я столкнулся с интересным поведением. Обслуживая ВМ, я увеличил размер диска с помощью qemu-img resize, а после включил ВМ, отключил и удалил swap, а затем увеличил основной раздел.
Конечно, удалить swap из списка монтирования в /etc/fstab я не забыл. Оставил там для истории только одну закомментированную строку.
Но, после следующего перезапуска, ВМ очень долго не запрашивала у меня логин. После ожидания в минуту-две я всё-таки смог войти в систему. Окей, дебажим.
Во-первых отключаем quiet режим из списка опций загрузки:
$ sudoedit /etc/default/grub
Достаточно удалить quiet из строки GRUB_CMDLINE_LINUX_DEFAULT. Если там есть splash, то его тоже следует убрать. Сохраняем файл, производим обновление конфигурации grub и перезагружаемся:
$ sudo update-grub
$ sudo reboot
И вот, на экране строка за строкой стали повторятся одни и те же сообщения:
Begin: Running /scripts/local-block ... done
Быстрый поиск в сети показал, что это связано с восстановлением состояния системы после выхода из режима гибернации. ОС пытается найти раздел на диске, где может присутствовать сохранённое состояние. Обычно это swap-раздел. Бинго!
Подсказка от man для initramfs-tools: есть параметр resume, который и отвечает за установку UUID того самого раздела swap. Ранее я встречал параметр с аналогичным именем только в конфигурации GRUB. Давайте поищем все файлы, где этот параметр есть (подходя к вопросу ретроспективно, имело смысл сразу поискать UUID удалённого swap-раздела):
$ sudo grep -inr resume /etc
/etc/initramfs-tools/conf.d/resume:1:RESUME=UUID=59a1e337-2733-4b47-8267-f8ef4a460d53
Ага, значит именно тут и был записан UUID удалённого раздела swap! Можно закомментировать эту строку или заменить на RESUME=none. Второй вариант мне нравится больше:
$ echo 'RESUME=none' | sudo tee /etc/initramfs-tools/conf.d/resume
RESUME=none
Не забудем обновить конфигурации initramfs и после перезагрузиться:
$ sudo update-initramfs -u -k all
update-initramfs: Generating /boot/initrd.img-6.1.0-22-amd64
$ sudo reboot
После перезагрузки приветствие с запросом логина появилось моментально, ура!