54 votes

Comment réparer une erreur de démarrage de Grub : "symbole 'grub_calloc' introuvable"

Je viens de lancer la dernière série de mises à jour sur la version 20.04 (Xubuntu), et maintenant je reçois une erreur GRUB :

Le symbole 'grub_calloc' n'a pas été trouvé

Je suis tombé dans l'invite de commande 'grub rescue', mais je ne sais pas quoi faire là-bas qui pourrait être utile. Pour moi, 'symbole non trouvé' implique une sorte d'erreur de compilation avec le paquet grub, mais je ne sais pas vraiment comment grub fonctionne. J'ai remarqué que cette mise à jour incluait également des 'firmwares', je ne sais pas si c'est lié. Est-ce que ma meilleure option serait juste de démarrer à partir d'un CD live et de voir si je peux revenir en arrière sur la mise à jour de grub d'une façon ou d'une autre ?

Edité pour ajouter :

D'accord, merci à beaucoup de personnes ! Voici ce que je pense avoir compris maintenant.

  1. Sur les systèmes 'non-UEFI', grub est installé en deux parties distinctes. La première, la plus basique, est la partie démarrée au démarrage. Mais pour la plupart de ses fonctionnalités, il a besoin de la deuxième partie. Ces parties doivent être alignées - aucune des parties ne doit nécessiter de fonctionnalités de l'autre partie qui ne soit pas réellement présente.

    Le problème visible en temps d'exécution survient lorsque ces parties ne sont pas alignées, et la fonction grub_calloc n'est pas fournie. Il n'est pas totalement clair pour moi si grub_calloc appartient à la deuxième partie, plus grande, ou à la première. J'aurais pensé à la deuxième, mais le système de compilation de grub est un travail d'art considérable, donc je ne sais pas :).

  2. La cause profonde du problème est que la mise à jour de grub n'a pas assuré que les deux parties ont été mises à jour. Idéalement, l'échec de le faire devrait entraîner un échec de l'installation de grub, et le système devrait être ramené à un état sûr. Ce n'est pas le cas.

    C'est en fait encore un peu mystérieux pour moi. Tout ce que la mise à jour doit faire par défaut est de mettre chaque partie là où se trouvent les parties actuelles, car évidemment cela fonctionnait. Si les emplacements/de lecteurs d'installation sont configurés, et que l'un de ces emplacements ne peut pas être atteint, alors une incompatibilité est survenue entre ces données de configuration et la réalité. Cela pourrait ne pas se manifester comme un problème tant qu'aucune nouvelle dépendance n'a été introduite entre les parties.

Toutes les solutions possibles impliquent la réinstallation de grub pour s'assurer que les deux parties sont alignées. Il n'est pas nécessaire de revenir à la version précédente (bien que cela fonctionnerait), car ce n'est pas le runtime de grub en soi qui est cassé. Il existe de nombreuses façons de parvenir à cela, en fonction de votre environnement, mais exécuter le disque live Boot-repair a fonctionné pour moi.

Il peut être utile, dans le but d'éviter un tel désalignement à l'avenir, de s'assurer que l'installateur de grub sur votre système est configuré pour s'installer sur les bons périphériques.

Cette mise à jour résout quelques bugs importants (Voir l'Avis de Sécurité Ubuntu 4432). Si vous avez rétabli grub pour résoudre ce problème, sachez que vous êtes exposé à ces problèmes.

-1voto

Rick N Points 1

Comme Juan Fra - J'ai 2 disques, mais pas de RAID. Je soupçonne que GRUB était sur les deux. Je suis sur Ubuntu donc j'ai démarré à partir du CD, installé "boot-repair" (des instructions disponibles en ligne) et il a mis à jour toutes les partitions de GRUB. Tout est maintenant bon.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X