Error symbol grub calloc not found entering rescue mode grub rescue

Здравствуйте. После обновления Astra Linux Special Edition 1.6 с обновления 6 до оперативного обновления 9 на сервере, после перезагрузки системы слетел GRUB: symbol 'grub_calloc' not found. И строка grub rescue. Загрузка в режиме EFI. У сервера был настроен дисковый массив на dmraid, в fstab...

21.10.2021

Здравствуйте.
После обновления Astra Linux Special Edition 1.6 с обновления 6 до оперативного обновления 9 на сервере, после перезагрузки системы слетел GRUB: symbol ‘grub_calloc’ not found. И строка grub rescue. Загрузка в режиме EFI.
У сервера был настроен дисковый массив на dmraid, в fstab был прописан корневой раздел по идентификатору массива (UUID). При загрузке дистрибутива с DVD в режиме восстановления массив не видится потому как в ALSE, как я понял, нет нормальных драйверов для RAID.
Посоветуйте что можно сделать в данном случае, чтобы починить загрузку?
Спасибо.

Последнее редактирование: 21.10.2021

21.10.2021

Спасибо за ответ. Проблема в том, что из-за dmraid в системе нет дисков sda. Если б можно было как-то увидеть массив на dmraid — поправить GRUB можно было бы без особых усилий.

21.10.2021

При чём здесь sda? Это просто пример подвернулся. Вы вообще пробовали? Мне тоже интересно.
Там был пример с новым железом и Астра как то спасовала. После восстановления загрузчика смогла загрузиться. Мне эта утилита помогала не только линуксовые загрузчики восстанавливать, но и виндовые (Win 10) после падения линукс-систем и ихнего Граба.

oko


21.10.2021

to Jbanchic
Правильно понимаю, что у вас на руках только DVD-диск с ALSE (базовый, без обновлений) и проблемный сервер, на который кто-то ранее установил пакеты поддержки dmraid? Если так, то пробуйте аналогично вот этому…

to YNA
Никакая утилита не поможет, если ОС, под которой загрузились, не видит накопителей с установленной ОС. Поэтому да, дело как раз в поддержке блочных устройств (те же /dev/sda в обычном случае SATA-дисков или /dev/dm в случае dmraid)…

21.10.2021

Правильно понимаю, что у вас на руках только DVD-диск с ALSE (базовый, без обновлений) и проблемный сервер, на который кто-то ранее установил пакеты поддержки dmraid? Если так, то пробуйте аналогично вот этому…

Сервер был установлен с базового диска по вами указанной инструкции с подсовыванием модулей dmraid для того, чтобы система увидела массив и прекрасно работала и грузилась. На нее успешно было накатано оперативное обновление 6. После накатывания последнего оперативного обновления 9, который кстати установился без проблем, после перезагрузки сломался GRUB. На текущий момент времени при старте появляется grub rescue и вышеуказанная ошибка. Для того, чтобы починить GRUB, как я понимаю, нужно подцепить дисковый массив, который голым дистрибом ALSE в режиме восстановления не видится на моменте подключения корневого каталога. Поэтому и задаю вопрос здесь.

P.S.: Особенность dmraid в том, что в fstab сам массив прописан был по UUID. И, как я понимаю, там есть свои особенности. Для того, чтобы подцепить массив по UUID и примонтировать его куда-либо для починки GRUB что нужно сделать?

Последнее редактирование: 21.10.2021

oko


21.10.2021

to Jbanchic
Никогда не пользовался ALSE в режиме восстановления…
В Grub rescue команда ls тоже ничего не показывает?
Остается вариант грузануться с LiveCD с поддержкой dmraid, выполнить chroot в /boot-раздел или корневой (если /boot там) и оттуда восстановить grub через update-grub. Сам подобным не занимался на ALSE с учетом обязаловки паролей на grub и невозможности корректно использовать root (придется chroot выполнять под уч.запись sudo-пользователя, устанавливавшего систему). Поэтому что-то более детальное посоветовать не могу…

oko


21.10.2021

to Jbanchic
Кстати, да, можно и дистриб ALSE использовать. Выполнить как по инструкции dmraid=true, чтобы ALSE его увидела. Далее CTRL+ALT+F2, chroot, установить пакеты поддержки dmraid и обновить GRUB. И, не возвращаясь в графику, ребутнуть сервер. По-идее должно помочь…

21.10.2021

Никогда не пользовался ALSE в режиме восстановления…
В Grub rescue команда ls тоже ничего не показывает?

Показывает. Два диска с тремя разделами на каждом. Ну оно и понятно — в RAID зеркало.
hd0 (hd0.gpt3) (hd0.gpt2) (hd0.gpt1) hd1 (hd1.gpt3) (hd1.gpt2) (hd1.gpt1)

Остается вариант грузануться с LiveCD с поддержкой dmraid, выполнить chroot в /boot-раздел или корневой (если /boot там) и оттуда восстановить grub через update-grub

Да, я примерно так и представлял. Спасибо.

oko


21.10.2021

to Jbanchic
Значит, поддержка dmraid не слетела. Тогда без LiveCD (чисто из grub rescue) можете сделать то же самое — ищите hd с /boot, чрутьтесь в него и далее по тексту…

21.10.2021

to Jbanchic
Значит, поддержка dmraid не слетела. Тогда без LiveCD (чисто из grub rescue) можете сделать то же самое — ищите hd с /boot, чрутьтесь в него и далее по тексту…

Если можно поподробнее….из grub rescue. Какие команды доступны и какие нужно запустить из rescue? Насколько я знаю, в этом режиме доступны всего 4 команды: ls, set, unset, insmod.
По разделам: gpt3 -скорее всего раздел EFI, gpt2 — /, gpt1 — swap.

Последнее редактирование: 21.10.2021

oko


21.10.2021

to Jbanchic
Не знаю, актуально ли еще, но вот тут испчерпывающе расписаны возможные варианты…
Вообще, у вас, конечно, комбо: dmraid + efi. Imho, в подавляющем большинстве случаев любого сервера и GPT (и, следовательно, EFI) не требуется, и аппаратный (и тем более фейковый) RAID проще заменить программным на базе mdadm. Если речь не идет о каких-нибудь сверхнагруженных системах и обязательном требовании BBU и доп.кэширования…

21.10.2021

Добрый вечер, когда уберут косяк с grub из обновлений? Уже две тачки легли.

22.10.2021

Добрый вечер, когда уберут косяк с grub из обновлений? Уже две тачки легли.

Похоже надо трясти техподдержку Астры. Похоже это реально проблема для тех, у кого есть RAID-массивы.

27.10.2021

Проблема с dmraid решена.
Долгое время не было возможности исправить ситуацию из-за того, что загруженная система не распознавала разделы массива, видела только сам массив без разделов. Не помог ни оригинальный дистрибутив ALSE, ни более новый ALCE.
В итоге загрузчик починен. Помог Linux Mint 20.2 Cinnamon загрузочный диск с офсайта. Все три раздела (EFI, root, swap) система увидела без добавления инструкции dmraid=true.
Решение:
1. Создается каталог, к примеру /mnt/1
2. Монтируется корневой каталог (в моем случае /dev/mapper/isw_xxxxx_xxxp2) в /mnt/1
3. mount -o bind /proc /mnt/1/proc
mount -o bind /sys /mnt/1/sys
mount -o bind /dev /mnt/1/dev
4. chroot /mnt/1
5. Если у вас UEFI загрузка, то дополнительно монтируется раздел с EFI (в моем случае /dev/mapper/isw_xxxxx_xxxp1) в раздел, в который он должен монтироваться в /etc/fstab (после chroot он легко смотрится cat /etc/fstab) (в моем случае в /boot/efi)
6. grub-install
7. update-grub

Загрузчик починен, система грузится.

P.S.:Единственное добавлю, что в некоторых случаях, если используется UEFI, в BIOS может появиться другой починенный раздел загрузки и сохранится старый, который не грузит grub. Лишний можно (да и нужно) удалить в BIOS.

12.11.2021

1. Ошибка error symbol: `grub_calloc` not found на дисках с UEFI.
2. Загрузиться в AstraLinux Orel 2.13.1 livecd или Linux Mint 20.2 livecd.
3. Список дисков:
# lsblk
4. Монтируем корневой раздел:
# sudo mount /dev/sda2 /mnt/
5. efi:
# sudo mount /dev/sda1 /mnt/boot/efi/
7. # sudo mount -o bind /sys/ /mnt/sys/
# sudo mount -o bind /proc/ /mnt/proc/
# sudo mount -o bind /dev/ /mnt/dev/
8. # sudo chroot /mnt/
9. # grub-install
10. # update-grub
11. Перезагрузка.

nnNGcdiVMJw.jpg

01.07.2022

Исправить GRUB UNKNOWN ERROR:
1. Список доступных разделов:
# ls
2. Просмотреть содержимое каждого раздела:
# ls (hd0,3)/
Если вы увидели папку boot, значит это наш раздел.
3. # set root=(hd0,3)
# set prex=(hd0,3)/boot/grub
4. # insmod normal
# normal

Если загрузились с текущего диска:

1. Устанавливаем GRUB на диск /dev/sda:
# sudo grub-install
2. # sudo update-grub
3. Перезагрузка.

  • 116.3 КБ
    Просмотры: 3 271

  • 18.6 КБ
    Просмотры: 3 160

В Astra Linux, как и в любом другом Linux, разработчики совершенно не следят за соответствием компонентов системы друг другу. Зачем тратить на это время? Есть полурабочий пакетный менеджер, вот пусть он разбирается с соответствием зависимостей. Сами зависимости кривые? Пускай тогда пользователь разбирается что там чему не соответсвует. В конце концов, если система будет работать правильно, за что тогда получать зарплату? Нет, система должна постоянно преподносить сюрпризы и требовать квалифицированного обслуживания. Так крутится бизнес.

Обновления Astra Linux 1.6 так же требуют нестандартных действий. Даже если само обновление сработает, велика вероятность того, что одна часть загрузчика Grub обновится на boot-разделе. А другая часть загрузчика, расположенная в начале диска, останется старой. И перейти из rescue-режима в режим загрузки Grub не получится по той простой причине, что старая версия на уровне вызываемых функций несовместима с обновленной частью. Об этом, при выполнении команд перехода в normal-режим, будет говорить следующая ошибка:

error: symbol `grub_calloc` not found

Если так произошло, средствами установленного Grub-а восстановить загрузку не получится. Надо пользоваться дополнительным компакт-диском с утилитами восстановления или загрузочной флешкой.

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

В появившемся меню выбрать пункт «Режим восстановления»:

Система потребует принять лицензионное соглашение. Далее запросит клавиши переключения языка ввода. Потом спросит имя компьютера. Вроде как это имя будет использоваться только для сеанса восстановления, если придется работать с сетью. То есть, данная настройка не должна повлиять на существующие настройки сети восстанавливаемой системы.

В конце концов режим восстановления попросит выбрать корневую файловую систему (на нее будет устанавливаться вторая часть Grub). Необходимо выбрать корневой раздел диска с установленной ОС. Здесь возможны два варианта:

  1. Если специальный boot-раздел не создавался, то выбирается просто корневой раздел с установленной ОС.
  2. Если создавался boot-раздел (это раздел, на котором есть каталог /boot), то следует выбирать его. Не следует путать boot-раздел и EFI-раздел, это разные вещи. В данном случае речь идет именно о boot-разделе.

Далее возможно два варианта: простая переустановка Grub, если в системе не использовалось загрузка EFI, и переустановка Grub для системы с EFI.

Простая переустановка Grub

Необходимо выбрать пункт «Переустановка системного загрузчика Grub».

Появится окно, в котором необходимо указать устройство для установки системного загрузчика. Имеется в виду, что надо указать место, в которое будет установлена первая (начальная) часть загрузчика Grub. Обычно, это MBR (т. е. главная загрузочная запись) первого диска, например /dev/sda.

После нажатия «Продолжить», обе части Grub-а будут переустановлены, и снова появится окно выбора действия, в котором надо выбрать «Перезагрузка системы».

Переустановка Grub с системой EFI (UEFI)

Возможен вариант, что в системе использовалась загрузка EFI. Тогда на запрос «Монтировать /boot/efi как отдельный раздел» необходимо ответить ДА.

В меню восстановления (при обнаружении EFI), будет показан пункт «Выполнить принудительную установку GRUB в путь съемных носителей EFI». Нужно выбрать именно его, а не «Переустановку системного загрузчика Grub»:

После чего необходимо перезагрузиться.

Примечание: в случае с EFI главный системный загрузчик (из MBR) для загрузки ОС не используется. Материнская плата сама считывает VFAT-раздел с EFI-загрузчиками, и передает выбранному в интерфейсе BIOS EFI-загрузчику управление. То есть, главный системный загрузчик, располагаемый в MBR, в этом режиме вообще не используется. Именно поэтому для варианта EFI надо выбирать пункт «Выполнить принудительную установку GRUB в путь съемных носителей EFI» а не «Переустановка системного загрузчика Grub».

Если данное решение не приводит к устранению проблемы, необходимо перезагрузиться в режиме восстановления, и проделать практически те же действия, но пункт установки Grub не выбирать:

  • Выбрать устройство (раздел), используемое в качестве корневой файловой системы
  • Для параметра «Монтировать /boot/efi как отдельный раздел» установить ДА
  • В меню выбрать «Запуск оболочки»

В запущенной оболочке выполнить команды:

sudo grub-install

sudo update-grub

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

chroot /target

После окончания установки и обновления параметров, необходимо нажать <Ctrl+D> и перезагрузить ПК.

  • Печать

Страницы: [1]   Вниз

Тема: «error: symbol ‘grub_calloc’ not found» при установке ubuntu budgie 21.04  (Прочитано 6622 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн
artem_2237

Хочу установить ubuntu budgie 21.04 рядом с windows 10. Скачал образ диска с официального сайта, записал на флэшку с помощью UltraIso. Перезагружаю компьютер, выбираю загрузку с флэшки. Дальше открывается grub, вверху надпись GNU GRUB 2.03, нужно выбрать ubuntu budgie и должна пойти установка. Выбираю Ubuntu budgie и получаю сообщение об ошибке «error: symbol ‘grub_calloc’ not found». Пробовал ставить Ubuntu 20.04.2.0 LTS, всё прекрасно установилось, никаких ошибок. Весь инет обшарил, хз что делать

« Последнее редактирование: 22 Июля 2021, 02:49:52 от artem_2237 »


Оффлайн
vladimirzhuravlev

Дальше открывается grub, вверху надпись GNU GRUB 2.04, нужно выбрать ubuntu budgie и должна пойти установка.

Специально выбрал образ не «живой», а только инсталляционный ? Винда в каком режиме установлена …уефай или легаси ? На флешке в загрузочном меню что выбираешь ?


Оффлайн
artem_2237


Пользователь добавил сообщение 21 Июля 2021, 22:38:53:


Специально выбрал образ не «живой», а только инсталляционный ? Винда в каком режиме установлена …уефай или легаси ? На флешке в загрузочном меню что выбираешь ?

Образ инсталяционной версии специально не выбирал, просто скачал с официального сайта https://ubuntubudgie.org/downloads/.
BIOS — Legacy.
В загрузочном меню есть 4 пункта:
    — Ubuntu Budgie
    — Ubuntu Budgie (safe graphics)
    — OEM install (for manufacturers)
    — Test memory
Я выбираю Ubuntu Budgie и получаю ошибку: «error: symbol ‘grub_calloc’ not found»
При выборе остальных пунктов та же ошибка


Пользователь добавил сообщение 21 Июля 2021, 22:46:03:


Пробовал ставить Ubuntu 20.04.2.0 LTS, тоже качал с официального сайта (https://ubuntu.com/download/desktop), то никаких ошибок не было

« Последнее редактирование: 21 Июля 2021, 22:46:03 от artem_2237 »


shamanhuev

BIOS — Legacy.

При винде десятке и легаси ?


Оффлайн
artem_2237

При винде десятке и легаси ?

Да, так сложилось


shamanhuev

Да, так сложилось

Я не про это. Вопрос , в каком режиме установлена винда и в каком записана флешка с дистром. Вдруг несовпадение. Чем писал , как писал?


Оффлайн
Дюшик

Можно попробовать записать флешку с ubuntu budgie другой программой, например Rufus -> Записать как dd образ.


Оффлайн
Папандопуло

Да, действительно, хлопцы от Великого Дракона готовят дерьмосборки (не включают загрузчик). У меня Ноут флешку ваще не видит после записи стандартными средствами. Используя UneBootIn, можно обойти этот касяк. Проверено. RUFUSом не проверял.
ЗЫ. UnetBootIn просит FAT32 на флешку.

« Последнее редактирование: 22 Июля 2021, 12:50:01 от Папандопуло »


Оффлайн
andytux

в каком режиме установлена винда и в каком записана флешка с дистром

На данном этапе — до лампочки. Эсли не совпадают, то скажется позже.

В загрузочном меню есть 4 пункта…

Судя по наличию в меню мемтеста, запускаешь в легаси режиме.
А если не побояться и запустить в ЕФИ-режиме. ГрубПС и грубЕФИ — это два, совершенно разных груба. Возможно ошибка только в грубПС. Ну и вариант, грузить другим грубом.
 Я не стал ничего, никуда и ничем писать. Просто взял и загрузился из исо-образа.

« Последнее редактирование: 22 Июля 2021, 13:28:54 от andytux »


shamanhuev

Специально скачал этот дистр. Нормально грузится , уефи.


Оффлайн
artem_2237

Попробовал установить budgie 20.04, всё с ходу заработало


  • Печать

Страницы: [1]   Вверх

#1 2020-07-30 18:21:23

Geoff 42
Member
Registered: 2016-12-15
Posts: 426  

[Solved]Grub failing to boot — grub_calloc not found

After upgrading Beowulf, my desktop will not boot. It tries to run grub and reports

symbol grub_calloc not found
Entering rescue mode
grub rescue>

I have found a reference to this on an Ubuntu site :-

https://www.mail-archive.com/ubuntu-bug … 13006.html

which refers to :-

https://askubuntu.com/questions/1263125 … -not-found

I am trying to work my way through this, with

ls
ls (hd0,msdos5)
set boot=(hd0,msdos5)
set prefix=(hd0,msdos5)/grub
insmod normal

but the last line reports that grub_calloc is not found.

Geoff

Last edited by Geoff 42 (2020-08-01 10:59:56)

#2 2020-07-30 18:30:32

Head_on_a_Stick
Member
From: London
Registered: 2019-03-24
Posts: 3,103  
Website

Re: [Solved]Grub failing to boot — grub_calloc not found

Looks like you need to attempt a reinstallation of the bootloader.

Load up a beowulf live ISO image then

sudo -i
mount /dev/sdXY /mnt
apt update && apt install grub-pc
grub-install --boot-directory=/mnt/boot /dev/sdX
reboot

^ That presumes you have a non-UEFI system and /boot is on the main root partition, replace X & Y with the drive letter and root partition number.


“Et ignotas animum dimittit in artes.” — Ovid, Metamorphoses, VIII, 18.

#3 2020-07-30 18:34:50

Geoff 42
Member
Registered: 2016-12-15
Posts: 426  

Re: [Solved]Grub failing to boot — grub_calloc not found

Thank you for that, I will have a look at that.

The url for giving some grub rescue commands was :-

https://www.easytechstutorials.com/how- … -rescue-2/

Rather than the ones above!

It does sound as though the problem is quite widespread, so it may be a good idea to not do any upgrades involving grub…

Geoff

#4 2020-07-30 18:39:24

Head_on_a_Stick
Member
From: London
Registered: 2019-03-24
Posts: 3,103  
Website

Re: [Solved]Grub failing to boot — grub_calloc not found

I don’t think you will be able to boot from the GRUB command line. Re-installing the bootloader should fix things.

See also https://bugs.launchpad.net/ubuntu/+sour … omments/16 (but my commands are simpler).


“Et ignotas animum dimittit in artes.” — Ovid, Metamorphoses, VIII, 18.

#5 2020-07-30 19:05:44

Geoff 42
Member
Registered: 2016-12-15
Posts: 426  

Re: [Solved]Grub failing to boot — grub_calloc not found

Thank you. I found a memory stick with Refracta Beowulf no dbus and managed to boot it and followed your commands.

I my case I mounted /dev/sda5 on /mnt.

As the problem seemed to be related to the update, I missed that step out, as well as the install grub-pc.
I did the

grub-install --boot-directory=/mnt /dev/sda
reboot

which worked. I gave the boot-directory as /mnt, because that partition is /boot rather than root.

I can now investigate things like grub versions etc.

Thank you again, helpful as ever

Geoff

#6 2020-07-30 19:34:34

Geoff 42
Member
Registered: 2016-12-15
Posts: 426  

Re: [Solved]Grub failing to boot — grub_calloc not found

Just for the record, looking in /var/log/apt/history.log, the latest upgrade was this morning :-

Start-Date: 2020-07-30  11:12:21
Commandline: apt full-upgrade
Upgrade: grub-common:amd64 (2.02+dfsg1-20, 2.02+dfsg1-20+deb10u1), grub-xen-bin:amd64 (2.02+dfsg1-20, 2.02+dfsg1-20+deb10u1), grub2-common:amd64 (2.02+dfsg1-20, 2.02+dfsg1-20+deb10u1), grub-pc:amd64 (2.02+dfsg1-20, 2.02+dfsg1-20+deb10u1), openjdk-11-jre-headless:amd64 (11.0.7+10-3~deb10u1, 11.0.8+10-1~deb10u1), grub-pc-bin:amd64 (2.02+dfsg1-20, 2.02+dfsg1-20+deb10u1), openjdk-11-jre:amd64 (11.0.7+10-3~deb10u1, 11.0.8+10-1~deb10u1), grub-xen-host:amd64 (2.02+dfsg1-20, 2.02+dfsg1-20+deb10u1), firefox-esr-l10n-en-gb:amd64 (68.10.0esr-1~deb10u1, 68.11.0esr-1~deb10u1), firefox-esr:amd64 (68.10.0esr-1~deb10u1, 68.11.0esr-1~deb10u1)
End-Date: 2020-07-30  11:13:33

So, I think that it was upgrading from the stable version to the stable-security version.

Geoff

#8 2020-07-30 19:52:07

Geoff 42
Member
Registered: 2016-12-15
Posts: 426  

Re: [Solved]Grub failing to boot — grub_calloc not found

This upgrade is referred to in :-

https://www.debian.org/security/2020/dsa-4735

which refers to a problem with grub_malloc and was suggested somewhere as being replaced with grub_calloc.

Geoff

#9 2020-07-30 21:27:13

Marjorie
Member
From: Teignmouth, UK
Registered: 2019-06-09
Posts: 186  

Re: [Solved]Grub failing to boot — grub_calloc not found

Very odd. I got the same version (2.02+dfsg1-20+deb10u1) of grub-common with unattended -upgrades (which is for security updates only) at 9:45 this morning and it works fine (legacy-bios, not EFI-signed).

#10 2020-07-31 05:00:58

Geoff 42
Member
Registered: 2016-12-15
Posts: 426  

Re: [Solved]Grub failing to boot — grub_calloc not found

It may be that it is related to my disk layout, where /boot is its own partition and maybe grub failed to do the grub-install correctly. When I can get to my desktop machine, I will check the output from apt to see if I missed an error message.

/boot is my only ext partition, the rest being handled by LVM, not encrypted.

Geoff

Last edited by Geoff 42 (2020-07-31 05:01:40)

#11 2020-07-31 09:52:26

Geoff 42
Member
Registered: 2016-12-15
Posts: 426  

Re: [Solved]Grub failing to boot — grub_calloc not found

I have now checked in /var/log/apt/term.log and I can see no error messages. The relevant part seems to be :-

Setting up grub-pc (2.02+dfsg1-20+deb10u1) ...
Installing for i386-pc platform.
Installation finished. No error reported.
Including Xen overrides from /etc/default/grub.d/xen.cfg
Generating grub configuration file ...
Found theme: /usr/share/desktop-base/grub-themes/desktop-grub-theme/theme.txt
Found background image: Lake_mapourika_NZ.tga

before it trawls through all of the kernels and other partitions and finally saying

Geoff

#12 2020-07-31 12:24:58

Marjorie
Member
From: Teignmouth, UK
Registered: 2019-06-09
Posts: 186  

Re: [Solved]Grub failing to boot — grub_calloc not found

Logged on this afternoon and unattended-upgrade has just updated grub-common.

Start-Date: 2020-07-31  12:10:26                                       
Commandline: /usr/bin/unattended-upgrade
Requested-By: marjorie (1000)
Upgrade: grub-common:amd64 (2.02+dfsg1-20+deb10u1, 2.02+dfsg1-20+deb10u2)
End-Date: 2020-07-31  12:10:28 

Maybe this fixes the problem?

https://linuxsecurity.com/advisories/de … e-17-52-37

Package        : grub2
Debian Bug     : 966554

The update for grub2 released as DSA 4735-1 caused a boot-regression
when chainloading another bootlaoder and breaking notably dual-boot with
Windows. Updated grub2 packages are now available to correct this issue.

For the stable distribution (buster), this problem has been fixed in
version 2.02+dfsg1-20+deb10u2.

We recommend that you upgrade your grub2 packages.

For the detailed security status of grub2 please refer to its security
tracker page at:
https://security-tracker.debian.org/tracker/grub2

Oddly ‘grub-common’ is the only grub package I have on this PC, my other (my mail server) has ‘grub-common’, ‘grub2-common’, ‘grub-pc’ and and ‘grub-pc-bin’. Both were fresh Beowulf Beta installs.

Last edited by Marjorie (2020-07-31 12:33:05)

#13 2020-07-31 14:17:39

Geoff 42
Member
Registered: 2016-12-15
Posts: 426  

Re: [Solved]Grub failing to boot — grub_calloc not found

I have fed some info into the Debian bug report.

https://bugs.debian.org/cgi-bin/bugrepo … bug=966575

but the deb10u2 does look like the fix and is available now on my machine, but I will wait until I hear from them in case they want any further info.

Geoff

Last edited by Geoff 42 (2020-07-31 14:18:07)

#14 2020-07-31 19:14:01

Vernon
Member
Registered: 2020-07-19
Posts: 89  

Re: [Solved]Grub failing to boot — grub_calloc not found

I have Devuan Beowulf installed on a Dell Vostro netbook with legacy bios and no other operating systems installed and I had/have no issues with either grub upgrades.

rub-common/now 2.02+dfsg1-20+deb10u1 i386 [installed,upgradable to: 2.02+dfsg1-20+deb10u2]
grub-pc-bin/now 2.02+dfsg1-20+deb10u1 i386 [installed,upgradable to: 2.02+dfsg1-20+deb10u2]
grub-pc/now 2.02+dfsg1-20+deb10u1 i386 [installed,upgradable to: 2.02+dfsg1-20+deb10u2]
grub2-common/now 2.02+dfsg1-20+deb10u1 i386 [installed,upgradable to: 2.02+dfsg1-20+deb10u2]
grub-common/stable-security,now 2.02+dfsg1-20+deb10u2 i386 [installed]
grub-pc-bin/stable-security,now 2.02+dfsg1-20+deb10u2 i386 [installed,automatic]
grub-pc/stable-security,now 2.02+dfsg1-20+deb10u2 i386 [installed]
grub2-common/stable-security,now 2.02+dfsg1-20+deb10u2 i386 [installed,automatic]

Based on browsing the Internet, I believe the grub bug only effects UEFI systems with multiple operating systems installed. Please don’t hesitate to provide corrections.

#15 2020-08-01 09:41:45

Geoff 42
Member
Registered: 2016-12-15
Posts: 426  

Re: [Solved]Grub failing to boot — grub_calloc not found

It does depend on your set-up, but is not just UEFI as my machine which broke has dos type disk labels.
I’m not sure whether it needs both multi-disk and/or multi-OS.
I have one SSD and one HDD and have the remnants of Win 7 although I haven’t booted that for a very long time.
I also use Xen for trying out OSs, so have several on the HDD in their own partitions, under LVM.

Geoff

#16 2020-08-01 10:28:25

Geoff 42
Member
Registered: 2016-12-15
Posts: 426  

Re: [Solved]Grub failing to boot — grub_calloc not found

Via the Debian bug report 966575 I got a message from Colin Watson saying :-

You should use «dpkg-reconfigure grub-pc» to update the system’s idea of
which disk(s) to install to in future, or this problem may recur in a
future upgrade.

So I tried :-

debconf-show grub-pc
  grub2/update_nvram: true
  grub-pc/install_devices_failed_upgrade: true
  grub2/kfreebsd_cmdline:
  grub-pc/chainload_from_menu.lst: true
  grub-pc/kopt_extracted: false
  grub-pc/install_devices_empty: false
  grub-pc/timeout: 5
  grub-pc/mixed_legacy_and_grub2: true
  grub-pc/postrm_purge_boot_grub: false
* grub2/linux_cmdline_default: earlyprintk=vga,keep vsyscall=emulate init=/sbin/openrc-init
  grub-pc/hidden_timeout: false
  grub-pc/partition_description:
* grub-pc/install_devices: /dev/disk/by-id/ata-WDC_WD10EZRX-00A8LB0_WD-WCC1U2741701
  grub-pc/install_devices_disks_changed:
  grub2/kfreebsd_cmdline_default: quiet
  grub-pc/install_devices_failed: false
* grub2/linux_cmdline:
  grub2/device_map_regenerated:
  grub2/force_efi_extra_removable: false
  grub-pc/disk_description:

which asked 3 questions, 2 about the command line and then about where to install.
It had selected /dev/sdb and I added /dev/sda (with the spacebar) :-

 The grub-pc package is being upgraded. This menu allows you to select which devices you'd like grub-install to be automatically run for, if any.
 Running grub-install automatically is recommended in most situations, to prevent the installed GRUB core image from getting out of sync with GRUB modules or grub.cfg.
 If you're unsure which drive is designated as boot drive by your BIOS, it is often a good idea to install GRUB to all of them.
 Note: it is possible to install GRUB to partition boot records as well, and some appropriate partitions are offered here. However, this forces GRUB to use the blocklist
 mechanism, which makes it less reliable, and therefore is not recommended.
 GRUB install devices:
    [*] /dev/sda (240057 MB; Corsair_Force_GS)
    [ ] - /dev/sda5 (262 MB; /boot)
    [ ] /dev/sda6 (239685 MB; LVM PV O44JvK-Gagl-jJ0w-aWwi-3qn0-Y2no-fbwG8Q on /dev/sda6)
    [*] /dev/sdb (1000204 MB; WDC_WD10EZRX-00A8LB0)
    [ ] /dev/sdb6 (882340 MB; LVM PV p10DED-cZEt-K24W-0Ov2-itdA-HOI8-EquJNg on /dev/sdb6)
    [ ] /dev/dm-0 (21474 MB; SSD0-root)
                                                                                   <Ok>

It then continues

Installing for i386-pc platform.
Installation finished. No error reported.
Installing for i386-pc platform.
Installation finished. No error reported.
Including Xen overrides from /etc/default/grub.d/xen.cfg
Generating grub configuration file ...
Found theme: /usr/share/desktop-base/grub-themes/desktop-grub-theme/theme.txt
Found background image: Lake_mapourika_NZ.tga
Found linux image: /boot/vmlinuz-4.19.0-9-amd64
... several kernels later ...
Found Windows 7 on /dev/sda1
Found Windows 7 on /dev/sdb1
...
Found Debian GNU/Linux jessie/sid on /dev/mapper/HDD0-xenguest1--disk
done

My system can still boot ;-) but looks as though it will now install onto both disks.

debconf-show grub-pc now reports :-

* grub-pc/install_devices: /dev/disk/by-id/ata-Corsair_Force_GS_133379020000987300E8, /dev/disk/by-id/ata-WDC_WD10EZRX-00A8LB0_WD-WCC1U2741701

Geoff

#17 2020-08-01 10:44:00

Geoff 42
Member
Registered: 2016-12-15
Posts: 426  

Re: [Solved]Grub failing to boot — grub_calloc not found

Colin Watson writes in the bug report :-

This is a long-standing problem: we get a scattering of reports of the
same general kind with every GRUB upgrade that changes the binary
interface between GRUB’s core image and modules in some way, although
the exact details depend on the upgrade in question.  The situation
certainly needs to be improved.

However, the problem is not with the actual changes made in this version
of GRUB.  Rather, it’s a latent configuration problem on your system
(and on the systems of other people affected by this) that is triggered
by the act of making *any* change to GRUB that causes new modules in
/boot/grub not to be compatible with old core images in the boot sector
that your firmware jumps to when booting your machine.  This problem
happens on systems that are configured to run grub-install to a target
device that is not actually the one that your firmware uses to boot your
computer.

This configuration error is normally the result of something like
changing disks around without telling the GRUB packaging about it, so it
continues to install to an old device without realising it isn’t the one
that your firmware is configured to boot from any more.  Sometimes it’s
the result of a bug in some kind of installation or cloning process
instead.  Unfortunately it is rarely possible to tell exactly what
caused it from any information that still exists on the systems in
question; sometimes the affected users have an idea what might have
happened and sometimes they don’t.  The packaging tries to detect some
problems along these lines — I did considerable work on this way back in
2010 to try to improve the situation — and the volume of reports of this
kind is much lower than it used to be as a result, but it still happens
sometimes.

It is also mentioned that this is not a UEFI problem, although someone with UEFI was reporting a(nother) problem.

Geoff

#18 2020-08-01 10:57:01

Geoff 42
Member
Registered: 2016-12-15
Posts: 426  

Re: [Solved]Grub failing to boot — grub_calloc not found

Following the dpkg-reconfigure grub-pc I have now upgraded grub to the deb10u2 version and it still boots.

Geoff

#19 2020-08-07 13:57:14

uther
Member
Registered: 2019-05-16
Posts: 65  

Re: [Solved]Grub failing to boot — grub_calloc not found

I’ve encountered the same problem as OP. However I have /boot on separate partition, and the rest part of the OS is encrypted.
Will this method work or should I change anything? I don’t want to reinstall the whole system, as this is my main work machine.
I can boot in with live-iso. Thanks in advance.

sudo -i
mount /dev/sdXY /mnt
apt update && apt install grub-pc
grub-install --boot-directory=/mnt/boot /dev/sdX
reboot

So I’ve mounted /boot on /mnt and tried reinstall grub, but apt install grub-pc failes on nvme on which /boot partition is located.

root@devuan:~# grub-install --root-directory=/mnt/ /dev/nvme0n1
Installing for i386-pc platform.
grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub-install: warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
grub-install: error: will not proceed with blocklists.

I’m not very familiar with GRUB nor UEFI/BIOS internals. I found that above issue can be solved by creating small partition and flagging it with ‘bios_grub:
https://blog.hostonnet.com/grub-install … e-possible
https://askubuntu.com/questions/671809/ … -partition

How to do it if all disc space is already taken? I have LUKS FDE on entire drive beside /boot. Should I cut part of /boot partition then? Also I have amd64 system and grub installer is i386 — is it normal?

Last edited by uther (2020-08-07 20:07:59)

#20 2020-08-07 17:57:59

fsmithred
Administrator
Registered: 2016-11-25
Posts: 2,182  

Re: [Solved]Grub failing to boot — grub_calloc not found

Boot with live-iso, shrink the /boot partition and make a new partition. Do not format the new partition with a filesystem. (Unformatted is the last choice in gparted’s dropdown list of formats.) Give it bios_grub flag (or type ef02 if you use gdisk).

You need at least 1MB for the bios_grub partition. I usually give it 2MB so I don’t have to worry about what kind of MB I’m using.

#21 2020-08-07 18:45:07

uther
Member
Registered: 2019-05-16
Posts: 65  

Re: [Solved]Grub failing to boot — grub_calloc not found

Thank you fsmithred. That fixed the issue.

Last edited by uther (2020-08-07 20:07:34)

#22 2020-08-07 20:42:55

Head_on_a_Stick
Member
From: London
Registered: 2019-03-24
Posts: 3,103  
Website

Re: [Solved]Grub failing to boot — grub_calloc not found

uther wrote:

So I’ve mounted /boot on /mnt and tried reinstall grub, but apt install grub-pc failes on nvme on which /boot partition is located.

root@devuan:~# grub-install --root-directory=/mnt/ /dev/nvme0n1
Installing for i386-pc platform.
grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.
grub-install: warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
grub-install: error: will not proceed with blocklists.

My instructions were non-UEFI specific and if you have a GPT disk then you almost certainly had a UEFI system so you should have used

# apt update
# apt install grub-efi-amd64 # or grub-efi-ia32 for 32-bit UEFI implementations
# mount /dev/sdXY /mnt
# mkdir /efi
# mount /dev/sdXZ /efi
# grub-install --target=x86_64-efi --efi-directory=/efi --boot-directory=/mnt/boot
# umount /efi
# rmdir /efi
# reboot

Replace X with the drive letter, replace Y with the root partition number (or the /boot partition if that is separate, in which case omit /boot from the —boot-directory switch) and replace Z with the number for the EFI system partition.

uther wrote:

How to do it if all disc space is already taken?

I use sectors 34-2047 for BIOS boot partitions, that space should be free in a correctly-aligned disk.

uther wrote:

Also I have amd64 system and grub installer is i386 — is it normal?

The i386-pc bit refers to the non-UEFI bootloader rather than the system architecture.


“Et ignotas animum dimittit in artes.” — Ovid, Metamorphoses, VIII, 18.

#23 2020-08-28 10:19:12

jaromil
Member
Registered: 2016-11-28
Posts: 27  
Website

Re: [Solved]Grub failing to boot — grub_calloc not found

Head_on_a_Stick wrote:

Looks like you need to attempt a reinstallation of the bootloader.

Load up a beowulf live ISO image then

sudo -i
mount /dev/sdXY /mnt
apt update && apt install grub-pc
grub-install --boot-directory=/mnt/boot /dev/sdX
reboot

^ That presumes you have a non-UEFI system and /boot is on the main root partition, replace X & Y with the drive letter and root partition number.

I have stumbled into this horrible Grub bug myself and tried recovery from the Devuan Live 3.0 Beowulf image.

It worked! but for those in my same situation is worth knowing this slight variation:

I do not have EFI (and do not like to use UEFI) but the latest Grub keeps selecting it by default.

In my case this command worked:

 grub-install --target=i386-pc --boot-directory=/mnt/boot /dev/sdX 

Else I kept receiving an error message from grub-install mentioning the boot directory «is not an EFI partition».

As you mentioned later in this thread, i386-pc does not relate to the CPU architecture, this is also required for AMD64 platforms.


Not reading often here, if urgent contact me via E-Mail: J @ Dyne.org
GPG fingerprint: 6113 D89C A825 C5CE DD02  C872 73B3 5DA5 4ACB 7D10

TL;DR: Бездумный distupgrade на 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, описанной выше

Repair GRUB after BootHole broken patch

Once rebooted after patching, you will kindly greated by error: symbol 'grub_calloc' not found, entering rescue mode and way to boot the OS anymore…

The thing become even more horrible if you are using an encrypted partition plus LVM

You can skip the steps 2 and 4 if you just have a normal partition scheme with no encryption or LVM.

Recovery steps

Step 1: Boot with the OS live-cd

Step 2: Unlock the encrypted disk

Just open the file browser, select your encrypted drive and enter passphrase to unlock it when prompted.

Step 3: Analyze encrypted disk structure

Just use:

# Become root
sudo su -

# List block devices
lsblk

# List all disks / partitions
fdisk -l

It will be usefull for the next steps.

Skip the next step if you have a normal partition and no LVM and go directly to step 5.
Just replace /dev/mapper by /dev/your-partition-found-with-fdisk.

Step 4: Load LVM volume

You might need to install the lvm2 package to proceed:

# Update your package cache
apt update

# Install required lvm2 package
apt install lvm2

# Scan volume groups
vgscan -v

# Activate volume group
vgchange -ay -v

# Scan everything
pvs ; vgs ; lvs

# Display logical volume found
lvdisplay

In my case, it was /dev/mapper/data-root that I needed to mount.

Step 5: Mount found LVM partition

Now that the root partition is found, you’ll need to map it to your live OS:

# Create the 'rescue' folder
mkdir -v /rescue

# Mount the 'root' partition found
mount -v /dev/mapper/data-root /rescue

# Mount the 'boot' partition found with 'fdisk'
mount -v /dev/vda1 /rescue/boot

# Bind mount required folders for later 'chroot'
for fs in /proc /sys /run /tmp /dev ; do mount -v --bind "$fs" "/rescue${fs}" ; done

Step 6: Repair GRUB

Once everything has been mounted correctly, we can setup the chroot and proceed to the GRUB repair:

# Setup 'chroot'
chroot /rescue

# Repair GRUB (by reinstalling it)
grub-install /dev/vda1

# You should get this as final result
Installing for i386-pc platform.
Installation finished. No error reported.

# Leave 'chroot'
exit

Step 7: Unmount everything and restart

Now that GRUB has been reinstalled, you can unmount everything and restart your computer:

# Move to the root path
cd /

# Unmount everything
for fs in /proc /sys /run /tmp /dev ; do umount "/rescue${fs}" ; done
umount -v /rescue/boot
umount -v /rescue

# Delete 'rescue' folder
rm -v /rescue

# Restart your computer
reboot

Conclusion

If all steps went without any issues, you should get your computer OS booting again as expected 😉.

References

  • https://askubuntu.com/a/1264071
  • https://wiki.ubuntu.com/SecurityTeam/KnowledgeBase/GRUB2SecureBootBypass
  • https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1889509
  • https://www.cyberciti.biz/faq/linux-mount-an-lvm-volume-partition-command/
  • https://gist.github.com/uglide/5f6f23903dac6b5f2567

Понравилась статья? Поделить с друзьями:
  • Error sxs assembly not found
  • Error switch quantity not an integer
  • Error switch jumps into scope of identifier with variably modified type
  • Error swap was not declared in this scope
  • Error swap papyrus