Error symbol grub calloc not found astra linux как восстановить

Здравствуйте. После обновления 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 on Ubuntu boot [closed]
  2. 2 Answers 2
  3. How to fix a grub boot error : «symbol ‘grub_calloc’ not found
  4. Не загружается Linux, чиним загрузчик GRUB
  5. Что такое Grub
  6. От чего могут возникнуть проблемы
  7. Восстановление Grub с помощью LiveCD/USB
  8. Как создать LiveCD/USB
  9. С помощью Rufus:
  10. С помощью Etcher:
  11. Восстановление с помощью chroot
  12. Восстановление Grub в rescue mode
  13. Восстановление Grub с помощью утилиты Boot repair
  14. Выводы
  15. How to fix a grub boot error : «symbol ‘grub_calloc’ not found
  16. MX Linux Forum
  17. [SOLVED] After the update of grub: impossibility to boot; symbol ‘grub_calloc’ not found
  18. [SOLVED] After the update of grub: impossibility to boot; symbol ‘grub_calloc’ not found

error: symbol ‘grub_calloc’ not found on Ubuntu boot [closed]

Want to improve this question? Update the question so it’s on-topic for Stack Overflow.

I am developing a Java application to run on Windows and Linux, instead of virtual machines, I need to use dual boot, however, after updating Ubuntu 20.04 LTS weekly, I’m trying to restart the machine and the terminal appears with an error message:

photo

2 Answers 2

You need to reinstall grub to your boot partition, which can be done as follows:

boot to a linux live system (e.g. Ubuntu Desktop).

assuming your actual boot partition is /dev/sda1 run the following:

restart your system, do not forget to remove the live image.

Actually, there is no need to reinstall grub. The root cause of the problem is that the second stage of grub is not properly updated by the installation (upgrade process).

My system is KDE Neon (Ubuntu 18.04 LTS underneath), the grub package upgrade process was copying a file called grubx64.efi into /boot/efi/neon and grub was looking for /boot/efi/BOOT/bootx64.efi.

As soon as I copied /boot/efi/neon/grubx64.efi over /boot/efi/BOOT/bootx64.efi my system booted again, using the latest grub from the Ubuntu upgrades (2.02-2ubuntu8.17). For this, I had to boot with a live distro (I used latest Mint). It is faster, easier and more secure than reinstalling a previous version of grub.

Why is this happening? I do not know yet. If I have some more time for deeper investigations, I’ll update this answer.

My system seems to be too complicated for Boot-repair (dual NVME disks, RAID1, fully encrypted, LVM).

Источник

How to fix a grub boot error : «symbol ‘grub_calloc’ not found

Просто запустил последнюю партию обновлений 20.04 (Xubuntu), и теперь я получаю ошибку GRUB:

Отредактировано, чтобы добавить:

Хорошо, спасибо многим людям! Вот что, я думаю, теперь я понимаю.

Основная причина проблемы заключается в том, что обновление grub не гарантировало, что детали были обновлены. В идеале, неспособность сделать это должна привести к сбою установки grub, и система должна быть возвращена в безопасное состояние. Такого не бывает. 1279 Для меня это все еще немного загадка. Все, что нужно сделать обновлению по умолчанию, это поместить каждую часть в текущую, потому что, очевидно, это сработало. Если места установки / диски определяются конфигурацией, и одно из этих мест не может быть достигнуто, то каким-то образом возникло несоответствие между этими данными конфигурации и реальностью. Это может не показаться проблемой, если между частями не было введено никакой новой зависимости.

Все варианты решения включают переустановку grub, чтобы обеспечить выравнивание двух частей. На самом деле нет необходимости возвращаться к предыдущей версии (хотя это будет работать), потому что нарушена не сама среда выполнения grub. Существует множество способов добиться этого, в зависимости от вашей среды, но запуск живого диска Boot-repair мне помог.

Для предотвращения такого смещения в будущем может быть полезно убедиться, что установщик grub в вашей системе настроен для установки на правильные устройства.

Это обновление устраняет некоторые важные ошибки ( Смотрите Ubuntu Security Notice 4432 ). Если вы вернули grub для решения этой проблемы, имейте в виду, что вы подвержены этим проблемам.

Источник

Не загружается Linux, чиним загрузчик GRUB

grub2 cli large

Любите экспериментировать? Наверняка вы когда-либо пытались произвести какие-то действия со своей Linux-системой, причем не так важно какие были цели: изучение и познание новых возможностей или же какая-то более конкретная цель, в виде исправления той или иной ошибки. В любом случае, при работе с дистрибутивами Linux, для загрузки которых, в большинстве случаев, и используется Grub, с последним могут возникать неприятные проблемы, ввиду которых дальнейшая эксплуатация системы просто-напросто невозможна. В этой статье вы узнаете, что делать, если не загружается Linux. Как вести себя в подобной ситуации и какие действия производить, чтобы починить загрузчик Grub. Пожалуй, начнем.

Что такое Grub

GRUB screenshot

От чего могут возникнуть проблемы

Если, например, сделать наоборот, то как раз-таки Grub будет поврежден; система будет грузиться напрямую в Windows, а дистрибутив Linux останется недоступным.

Grub может сломаться и по другим причинам. Например, из-за попыток ручного изменения параметров запуска (при недостатке опыта), в таком случае нужно будет либо вручную убирать лишнее, либо полностью переустанавливать Grub.

Восстановление Grub с помощью LiveCD/USB

Для этого способа нам понадобится флешка с дистрибутивом Linux на борту. Подойдет любой: от Ubuntu, Arch или даже Linux Mint. Здесь нужен только терминал, поэтому подойдет даже версия без графической оболочки.

Как создать LiveCD/USB

Само собой, нам понадобится носитель, на который мы временно (а может и нет) запишем систему. Сохраните все важные файлы, которые были на этом носителе, после чего (имеется ввиду на другом ПК, желательно под управлением Windows) запишите загруженный образ дистрибутива на носитель. В качестве примера мы будем использовать дистрибутив Ubuntu.

Идем на официальную страницу загрузки. Загружаем любую понравившуюся версию (лучше взять новейшую для десктопа), после чего записываем ее на USB/CD.

С помощью Rufus:

Последняя версия приложения доступна на официальном сайте. Сразу после загрузки и запуска/установки мы увидим такое окно:

rufus ru

Вставляем носитель, выбираем его в соответствующем меню. Далее выбираем нужную схему раздела и тип системного интерфейса, и после уже открываем файловый менеджер с помощью этой кнопки:

rufus ru1

Находим загруженный образ через менеджер, после чего жмем «Старт».

С помощью Etcher:

Опять же, идем на официальный сайт, где скачиваем последнюю версию утилиты. Далее делаем все так, как показано на этой гифке:

screenshot11

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

Открываем таблицу разделов с помощью команды:

Примерно такая таблица будет выведена на экран:

По этой таблице мы видим, что Linux, в нашем случае, расположен на разделе /dev/sda1.

С помощью следующей команды мы смонтируем этот раздел в /mnt:

Теперь, для записи grub в MBR, нужно ввести следующую команду:

Если нужно только восстановить MBR диска (после переустановки Windows, к примеру), то этих действий будет вполне достаточно.

Если же необходимо обновить и меню grub (после установки Windows), то нужно выполнить еще и эту команду:

Вот и все, восстановление закончено!

Восстановление с помощью chroot

Помимо вышеописанного способа, при восстановлении Grub с помощью LiveCD можно использовать и этот. Тут мы будем использовать утилиту chroot.

Здесь нам, опять же, понадобится таблица разделов. Вводим уже известную команду:

В выводе снова будет эта таблица. Теперь нам надо присмотреться к ней еще внимательнее.

В этом способе нам необходимо примонтировать системный, а также нескольких других важных разделов. Для этого вводим эти команды:

Обратите внимание, что если если разделы /boot или /var находятся отдельно, то Вам нужно будет примонтировать их в /mnt/boot и /mnt/var.

Далее мы переходим в окружающую среду chroot с помощью команды:

И теперь, наконец-таки переустанавливаем Grub с помощью следующей команды:

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

Если все прошло успешно, выходим из chroot, используя команду:

Далее нужно отмонтировать все разделы. Для этого вводим в терминал:

В случае, если вы монтировали раздел /boot введите команду:

Теперь перезагружаем систему с помощью:

Можно также обновить меню Grub, используя команду:

Восстановление Grub в rescue mode

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

Само восстановление проходит таким образом: сначала мы подгружаем все модули, чтобы открыть доступ ко всей функциональной части Grub, после чего запуститься с нужного раздела. Надо понимать, что Grub состоит из двух частей:

Одна из этих частей (первая) записана в MBR диска. В ней присутствует базовый функционал и ничего больше (консоль в rescue mode).

Стало быть, нам нужно определить, в каком разделе находится вторая часть Grub (находится в каталоге /boot/grub), и после чего подгрузить все недостающие модули. А вот уже после этого мы сможем запустить загрузчик с нужного раздела. В rescue mode есть всего четыре команды:

Для начала вводим следующую команду:

В выводе будет что-то подобное:

В некоторых случаях Grub неправильно опеределяет файловые системы находящиеся на разделах дисков. В данном примере загрузчик показывает их как msdos. Мы должны попытаться угадать диски, которые видим. В примере доступно два диска. Диск с индексом 0 содержащий три раздела, и диск с индексом 1 содержащий два раздела. Если вы знаете структуру своих дисков, определить нужный труда не составит.

С помощью этих команд мы приказываем системе использовать какой-то конкретный диск, для выполнения всех остальных операций (в нашем случае, это диск (hd0,1)). Чтобы проверить есть ли на данном диске загрузчик, введем эту команду:

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

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

Чтобы закрепить результат (и не проделывать все то же самое после перезапуска ПК), нужно зайти в терминал своего дистрибутива Linux, где с root правами выполнить следующую команду:

Если операционная система расположена на разделе с файловой системой btrfs, то нам необходимо выполнить следующие команды:

И подгрузить модули:

Ну и теперь запустить GRUB:

Восстановление Grub с помощью утилиты Boot repair

1335260967

С помощью этой замечательной утилиты вы сможете восстановить загрузчик всего в пару кликов. Как видно из скриншота, утилита имеет собственный GUI, ее использование не вызовет трудностей.

Чтобы установить boot repair, вы можете воспользоваться одним из приведенных способов:

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

В утилите будет доступно два варианта на выбор:

Recommended repair исправляет большую часть известных ошибок, которые могли бы возникнуть при запуске. С его помощью вы сможете пофиксить и загрузчик Grub.

Create a BootInfo summary создает Boot-Info-Script – скрипт, который позволяет диагностировать большинство проблем при загрузке.

Здесь же есть и Advanced options. Он включает в себя варианты для восстановления и настройки загрузчика Grub2 (загрузка по-умолчанию, опции загрузки ядра, отображение или скрытие GRUB при загрузке, удаление GRUB). С помощью этих же инструментов, вы можете восстановить MBR и т.д.

Вам обязательно стоит заглянуть на официальный сайт Boot Repair. Там вы сможете найти более подробную информацию обо всех возможностях и особенностях программы. Там же будет доступна информация о выходе новых версий: фиксах и улучшениях самой утилиты, а также многом и многом другом.

Выводы

Возможно вас заинтересуют и другие похожие материалы про починку загрузчика Grub2. Например, в этом материале вы узнаете, как починить GRUB2 если Ubuntu не хочет загружаться. Там более подробно рассказывается, как фиксить груб с помощью утилиты Boot Repair, возможно вам стоит заглянуть туда, если вы не поняли что-то из этого материала. Что же, ну а на сегодня это все. Надеюсь, что данный материал помог вам разобраться в ошибках. Что, в свою очередь, поможет вам их решить.

Источник

How to fix a grub boot error : «symbol ‘grub_calloc’ not found

Just ran the latest batch of updates on 20.04 (Xubuntu), and now I’m getting a GRUB error:

I’m dropped into the ‘grub rescue’ shell, but have no idea what to do there that might be useful. To me, ‘symbol not found’ implies some sort of build error with the grub package, but I don’t really know how grub works. I noticed that this update also included ‘firmware’, not sure if that could be related. Is my best bet just to boot from a live CD and see if I can roll back the update to grub somehow?

The visible, run-time problem occurs when these parts are not aligned, and the function grub_calloc is not supplied. It’s not 100% clear to me if grub_calloc belongs in the second, larger part or the first. I would have expected the second, but the grub build system is a work of considerable art, so I don’t know :).

The root cause of the problem is that the grub update has not ensured that both parts have been updated. Ideally, failure to do this should cause grub installation to fail, and the system should be reverted to a safe state. This does not happen.

All flavours of solution involve reinstalling grub to ensure that the two parts are aligned. It’s not actually necessary to go back to the previous version ( although that will work ), because it’s not the grub runtime per se that is broken. There are numerous ways to achieve this, depending on your environment, but running the Boot-repair live disk worked for me.

It may be useful, for the purpose of avoiding such a misalignment in future, to ensure that the grub installer on your system is configured to install to the correct devices.

This update resolves some important bugs (See Ubuntu Security Notice 4432). If you have reverted grub to resolve this problem, be aware that you are exposed to these issues.

Источник

MX Linux Forum

Support for MX and antiX Linux distros

News
— MX Linux on social media: here
— New Forum Features, Marking Solved and Referencing a User: here

[SOLVED] After the update of grub: impossibility to boot; symbol ‘grub_calloc’ not found

[SOLVED] After the update of grub: impossibility to boot; symbol ‘grub_calloc’ not found

#1 Post by laprouteuse » Fri Sep 11, 2020 11:25 am

Since July I made no update of my system where antix is installed on the bare metal. I just made it.
During the update made in TTY2, grub-pc asked me on which device I want to launch automatically grub-install. Since my partition only contains a swap partition, an home one and a root partition with a flag like «boot_legacy» or «legacy_boot» (I cannot remember exactly but I could remember something like it that I saw on gparted during the update). I thought to chose the root one where the boot seems to take place is the right decision.
I do not know if it makes a difference or not but USB flash drive was connected on my laptop and is still connected on it.
After the update, I rebooted and after the boot, I can see:

Apparently trying something with a live USB could be a solution? I am now creating one.
I made a Timeshift backup before the update but I do not know if it can be helpful to use for it.
Thanks a lot for your attention.

edit: I had also difficulties to select the proper device where grub-install should be installed, and I made it by doing a right click on the line that I wanted to select (but I think that it makes no difference regarding this issue).

Источник

This document (000019679) is provided subject to the disclaimer at the end of this document.

Environment

SUSE Linux Enterprise Server 12 SP5
SUSE Linux Enterprise Server 15 SP2
SUSE Linux Enterprise Server for SAP Applications 12 SP5
SUSE Linux Enterprise Server for SAP Applications 15 SP2

Situation

System was patched to fix the «Boothole» security issue (shim, grub2, mokutils plus additional needed patches like kernel, etc…)
Following reboot, the system is stuck in bootloader, saying:

grub2 error: symbol `grub_calloc' not found 

 

Resolution

This must be fixed out of the rescue system.
Insert a SLES installation medium matching the installed (!) OS and boot the Rescue system.
Follow the instructions of https://www.suse.com/support/kb/doc/?id=000018770  and chroot into the installed OS.

  • Check if the mandatory filesystems are mounted (compare /etc/fstab with «mount» output)
  • Check if  /etc/default/grub_installdevice  contains the device where the root volume/filesystem is on.
    • NOTE: grub_installdevice is a DISK device, not a partition! Also do not try to install the grub2 bootloader onto a disk without partitiontable. Grub2 needs space on the device to embed it’s code and that can only happen if there is a partition table on the disk.

Use  « lsblk -f «  command to determine the correct root disk.

If the correct device is found it is sufficient to reinstall the bootloader manually.
Examples (do NOT copy and paste, always use your system’s devices!):

grub2-install /dev/sda
grub2-install /dev/disk/by-id/scsi-361866d….
grub2-install /dev/mapper/mpatha

Should the disk name have changed (e.g. from sda to sdb for some reason) make sure all partitions in fstab use correct disk devices or the next reboot will end in emergency target as one or more partitions could not be found. In that case run «dracut -f —kver <installed kernel version>» to update initramfs.
Hint: use the directory name in /lib/modules/ like:

dracut  -f —kver  4.12.14-197.29-default

If the system is UEFI/EFI there is a specific grub install command for that:
/usr/sbin/shim-install —config-file=/boot/grub2/grub.cfg

Cause

grub2 error: symbol `grub_calloc' not found 

This error message points to a generic problem where the bootloader code itself is not compatible with the bootloader modules, hence the symbol error.

There are multiple reasons why this can happen:

  • Bootloader is not installed on the disk with the root and/or boot filesystem
  • /etc/default/grub_installdevice file contains false information
  • /usr, /boot and/or /boot/efi filesystems out of space
  • the copy operation from /usr/share/grub2/ to /boot/grub2 failed for some reason
  • Bootloader installation failed after patching and system is using the old bootloader code with the new bootloader modules
  • UEFI issues like broken loader entries

Additional Information

In general, if a system fails to boot with errors like: : grub2 error: symbol `XYZ’ not found  almost always there is a mismatch between bootloader code itself and the rest of the bootloader files. Reinstallation of the bootloader (grub2-install <device> ) usually fixes this.

grub2 error: module`XYZ’ not found   points to a different problem. There the bootloader files /boot/grub2/i386-pc are not where the bootloader expects them to be. Note that kernel device names like sda, sdb, etc are not necessarily persistent across reboots and may change at any reboot. Here check carefully the disk names and use unique names like /dev/disk/by-id/scsi-36… wherever possible.

Note: older VMware ESX versions do not generate unique disk names in the guests by default. To enable uuids, follow this TID https://www.suse.com/support/kb/doc/?id=000016951 

Disclaimer

This Support Knowledgebase provides a valuable tool for SUSE customers and parties interested in our products and solutions to acquire information, ideas and learn from one another. Materials are provided for informational, personal or non-commercial use within your organization and are presented «AS IS» WITHOUT WARRANTY OF ANY KIND.

  • Document ID:000019679
  • Creation Date:
    23-Sep-2021
  • Modified Date:11-Oct-2021
    • SUSE Linux Enterprise Server
    • SUSE Linux Enterprise Server for SAP Applications

< Back to Support Search

For questions or concerns with the SUSE Knowledgebase please contact: tidfeedback[at]suse.com

#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

Понравилась статья? Поделить с друзьями:
  • 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