TL;DR: Бездумный dist-upgrade на Linux — это плохо. А ещё это может поломать grub и система не сможет загрузиться. На помощь в этом случае придет LiveCD, где нужно будет выполнить несколько простых команд.

И вновь приветствую всех в своем блоге.

Знаете, что может быть лучше отдыха в субботу? Эксперименты с ноутбуком! А знаете чем у меня всегда заканчиваются эксперименты? Конечно же проблемами с загрузкой!

Начну с того, что на ноутбуке у меня реализован дуалбут между Windows 10 и Kali Linux. На Kali Linux я захожу раз в несколько месяцев, и за это время успевает выйти достаточно много обновленных версий для установленных пакетов.

А знаете что я люблю делать еще больше, чем экспериментировать? Обновлять! Ведь это так здорово, когда после обновления ты смотришь как изменился функционал или внешний вид приложения!

Именно поэтому каждый мой заход на Kali Linux начинается с выполнения двух команд:

sudo apt-get update
sudo apt-get dist-upgrade

И вот, вновь выполнив уже привычные команды, я перезагрузил ноутбук и столкнулся с таким вот неприятным сообщением:

error: symbol 'grub_file_filters' not found.
Entering rescue mode…
grub rescue>

фотография с ошибкой с grub, которая описана выше

К счастью, у меня была заранее записанная флэшка с установщиком Kali Linux, который можно загрузить и как Live систему. так что оставалось лишь найти в гугле подходящие команды для восстановления. Увы, сейчас я уже не найду ссылок, но зато есть четкая последовательность команд, которая помогла мне с восстановлением загрузчика.

В первую очередь, загружаемся с линуксового LiveCD/LiveUSB (желательно конечно с Kali Linux) и запускаем терминал.

Дальше, нужно найти раздел с установленной Kali Linux на компьютере. Для этого я поочередно монтировал sda1,sda2,sdb1,sdb2 в /mnt, и каждый раз через ls смотрел его содержимое. Если там будет иерархия с папками /dev, /root, /var и т.п., то это нужный раздел. В моём случае, это был sda1.

Как только раздел найден, остается лишь выполнить следующие команды (только не забудьте заменить sda1 и sda на ваш раздел соответственно).

sudo mount /dev/sda1 /mnt
sudo mount --rbind /dev /mnt/dev
sudo mount --rbind /proc /mnt/proc
sudo mount --rbind /sys /mnt/sys
sudo chroot /mnt
grub-install /dev/sda
update-grub

После чего, можно делать reboot, и радоваться починенной загрузке двух систем!

Вот не очень качественные фотографии, где я вводил данные команды. Опечатки в процессе ввода прилагаются.

фотография с первой частью введенных команд
фотография со второй частью введенных команд

UPD: Данный способ помог мне и с этой ошибкой:

error: symbol 'grub_calloc' not found.
grub rescue>

фотография с другой ошибкой grub, описанной выше